Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cranelift: Tracking issue for Interpreter support #4889

Open
afonso360 opened this issue Sep 9, 2022 · 0 comments
Open

cranelift: Tracking issue for Interpreter support #4889

afonso360 opened this issue Sep 9, 2022 · 0 comments
Labels
cranelift Issues related to the Cranelift code generator enhancement

Comments

@afonso360
Copy link
Contributor

afonso360 commented Sep 9, 2022

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:

✔ - Implemented and tested for all types
🟡 - Implemented for some types (i.e. only scalar but no SIMD) / Missing some tests
❌ - Unimplemented

Opcodes

  • Opcode::Jump - ✔
  • Opcode::Brz - 🟡
    • I128 tests disabled
  • Opcode::Brnz - 🟡
    • I128 tests disabled
  • Opcode::BrIcmp - 🟡
    • I128 tests disabled
  • Opcode::BrTable - ✔
  • Opcode::Trap - 🟡
    • Missing tests
  • Opcode::Debugtrap - 🟡
    • Missing tests
  • Opcode::ResumableTrap - 🟡
    • Missing tests
  • Opcode::Trapz - 🟡
    • Missing tests
  • Opcode::Trapnz - 🟡
    • Missing tests
  • Opcode::ResumableTrapnz - 🟡
    • Missing tests
  • Opcode::Return - ✔
  • Opcode::Call - ✔
  • Opcode::CallIndirect - ❌
  • Opcode::FuncAddr - ❌
  • Opcode::Load - ✔
  • 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 - ❌
  • Opcode::Sload8x8 - ❌
  • Opcode::Uload16x4 - ❌
  • Opcode::Sload16x4 - ❌
  • Opcode::Uload32x2 - ❌
  • Opcode::Sload32x2 - ❌
  • Opcode::Store - ✔
  • Opcode::Istore8 - 🟡
    • Missing tests
  • Opcode::Istore16 - 🟡
    • Missing tests
  • Opcode::Istore32 - 🟡
    • Missing tests
  • Opcode::StackLoad - ✔
  • Opcode::StackStore - ✔
  • Opcode::StackAddr - ✔
  • Opcode::DynamicStackAddr - ❌
  • Opcode::DynamicStackLoad - ❌
  • Opcode::DynamicStackStore - ❌
  • Opcode::GlobalValue - ✔
  • Opcode::SymbolValue - ❌
  • Opcode::TlsValue - ❌
  • Opcode::HeapAddr - ✔
  • Opcode::GetPinnedReg - ✔
  • Opcode::SetPinnedReg - ✔
  • Opcode::TableAddr - ✔
  • Opcode::Iconst - ✔
  • Opcode::F32const - ✔
  • Opcode::F64const - ✔
  • Opcode::Vconst - ✔
  • Opcode::Null - ❌
  • Opcode::Nop - 🟡
    • Missing tests
  • Opcode::Select - 🟡
    • Missing tests
  • Opcode::Bitselect - 🟡
    • Missing tests
  • Opcode::Copy - 🟡
    • Missing tests
  • Opcode::Icmp - ✔
  • Opcode::Smin - 🟡
    • Missing i128 tests
    • Missing some SIMD tests (i64x2)
  • Opcode::Umin - 🟡
    • Missing i128 tests
    • Missing some SIMD tests (i64x2)
  • Opcode::Smax - 🟡
    • 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
  • Opcode::Iadd - ✔
  • Opcode::UaddSat - ✔
  • Opcode::SaddSat - ✔
  • Opcode::Isub - ✔
  • Opcode::UsubSat - ✔
  • Opcode::SsubSat - ✔
  • Opcode::Ineg - 🟡
    • Only tested for i32x4
  • Opcode::Iabs - 🟡
    • Missing i128 tests
  • Opcode::Imul - ✔
  • Opcode::Umulhi - ✔
  • Opcode::Smulhi - ✔
  • Opcode::Udiv - ✔
  • Opcode::Sdiv - ✔
  • Opcode::Urem - ✔
  • Opcode::Srem - ✔
  • 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
  • Opcode::Rotl - ✔
    • SIMD tests missing
  • Opcode::Rotr - ✔
    • SIMD tests missing
  • Opcode::Ishl - ✔
    • SIMD tests disabled
  • Opcode::Ushr - ✔
    • 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 - ❌
  • Opcode::IsInvalid - ❌
  • Opcode::Bitcast - 🟡
    • Missing tests for all types
  • Opcode::ScalarToVector - 🟡
    • Tests disabled
  • Opcode::Ireduce - ✔
  • Opcode::Snarrow - ✔
  • Opcode::Unarrow - ✔
  • Opcode::Uunarrow - ✔
  • Opcode::Bmask - ✔
  • Opcode::Sextend - ✔
  • Opcode::Uextend - ✔
  • Opcode::Fpromote - 🟡
    • Tests disabled
  • Opcode::Fdemote - 🟡
    • Tests disabled
  • Opcode::Shuffle - ✔
  • Opcode::Swizzle - 🟡
    • Only tested for i8x16
  • Opcode::Splat - 🟡
    • Tests disabled
  • Opcode::Insertlane - 🟡
    • Missing tests
  • Opcode::Extractlane - 🟡
    • Missing tests
  • Opcode::VhighBits - ✔
  • Opcode::Vsplit - ❌
  • Opcode::Vconcat - ❌
  • Opcode::Vselect - ✔
  • Opcode::VanyTrue - ✔
  • Opcode::VallTrue - ✔
  • Opcode::SwidenLow - ✔
  • Opcode::SwidenHigh - ✔
  • Opcode::UwidenLow - ✔
  • Opcode::UwidenHigh - ✔
  • Opcode::FcvtToUint - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FcvtToUintSat - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FcvtToSint - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FcvtToSintSat - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FcvtFromUint - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FcvtFromSint - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FcvtLowFromSint - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::FvpromoteLow - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::Fvdemote - ✔ (Interpreter: Implement floating point conversions #4884)
  • Opcode::Isplit - ✔
  • Opcode::Iconcat - ✔
  • Opcode::AtomicRmw - ✔
  • Opcode::AtomicCas - ✔
  • Opcode::AtomicLoad - ✔
  • Opcode::AtomicStore - ✔
  • Opcode::Fence - ✔
  • Opcode::WideningPairwiseDotProductS - ✔
  • Opcode::SqmulRoundSat - 🟡
    • Missing tests for types other than i16x8
  • Opcode::IaddPairwise - ✔
  • Opcode::ExtractVector - ❌
  • Opcode::GetFramePointer - ❌
  • Opcode::GetStackPointer - ❌
  • Opcode::GetReturnAddress - ❌

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 types
@akirilov-arm akirilov-arm added enhancement cranelift Issues related to the Cranelift code generator labels Sep 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cranelift Issues related to the Cranelift code generator enhancement
Projects
None yet
Development

No branches or pull requests

2 participants