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 23 2024 at 12:05 UTC