Compact valid_for_target using or patterns (#6019)

This commit is contained in:
Trevor Elliott
2023-03-14 13:45:36 -07:00
committed by GitHub
parent 80bfb35072
commit 48ecb6f119

View File

@@ -414,70 +414,36 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
match triple.architecture { match triple.architecture {
Architecture::X86_64 => { Architecture::X86_64 => {
exceptions!( exceptions!(
(Opcode::IaddCout, &[I8, I8]), (Opcode::IaddCout, &([I8, I8] | [I16, I16] | [I128, I128])),
(Opcode::IaddCout, &[I16, I16]),
(Opcode::IaddCout, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5468 // https://github.com/bytecodealliance/wasmtime/issues/5468
(Opcode::Smulhi, &[I8, I8]), (Opcode::Smulhi | Opcode::Umulhi, &[I8, I8]),
// https://github.com/bytecodealliance/wasmtime/issues/5468
(Opcode::Umulhi, &[I8, I8]),
// https://github.com/bytecodealliance/wasmtime/issues/4756 // https://github.com/bytecodealliance/wasmtime/issues/4756
(Opcode::Udiv, &[I128, I128]), (Opcode::Udiv | Opcode::Sdiv, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4770
(Opcode::Sdiv, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5474 // https://github.com/bytecodealliance/wasmtime/issues/5474
(Opcode::Urem, &[I128, I128]), (Opcode::Urem | Opcode::Srem, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5474
(Opcode::Srem, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5466 // https://github.com/bytecodealliance/wasmtime/issues/5466
(Opcode::Iabs, &[I128]), (Opcode::Iabs, &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/3370 // https://github.com/bytecodealliance/wasmtime/issues/3370
(Opcode::Smin, &[I128, I128]), (
// https://github.com/bytecodealliance/wasmtime/issues/3370 Opcode::Smin | Opcode::Umin | Opcode::Smax | Opcode::Umax,
(Opcode::Umin, &[I128, I128]), &[I128, I128]
// https://github.com/bytecodealliance/wasmtime/issues/3370 ),
(Opcode::Smax, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/3370
(Opcode::Umax, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4870 // https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::Band, &[F32, F32]), (
(Opcode::Band, &[F64, F64]), Opcode::Band
// https://github.com/bytecodealliance/wasmtime/issues/4870 | Opcode::Bor
(Opcode::Bor, &[F32, F32]), | Opcode::Bxor
(Opcode::Bor, &[F64, F64]), | Opcode::Bnot
// https://github.com/bytecodealliance/wasmtime/issues/4870 | Opcode::BandNot
(Opcode::Bxor, &[F32, F32]), | Opcode::BorNot
(Opcode::Bxor, &[F64, F64]), | Opcode::BxorNot,
// https://github.com/bytecodealliance/wasmtime/issues/4870 &([F32, F32] | [F64, F64])
(Opcode::Bnot, &[F32, F32]), ),
(Opcode::Bnot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5041 // https://github.com/bytecodealliance/wasmtime/issues/5041
(Opcode::BandNot, &[I8, I8]), (
(Opcode::BandNot, &[I16, I16]), Opcode::BandNot | Opcode::BorNot | Opcode::BxorNot,
(Opcode::BandNot, &[I32, I32]), &([I8, I8] | [I16, I16] | [I32, I32] | [I64, I64] | [I128, I128])
(Opcode::BandNot, &[I64, I64]), ),
(Opcode::BandNot, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::BandNot, &[F32, F32]),
(Opcode::BandNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5041
(Opcode::BorNot, &[I8, I8]),
(Opcode::BorNot, &[I16, I16]),
(Opcode::BorNot, &[I32, I32]),
(Opcode::BorNot, &[I64, I64]),
(Opcode::BorNot, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::BorNot, &[F32, F32]),
(Opcode::BorNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5041
(Opcode::BxorNot, &[I8, I8]),
(Opcode::BxorNot, &[I16, I16]),
(Opcode::BxorNot, &[I32, I32]),
(Opcode::BxorNot, &[I64, I64]),
(Opcode::BxorNot, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::BxorNot, &[F32, F32]),
(Opcode::BxorNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5107 // https://github.com/bytecodealliance/wasmtime/issues/5107
(Opcode::Cls, &[I8], &[I8]), (Opcode::Cls, &[I8], &[I8]),
(Opcode::Cls, &[I16], &[I16]), (Opcode::Cls, &[I16], &[I16]),
@@ -485,93 +451,59 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
(Opcode::Cls, &[I64], &[I64]), (Opcode::Cls, &[I64], &[I64]),
(Opcode::Cls, &[I128], &[I128]), (Opcode::Cls, &[I128], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5197 // https://github.com/bytecodealliance/wasmtime/issues/5197
(Opcode::Bitselect, &[I8, I8, I8]), (
(Opcode::Bitselect, &[I16, I16, I16]), Opcode::Bitselect,
(Opcode::Bitselect, &[I32, I32, I32]), &([I8, I8, I8]
(Opcode::Bitselect, &[I64, I64, I64]), | [I16, I16, I16]
(Opcode::Bitselect, &[I128, I128, I128]), | [I32, I32, I32]
| [I64, I64, I64]
| [I128, I128, I128])
),
// https://github.com/bytecodealliance/wasmtime/issues/4897 // https://github.com/bytecodealliance/wasmtime/issues/4897
// https://github.com/bytecodealliance/wasmtime/issues/4899 // https://github.com/bytecodealliance/wasmtime/issues/4899
(Opcode::FcvtToUint, &[F32], &[I8]), (
(Opcode::FcvtToUint, &[F32], &[I16]), Opcode::FcvtToUint
(Opcode::FcvtToUint, &[F32], &[I128]), | Opcode::FcvtToUintSat
(Opcode::FcvtToUint, &[F64], &[I8]), | Opcode::FcvtToSint
(Opcode::FcvtToUint, &[F64], &[I16]), | Opcode::FcvtToSintSat,
(Opcode::FcvtToUint, &[F64], &[I128]), &[F32 | F64],
(Opcode::FcvtToUint, &[F32X4], &[I32X4]), &[I8 | I16 | I128]
(Opcode::FcvtToUint, &[F64X2], &[I64X2]), ),
// https://github.com/bytecodealliance/wasmtime/issues/4897 (Opcode::FcvtToUint | Opcode::FcvtToSint, &[F32X4], &[I32X4]),
// https://github.com/bytecodealliance/wasmtime/issues/4899 (
(Opcode::FcvtToUintSat, &[F32], &[I8]), Opcode::FcvtToUint
(Opcode::FcvtToUintSat, &[F32], &[I16]), | Opcode::FcvtToUintSat
(Opcode::FcvtToUintSat, &[F32], &[I128]), | Opcode::FcvtToSint
(Opcode::FcvtToUintSat, &[F64], &[I8]), | Opcode::FcvtToSintSat,
(Opcode::FcvtToUintSat, &[F64], &[I16]), &[F64X2],
(Opcode::FcvtToUintSat, &[F64], &[I128]), &[I64X2]
(Opcode::FcvtToUintSat, &[F64X2], &[I64X2]), ),
// https://github.com/bytecodealliance/wasmtime/issues/4897
// https://github.com/bytecodealliance/wasmtime/issues/4899
(Opcode::FcvtToSint, &[F32], &[I8]),
(Opcode::FcvtToSint, &[F32], &[I16]),
(Opcode::FcvtToSint, &[F32], &[I128]),
(Opcode::FcvtToSint, &[F64], &[I8]),
(Opcode::FcvtToSint, &[F64], &[I16]),
(Opcode::FcvtToSint, &[F64], &[I128]),
(Opcode::FcvtToSint, &[F32X4], &[I32X4]),
(Opcode::FcvtToSint, &[F64X2], &[I64X2]),
// https://github.com/bytecodealliance/wasmtime/issues/4897
// https://github.com/bytecodealliance/wasmtime/issues/4899
(Opcode::FcvtToSintSat, &[F32], &[I8]),
(Opcode::FcvtToSintSat, &[F32], &[I16]),
(Opcode::FcvtToSintSat, &[F32], &[I128]),
(Opcode::FcvtToSintSat, &[F64], &[I8]),
(Opcode::FcvtToSintSat, &[F64], &[I16]),
(Opcode::FcvtToSintSat, &[F64], &[I128]),
(Opcode::FcvtToSintSat, &[F64X2], &[I64X2]),
// https://github.com/bytecodealliance/wasmtime/issues/4900 // https://github.com/bytecodealliance/wasmtime/issues/4900
(Opcode::FcvtFromUint, &[I128], &[F32]), (Opcode::FcvtFromUint, &[I128], &[F32 | F64]),
(Opcode::FcvtFromUint, &[I128], &[F64]),
// This has a lowering, but only when preceded by `uwiden_low`. // This has a lowering, but only when preceded by `uwiden_low`.
(Opcode::FcvtFromUint, &[I64X2], &[F64X2]), (Opcode::FcvtFromUint, &[I64X2], &[F64X2]),
// https://github.com/bytecodealliance/wasmtime/issues/4900 // https://github.com/bytecodealliance/wasmtime/issues/4900
(Opcode::FcvtFromSint, &[I128], &[F32]), (Opcode::FcvtFromSint, &[I128], &[F32 | F64]),
(Opcode::FcvtFromSint, &[I128], &[F64]),
(Opcode::FcvtFromSint, &[I64X2], &[F64X2]), (Opcode::FcvtFromSint, &[I64X2], &[F64X2]),
(Opcode::Bmask, &[I8X16]), (Opcode::Bmask, &[I8X16 | I16X8 | I32X4 | I64X2]),
(Opcode::Bmask, &[I16X8]), (
(Opcode::Bmask, &[I32X4]), Opcode::Umulhi | Opcode::Smulhi,
(Opcode::Bmask, &[I64X2]), &([I8X16, I8X16] | [I16X8, I16X8] | [I32X4, I32X4] | [I64X2, I64X2])
(Opcode::Umulhi, &[I8X16, I8X16]), ),
(Opcode::Umulhi, &[I16X8, I16X8]), (
(Opcode::Umulhi, &[I32X4, I32X4]), Opcode::UaddSat | Opcode::SaddSat | Opcode::UsubSat | Opcode::SsubSat,
(Opcode::Umulhi, &[I64X2, I64X2]), &([I32X4, I32X4] | [I64X2, I64X2])
(Opcode::Smulhi, &[I8X16, I8X16]), ),
(Opcode::Smulhi, &[I16X8, I16X8]), (Opcode::Fcopysign, &([F32X4, F32X4] | [F64X2, F64X2])),
(Opcode::Smulhi, &[I32X4, I32X4]), (Opcode::Popcnt, &([I8X16] | [I16X8] | [I32X4] | [I64X2])),
(Opcode::Smulhi, &[I64X2, I64X2]), (
(Opcode::UaddSat, &[I32X4, I32X4]), Opcode::Umax | Opcode::Smax | Opcode::Umin | Opcode::Smin,
(Opcode::UaddSat, &[I64X2, I64X2]), &[I64X2, I64X2]
(Opcode::SaddSat, &[I32X4, I32X4]), ),
(Opcode::SaddSat, &[I64X2, I64X2]),
(Opcode::UsubSat, &[I32X4, I32X4]),
(Opcode::UsubSat, &[I64X2, I64X2]),
(Opcode::SsubSat, &[I32X4, I32X4]),
(Opcode::SsubSat, &[I64X2, I64X2]),
(Opcode::Fcopysign, &[F32X4, F32X4]),
(Opcode::Fcopysign, &[F64X2, F64X2]),
(Opcode::Popcnt, &[I8X16]),
(Opcode::Popcnt, &[I16X8]),
(Opcode::Popcnt, &[I32X4]),
(Opcode::Popcnt, &[I64X2]),
(Opcode::Umax, &[I64X2, I64X2]),
(Opcode::Smax, &[I64X2, I64X2]),
(Opcode::Umin, &[I64X2, I64X2]),
(Opcode::Smin, &[I64X2, I64X2]),
(Opcode::Bitcast, &[I128], &[_]), (Opcode::Bitcast, &[I128], &[_]),
(Opcode::Bitcast, &[_], &[I128]), (Opcode::Bitcast, &[_], &[I128]),
(Opcode::Uunarrow), (Opcode::Uunarrow),
(Opcode::Snarrow, &[I64X2, I64X2]), (Opcode::Snarrow | Opcode::Unarrow, &[I64X2, I64X2]),
(Opcode::Unarrow, &[I64X2, I64X2]),
(Opcode::SqmulRoundSat, &[I32X4, I32X4]), (Opcode::SqmulRoundSat, &[I32X4, I32X4]),
// This Icmp is not implemented: #5529 // This Icmp is not implemented: #5529
(Opcode::Icmp, &[I64X2, I64X2]), (Opcode::Icmp, &[I64X2, I64X2]),
@@ -582,18 +514,15 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
(Opcode::Select, &[_, I128, I128]), (Opcode::Select, &[_, I128, I128]),
// These stack accesses can cause segfaults if they are merged into an SSE instruction. // These stack accesses can cause segfaults if they are merged into an SSE instruction.
// See: #5922 // See: #5922
(Opcode::StackStore, &[I8X16], &[]), (
(Opcode::StackStore, &[I16X8], &[]), Opcode::StackStore,
(Opcode::StackStore, &[I32X4], &[]), &[I8X16 | I16X8 | I32X4 | I64X2 | F32X4 | F64X2]
(Opcode::StackStore, &[I64X2], &[]), ),
(Opcode::StackStore, &[F32X4], &[]), (
(Opcode::StackStore, &[F64X2], &[]), Opcode::StackLoad,
(Opcode::StackLoad, &[], &[I8X16]), &[],
(Opcode::StackLoad, &[], &[I16X8]), &[I8X16 | I16X8 | I32X4 | I64X2 | F32X4 | F64X2]
(Opcode::StackLoad, &[], &[I32X4]), ),
(Opcode::StackLoad, &[], &[I64X2]),
(Opcode::StackLoad, &[], &[F32X4]),
(Opcode::StackLoad, &[], &[F64X2]),
) )
} }
@@ -601,79 +530,49 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
exceptions!( exceptions!(
(Opcode::IaddCout, &[I128, I128]), (Opcode::IaddCout, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4864 // https://github.com/bytecodealliance/wasmtime/issues/4864
(Opcode::Udiv, &[I128, I128]), (Opcode::Udiv | Opcode::Sdiv, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4864
(Opcode::Sdiv, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5472 // https://github.com/bytecodealliance/wasmtime/issues/5472
(Opcode::Urem, &[I128, I128]), (Opcode::Urem | Opcode::Srem, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5472
(Opcode::Srem, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5467 // https://github.com/bytecodealliance/wasmtime/issues/5467
(Opcode::Iabs, &[I128]), (Opcode::Iabs, &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4313 // https://github.com/bytecodealliance/wasmtime/issues/4313
(Opcode::Smin, &[I128, I128]), (
// https://github.com/bytecodealliance/wasmtime/issues/4313 Opcode::Smin | Opcode::Umin | Opcode::Smax | Opcode::Umax,
(Opcode::Umin, &[I128, I128]), &[I128, I128]
// https://github.com/bytecodealliance/wasmtime/issues/4313 ),
(Opcode::Smax, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4313
(Opcode::Umax, &[I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4870 // https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::Band, &[F32, F32]), (
(Opcode::Band, &[F64, F64]), Opcode::Band
// https://github.com/bytecodealliance/wasmtime/issues/4870 | Opcode::Bor
(Opcode::Bor, &[F32, F32]), | Opcode::Bxor
(Opcode::Bor, &[F64, F64]), | Opcode::Bnot
// https://github.com/bytecodealliance/wasmtime/issues/4870 | Opcode::BandNot
(Opcode::Bxor, &[F32, F32]), | Opcode::BorNot
(Opcode::Bxor, &[F64, F64]), | Opcode::BxorNot,
// https://github.com/bytecodealliance/wasmtime/issues/4870 &([F32, F32] | [F64, F64])
(Opcode::Bnot, &[F32, F32]), ),
(Opcode::Bnot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::BandNot, &[F32, F32]),
(Opcode::BandNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::BorNot, &[F32, F32]),
(Opcode::BorNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/4870
(Opcode::BxorNot, &[F32, F32]),
(Opcode::BxorNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5198 // https://github.com/bytecodealliance/wasmtime/issues/5198
(Opcode::Bitselect, &[I128, I128, I128]), (Opcode::Bitselect, &[I128, I128, I128]),
// https://github.com/bytecodealliance/wasmtime/issues/4934 // https://github.com/bytecodealliance/wasmtime/issues/4934
(Opcode::FcvtToUint, &[F32]), (
(Opcode::FcvtToUint, &[F64]), Opcode::FcvtToUint
// https://github.com/bytecodealliance/wasmtime/issues/4934 | Opcode::FcvtToUintSat
(Opcode::FcvtToUintSat, &[F32]), | Opcode::FcvtToSint
(Opcode::FcvtToUintSat, &[F64]), | Opcode::FcvtToSintSat,
// https://github.com/bytecodealliance/wasmtime/issues/4934 &[F32 | F64]
(Opcode::FcvtToSint, &[F32]), ),
(Opcode::FcvtToSint, &[F64]),
// https://github.com/bytecodealliance/wasmtime/issues/4934
(Opcode::FcvtToSintSat, &[F32]),
(Opcode::FcvtToSintSat, &[F64]),
// https://github.com/bytecodealliance/wasmtime/issues/4933 // https://github.com/bytecodealliance/wasmtime/issues/4933
(Opcode::FcvtFromUint, &[I128], &[F32]), (
(Opcode::FcvtFromUint, &[I128], &[F64]), Opcode::FcvtFromUint | Opcode::FcvtFromSint,
// https://github.com/bytecodealliance/wasmtime/issues/4933 &[I128],
(Opcode::FcvtFromSint, &[I128], &[F32]), &[F32 | F64]
(Opcode::FcvtFromSint, &[I128], &[F64]), ),
(Opcode::Bmask, &[I8X16]), (Opcode::Bmask, &[I8X16 | I16X8 | I32X4 | I64X2]),
(Opcode::Bmask, &[I16X8]), (
(Opcode::Bmask, &[I32X4]), Opcode::Umulhi | Opcode::Smulhi,
(Opcode::Bmask, &[I64X2]), &([I8X16, I8X16] | [I16X8, I16X8] | [I32X4, I32X4] | [I64X2, I64X2])
(Opcode::Umulhi, &[I8X16, I8X16]), ),
(Opcode::Umulhi, &[I16X8, I16X8]), (Opcode::Popcnt, &[I16X8 | I32X4 | I64X2]),
(Opcode::Umulhi, &[I32X4, I32X4]),
(Opcode::Umulhi, &[I64X2, I64X2]),
(Opcode::Smulhi, &[I8X16, I8X16]),
(Opcode::Smulhi, &[I16X8, I16X8]),
(Opcode::Smulhi, &[I32X4, I32X4]),
(Opcode::Smulhi, &[I64X2, I64X2]),
(Opcode::Popcnt, &[I16X8]),
(Opcode::Popcnt, &[I32X4]),
(Opcode::Popcnt, &[I64X2]),
// Nothing wrong with this select. But we have an isle rule that can optimize it // Nothing wrong with this select. But we have an isle rule that can optimize it
// into a `min`/`max` instructions, which we don't have implemented yet. // into a `min`/`max` instructions, which we don't have implemented yet.
(Opcode::Select, &[I8, I128, I128]), (Opcode::Select, &[I8, I128, I128]),
@@ -683,42 +582,35 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
Architecture::S390x => { Architecture::S390x => {
exceptions!( exceptions!(
(Opcode::IaddCout), (Opcode::IaddCout),
(Opcode::Udiv, &[I128, I128]), (
(Opcode::Sdiv, &[I128, I128]), Opcode::Udiv | Opcode::Sdiv | Opcode::Urem | Opcode::Srem,
(Opcode::Urem, &[I128, I128]), &[I128, I128]
(Opcode::Srem, &[I128, I128]), ),
(Opcode::Band, &[F32, F32]), (
(Opcode::Band, &[F64, F64]), Opcode::Band
(Opcode::Bor, &[F32, F32]), | Opcode::Bor
(Opcode::Bor, &[F64, F64]), | Opcode::Bxor
(Opcode::Bxor, &[F32, F32]), | Opcode::Bnot
(Opcode::Bxor, &[F64, F64]), | Opcode::BandNot
(Opcode::Bnot, &[F32, F32]), | Opcode::BorNot
(Opcode::Bnot, &[F64, F64]), | Opcode::BxorNot,
(Opcode::BandNot, &[F32, F32]), &([F32, F32] | [F64, F64])
(Opcode::BandNot, &[F64, F64]), ),
(Opcode::BorNot, &[F32, F32]), (
(Opcode::BorNot, &[F64, F64]), Opcode::FcvtToUint
(Opcode::BxorNot, &[F32, F32]), | Opcode::FcvtToUintSat
(Opcode::BxorNot, &[F64, F64]), | Opcode::FcvtToSint
(Opcode::FcvtToUint, &[F32], &[I128]), | Opcode::FcvtToSintSat,
(Opcode::FcvtToUint, &[F64], &[I128]), &[F32 | F64],
(Opcode::FcvtToUintSat, &[F32], &[I128]), &[I128]
(Opcode::FcvtToUintSat, &[F64], &[I128]), ),
(Opcode::FcvtToSint, &[F32], &[I128]), (
(Opcode::FcvtToSint, &[F64], &[I128]), Opcode::FcvtFromUint | Opcode::FcvtFromSint,
(Opcode::FcvtToSintSat, &[F32], &[I128]), &[I128],
(Opcode::FcvtToSintSat, &[F64], &[I128]), &[F32 | F64]
(Opcode::FcvtFromUint, &[I128], &[F32]), ),
(Opcode::FcvtFromUint, &[I128], &[F64]), (Opcode::Bmask, &[I8X16 | I16X8 | I32X4 | I64X2]),
(Opcode::FcvtFromSint, &[I128], &[F32]), (Opcode::SsubSat | Opcode::SaddSat, &[I64X2, I64X2]),
(Opcode::FcvtFromSint, &[I128], &[F64]),
(Opcode::Bmask, &[I8X16]),
(Opcode::Bmask, &[I16X8]),
(Opcode::Bmask, &[I32X4]),
(Opcode::Bmask, &[I64X2]),
(Opcode::SsubSat, &[I64X2, I64X2]),
(Opcode::SaddSat, &[I64X2, I64X2]),
) )
} }
@@ -733,13 +625,10 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
// TODO // TODO
(Opcode::IaddCout), (Opcode::IaddCout),
// TODO // TODO
(Opcode::Udiv, &[I128, I128]), (
// TODO Opcode::Udiv | Opcode::Sdiv | Opcode::Urem | Opcode::Srem,
(Opcode::Sdiv, &[I128, I128]), &[I128, I128]
// TODO ),
(Opcode::Urem, &[I128, I128]),
// TODO
(Opcode::Srem, &[I128, I128]),
// TODO // TODO
(Opcode::Iabs, &[I128]), (Opcode::Iabs, &[I128]),
// TODO // TODO
@@ -747,70 +636,25 @@ fn valid_for_target(triple: &Triple, op: Opcode, args: &[Type], rets: &[Type]) -
// TODO // TODO
(Opcode::Bswap), (Opcode::Bswap),
// https://github.com/bytecodealliance/wasmtime/issues/5528 // https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToUint, &[F32], &[I8]), (
(Opcode::FcvtToUint, &[F32], &[I16]), Opcode::FcvtToUint
// TODO | Opcode::FcvtToUintSat
(Opcode::FcvtToUint, &[F32], &[I128]), | Opcode::FcvtToSint
| Opcode::FcvtToSintSat,
&[F32 | F64],
&[I8 | I16 | I128]
),
// https://github.com/bytecodealliance/wasmtime/issues/5528 // https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToUint, &[F64], &[I8]), (
(Opcode::FcvtToUint, &[F64], &[I16]), Opcode::FcvtFromUint | Opcode::FcvtFromSint,
&[I8 | I16 | I128],
&[F32 | F64]
),
// TODO // TODO
(Opcode::FcvtToUint, &[F64], &[I128]), (
// https://github.com/bytecodealliance/wasmtime/issues/5528 Opcode::BandNot | Opcode::BorNot | Opcode::BxorNot,
(Opcode::FcvtToUintSat, &[F32], &[I8]), &([F32, F32] | [F64, F64])
(Opcode::FcvtToUintSat, &[F32], &[I16]), ),
// TODO
(Opcode::FcvtToUintSat, &[F32], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToUintSat, &[F64], &[I8]),
(Opcode::FcvtToUintSat, &[F64], &[I16]),
// TODO
(Opcode::FcvtToUintSat, &[F64], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToSint, &[F32], &[I8]),
(Opcode::FcvtToSint, &[F32], &[I16]),
// TODO
(Opcode::FcvtToSint, &[F32], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToSint, &[F64], &[I8]),
(Opcode::FcvtToSint, &[F64], &[I16]),
// TODO
(Opcode::FcvtToSint, &[F64], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToSintSat, &[F32], &[I8]),
(Opcode::FcvtToSintSat, &[F32], &[I16]),
// TODO
(Opcode::FcvtToSintSat, &[F32], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtToSintSat, &[F64], &[I8]),
(Opcode::FcvtToSintSat, &[F64], &[I16]),
// TODO
(Opcode::FcvtToSintSat, &[F64], &[I128]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtFromUint, &[I8], &[F32]),
(Opcode::FcvtFromUint, &[I8], &[F64]),
(Opcode::FcvtFromUint, &[I16], &[F32]),
(Opcode::FcvtFromUint, &[I16], &[F64]),
// TODO
(Opcode::FcvtFromUint, &[I128], &[F32]),
(Opcode::FcvtFromUint, &[I128], &[F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5528
(Opcode::FcvtFromSint, &[I8], &[F32]),
(Opcode::FcvtFromSint, &[I8], &[F64]),
(Opcode::FcvtFromSint, &[I16], &[F32]),
(Opcode::FcvtFromSint, &[I16], &[F64]),
// TODO
(Opcode::FcvtFromSint, &[I128], &[F32]),
(Opcode::FcvtFromSint, &[I128], &[F64]),
// TODO
(Opcode::BandNot, &[F32, F32]),
(Opcode::BandNot, &[F64, F64]),
// TODO
(Opcode::BorNot, &[F32, F32]),
(Opcode::BorNot, &[F64, F64]),
// TODO
(Opcode::BxorNot, &[F32, F32]),
(Opcode::BxorNot, &[F64, F64]),
// https://github.com/bytecodealliance/wasmtime/issues/5884 // https://github.com/bytecodealliance/wasmtime/issues/5884
(Opcode::AtomicRmw), (Opcode::AtomicRmw),
) )