afonso360 opened issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [ ]
Opcode::FcvtToUint- :cross_mark:- [ ]
Opcode::FcvtToUintSat- :cross_mark:- [ ]
Opcode::FcvtToSint- :cross_mark:- [ ]
Opcode::FcvtToSintSat- :cross_mark:- [ ]
Opcode::FcvtFromUint- :cross_mark:- [ ]
Opcode::FcvtFromSint- :cross_mark:- [ ]
Opcode::FcvtLowFromSint- :cross_mark:- [ ]
Opcode::FvpromoteLow- :cross_mark:- [ ]
Opcode::Fvdemote- :cross_mark:- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::IfcmpImm- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapif- ๐ก
- [ ] Missing tests- [ ] `Opcode::Tr
[message truncated]
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [ ]
Opcode::FcvtToUint- :cross_mark:- [ ]
Opcode::FcvtToUintSat- :cross_mark:- [ ]
Opcode::FcvtToSint- :cross_mark:- [ ]
Opcode::FcvtToSintSat- :cross_mark:- [ ]
Opcode::FcvtFromUint- :cross_mark:- [ ]
Opcode::FcvtFromSint- :cross_mark:- [ ]
Opcode::FcvtLowFromSint- :cross_mark:- [ ]
Opcode::FvpromoteLow- :cross_mark:- [ ]
Opcode::Fvdemote- :cross_mark:- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::IfcmpImm- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapif- ๐ก
- [ ] M
[message truncated]
akirilov-arm labeled issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [ ]
Opcode::FcvtToUint- :cross_mark:- [ ]
Opcode::FcvtToUintSat- :cross_mark:- [ ]
Opcode::FcvtToSint- :cross_mark:- [ ]
Opcode::FcvtToSintSat- :cross_mark:- [ ]
Opcode::FcvtFromUint- :cross_mark:- [ ]
Opcode::FcvtFromSint- :cross_mark:- [ ]
Opcode::FcvtLowFromSint- :cross_mark:- [ ]
Opcode::FvpromoteLow- :cross_mark:- [ ]
Opcode::Fvdemote- :cross_mark:- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::IfcmpImm- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapif- ๐ก
- [
[message truncated]
akirilov-arm labeled issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [ ]
Opcode::FcvtToUint- :cross_mark:- [ ]
Opcode::FcvtToUintSat- :cross_mark:- [ ]
Opcode::FcvtToSint- :cross_mark:- [ ]
Opcode::FcvtToSintSat- :cross_mark:- [ ]
Opcode::FcvtFromUint- :cross_mark:- [ ]
Opcode::FcvtFromSint- :cross_mark:- [ ]
Opcode::FcvtLowFromSint- :cross_mark:- [ ]
Opcode::FvpromoteLow- :cross_mark:- [ ]
Opcode::Fvdemote- :cross_mark:- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::IfcmpImm- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapif- ๐ก
- [
[message truncated]
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [ ]
Opcode::FvpromoteLow- :check_mark: (#4884)- [ ]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ] `Opcode::IfcmpIm
[message truncated]
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [x]
Opcode::FvpromoteLow- :check_mark: (#4884)- [ ]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ] `Opcode::IfcmpIm
[message truncated]
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
๐ก - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
โ - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- ๐ก
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Debugtrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapz- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trapnz- ๐ก
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- ๐ก
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Sload32- ๐ก
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore16- ๐ก
- [ ] Missing tests- [ ]
Opcode::Istore32- ๐ก
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- ๐ก
- [ ] Missing tests- [ ]
Opcode::Select- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bitselect- ๐ก
- [ ] Missing tests- [ ]
Opcode::Copy- ๐ก
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- ๐ก
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- ๐ก
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- ๐ก
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- ๐ก
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- ๐ก
- [ ] Missing I128 tests- [ ]
Opcode::Band- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bxor- ๐ก
- [ ] Missing tests- [ ]
Opcode::Bnot- ๐ก
- [ ] Tests are disabled- [ ]
Opcode::BandNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BorNot- ๐ก
- [ ] Missing tests- [ ]
Opcode::BxorNot- ๐ก
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Clz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Cls- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- ๐ก
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- ๐ก
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- ๐ก
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- ๐ก
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- ๐ก
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- ๐ก
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- ๐ก
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Fdemote- ๐ก
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- ๐ก
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- ๐ก
- [ ] Tests disabled- [ ]
Opcode::Insertlane- ๐ก
- [ ] Missing tests- [ ]
Opcode::Extractlane- ๐ก
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [x]
Opcode::FvpromoteLow- :check_mark: (#4884)- [x]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- ๐ก
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- ๐ก
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- ๐ก
- [ ] Missing tests for some typesFlag Ops
These may be going away, see: #3249
- [ ]
Opcode::Brif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Brff- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueif- ๐ก
- [ ] Missing tests- [ ]
Opcode::Trueff- ๐ก
- [ ] Missing tests- [ ]
Opcode::IsubIfbout- :cross_mark:- [ ]
Opcode::IaddIfcin- :cross_mark:- [ ]
Opcode::IaddIfcout- :cross_mark:- [ ]
Opcode::IaddIfcarry- :cross_mark:- [ ]
Opcode::IsubIfbin- :cross_mark:- [ ]
Opcode::IsubIfborrow- :cross_mark:- [ ]
Opcode::Ffcmp- ๐ก
- [ ] Missing tests- [ ]
Opcode::Ifcmp- ๐ก
- [ ] Missing tests- [ ] `Opcode::IfcmpIm
[message truncated]
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
:yellow_circle: - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
:cross_mark: - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- :yellow_circle:
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Debugtrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapnz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore32- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Bconst- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Select- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bitselect- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Copy- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Imin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Imax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- :yellow_circle:
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- :yellow_circle:
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- :yellow_circle:
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::Band- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bxor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bnot- :yellow_circle:
- [ ] Tests are disabled- [ ]
Opcode::BandNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BorNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BxorNot- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Clz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Cls- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- :yellow_circle:
- [ ] Missing tests for all types- [ ]
Opcode::RawBitcast- :yellow_circle:
- [ ] Missing tests for scalar types- [ ]
Opcode::ScalarToVector- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Breduce- :check_mark:- [x]
Opcode::Bextend- :check_mark:- [x]
Opcode::Ireduce- :check_mark:- [ ]
Opcode::Bint- :yellow_circle:
- [ ] Missing SIMD tests- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Fdemote- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- :yellow_circle:
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Insertlane- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Extractlane- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [x]
Opcode::FvpromoteLow- :check_mark: (#4884)- [x]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- :yellow_circle:
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- :yellow_circle:
- [ ] Missing tests for some types
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
:yellow_circle: - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
:cross_mark: - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- :yellow_circle:
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Debugtrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapnz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore32- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Select- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bitselect- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Copy- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Smin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Smax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- :yellow_circle:
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- :yellow_circle:
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- :yellow_circle:
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::Band- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bxor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bnot- :yellow_circle:
- [ ] Tests are disabled- [ ]
Opcode::BandNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BorNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BxorNot- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Clz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Cls- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- :yellow_circle:
- [ ] Missing tests for all types- [ ]
Opcode::ScalarToVector- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Ireduce- :check_mark:- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Fdemote- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- :yellow_circle:
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Insertlane- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Extractlane- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [x]
Opcode::FvpromoteLow- :check_mark: (#4884)- [x]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [ ]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- :yellow_circle:
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- :yellow_circle:
- [ ] Missing tests for some types
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
:yellow_circle: - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
:cross_mark: - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- :yellow_circle:
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Debugtrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapnz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore32- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Select- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bitselect- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Copy- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Smin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Smax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- :yellow_circle:
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- :yellow_circle:
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- :yellow_circle:
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::Band- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bxor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bnot- :yellow_circle:
- [ ] Tests are disabled- [ ]
Opcode::BandNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BorNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BxorNot- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Clz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Cls- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- :yellow_circle:
- [ ] Missing tests for all types- [ ]
Opcode::ScalarToVector- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Ireduce- :check_mark:- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Fdemote- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- :yellow_circle:
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Insertlane- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Extractlane- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [x]
Opcode::FvpromoteLow- :check_mark: (#4884)- [x]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [ ]
Opcode::AtomicRmw- :cross_mark:- [ ]
Opcode::AtomicCas- :cross_mark:- [ ]
Opcode::AtomicLoad- :cross_mark:- [x]
Opcode::AtomicStore- :cross_mark:- [ ]
Opcode::Fence- :cross_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- :yellow_circle:
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- :yellow_circle:
- [ ] Missing tests for some types
afonso360 edited issue #4889:
Hey,
I did a roundup of what is supported in the interpreter and what is tested or not. Now that we have multiple people working on the interpreter this is probably a better way to keep track of what is going on an who is working on what.
Labels:
:check_mark: - Implemented and tested for all types
:yellow_circle: - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
:cross_mark: - UnimplementedOpcodes
- [x]
Opcode::Jump- :check_mark:- [ ]
Opcode::Brz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Brnz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::BrIcmp- :yellow_circle:
- [ ] I128 tests disabled- [x]
Opcode::BrTable- :check_mark:- [ ]
Opcode::Trap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Debugtrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrap- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Trapnz- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::ResumableTrapnz- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Return- :check_mark:- [x]
Opcode::Call- :check_mark:- [ ]
Opcode::CallIndirect- :cross_mark:- [ ]
Opcode::FuncAddr- :cross_mark:- [x]
Opcode::Load- :check_mark:- [ ]
Opcode::Uload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Sload32- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Uload8x8- :cross_mark:- [ ]
Opcode::Sload8x8- :cross_mark:- [ ]
Opcode::Uload16x4- :cross_mark:- [ ]
Opcode::Sload16x4- :cross_mark:- [ ]
Opcode::Uload32x2- :cross_mark:- [ ]
Opcode::Sload32x2- :cross_mark:- [x]
Opcode::Store- :check_mark:- [ ]
Opcode::Istore8- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore16- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Istore32- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::StackLoad- :check_mark:- [x]
Opcode::StackStore- :check_mark:- [x]
Opcode::StackAddr- :check_mark:- [ ]
Opcode::DynamicStackAddr- :cross_mark:- [ ]
Opcode::DynamicStackLoad- :cross_mark:- [ ]
Opcode::DynamicStackStore- :cross_mark:- [x]
Opcode::GlobalValue- :check_mark:- [ ]
Opcode::SymbolValue- :cross_mark:- [ ]
Opcode::TlsValue- :cross_mark:- [x]
Opcode::HeapAddr- :check_mark:- [x]
Opcode::GetPinnedReg- :check_mark:- [x]
Opcode::SetPinnedReg- :check_mark:- [x]
Opcode::TableAddr- :check_mark:- [x]
Opcode::Iconst- :check_mark:- [x]
Opcode::F32const- :check_mark:- [x]
Opcode::F64const- :check_mark:- [x]
Opcode::Vconst- :check_mark:- [ ]
Opcode::Null- :cross_mark:- [ ]
Opcode::Nop- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Select- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bitselect- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Copy- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Icmp- :check_mark:- [ ]
Opcode::Smin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umin- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Smax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::Umax- :yellow_circle:
- [ ] Missing i128 tests
- [ ] Missing some SIMD tests (i64x2)- [ ]
Opcode::AvgRound- :yellow_circle:
- [ ] Implemented for scalar, but not tested
- [ ] SIMD tests disabled- [x]
Opcode::Iadd- :check_mark:- [x]
Opcode::UaddSat- :check_mark:- [x]
Opcode::SaddSat- :check_mark:- [x]
Opcode::Isub- :check_mark:- [x]
Opcode::UsubSat- :check_mark:- [x]
Opcode::SsubSat- :check_mark:- [ ]
Opcode::Ineg- :yellow_circle:
- [ ] Only tested for i32x4- [ ]
Opcode::Iabs- :yellow_circle:
- [ ] Missing i128 tests- [x]
Opcode::Imul- :check_mark:- [x]
Opcode::Umulhi- :check_mark:- [x]
Opcode::Smulhi- :check_mark:- [x]
Opcode::Udiv- :check_mark:- [x]
Opcode::Sdiv- :check_mark:- [x]
Opcode::Urem- :check_mark:- [x]
Opcode::Srem- :check_mark:- [ ]
Opcode::IaddCin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IaddCarry- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBin- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBout- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::IsubBorrow- :yellow_circle:
- [ ] Missing I128 tests- [ ]
Opcode::Band- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bxor- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Bnot- :yellow_circle:
- [ ] Tests are disabled- [ ]
Opcode::BandNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BorNot- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::BxorNot- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::Rotl- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Rotr- :check_mark:
- [ ] SIMD tests missing- [x]
Opcode::Ishl- :check_mark:
- [ ] SIMD tests disabled- [x]
Opcode::Ushr- :check_mark:
- [ ] SIMD tests disabled- [ ]
Opcode::Sshr- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Bitrev- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Clz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Cls- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Ctz- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Popcnt- :yellow_circle:
- [ ] I128 tests disabled- [ ]
Opcode::Fcmp- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Fadd- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fsub- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmul- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fdiv- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Sqrt- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fma- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fneg- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fabs- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fcopysign- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmin- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FminPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Fmax- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::FmaxPseudo- :yellow_circle:
- [ ] SIMD tests disabled- [ ]
Opcode::Ceil- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Floor- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Trunc- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::Nearest- :yellow_circle:
- [ ] Missing SIMD tests- [ ]
Opcode::IsNull- :cross_mark:- [ ]
Opcode::IsInvalid- :cross_mark:- [ ]
Opcode::Bitcast- :yellow_circle:
- [ ] Missing tests for all types- [ ]
Opcode::ScalarToVector- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Ireduce- :check_mark:- [x]
Opcode::Snarrow- :check_mark:- [x]
Opcode::Unarrow- :check_mark:- [x]
Opcode::Uunarrow- :check_mark:- [x]
Opcode::Bmask- :check_mark:- [x]
Opcode::Sextend- :check_mark:- [x]
Opcode::Uextend- :check_mark:- [ ]
Opcode::Fpromote- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Fdemote- :yellow_circle:
- [ ] Tests disabled- [x]
Opcode::Shuffle- :check_mark:- [ ]
Opcode::Swizzle- :yellow_circle:
- [ ] Only tested for i8x16- [ ]
Opcode::Splat- :yellow_circle:
- [ ] Tests disabled- [ ]
Opcode::Insertlane- :yellow_circle:
- [ ] Missing tests- [ ]
Opcode::Extractlane- :yellow_circle:
- [ ] Missing tests- [x]
Opcode::VhighBits- :check_mark:- [ ]
Opcode::Vsplit- :cross_mark:- [ ]
Opcode::Vconcat- :cross_mark:- [x]
Opcode::Vselect- :check_mark:- [x]
Opcode::VanyTrue- :check_mark:- [x]
Opcode::VallTrue- :check_mark:- [x]
Opcode::SwidenLow- :check_mark:- [x]
Opcode::SwidenHigh- :check_mark:- [x]
Opcode::UwidenLow- :check_mark:- [x]
Opcode::UwidenHigh- :check_mark:- [x]
Opcode::FcvtToUint- :check_mark: (#4884)- [x]
Opcode::FcvtToUintSat- :check_mark: (#4884)- [x]
Opcode::FcvtToSint- :check_mark: (#4884)- [x]
Opcode::FcvtToSintSat- :check_mark: (#4884)- [x]
Opcode::FcvtFromUint- :check_mark: (#4884)- [x]
Opcode::FcvtFromSint- :check_mark: (#4884)- [x]
Opcode::FcvtLowFromSint- :check_mark: (#4884)- [x]
Opcode::FvpromoteLow- :check_mark: (#4884)- [x]
Opcode::Fvdemote- :check_mark: (#4884)- [x]
Opcode::Isplit- :check_mark:- [x]
Opcode::Iconcat- :check_mark:- [x]
Opcode::AtomicRmw- :check_mark:- [x]
Opcode::AtomicCas- :check_mark:- [x]
Opcode::AtomicLoad- :check_mark:- [x]
Opcode::AtomicStore- :check_mark:- [x]
Opcode::Fence- :check_mark:- [x]
Opcode::WideningPairwiseDotProductS- :check_mark:- [ ]
Opcode::SqmulRoundSat- :yellow_circle:
- [ ] Missing tests for types other than i16x8- [x]
Opcode::IaddPairwise- :check_mark:- [ ]
Opcode::ExtractVector- :cross_mark:- [ ]
Opcode::GetFramePointer- :cross_mark:- [ ]
Opcode::GetStackPointer- :cross_mark:- [ ]
Opcode::GetReturnAddress- :cross_mark:Op+Imm
These may be going away, see: #4721
- [ ]
Opcode::IaddImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::ImulImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SdivImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SremImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IrsubImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BandImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::BxorImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::RotrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IshlImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::UshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::SshrImm- :yellow_circle:
- [ ] Missing tests for some types- [ ]
Opcode::IcmpImm- :yellow_circle:
- [ ] Missing tests for some types
Last updated: Dec 13 2025 at 19:03 UTC