@@ -1256,7 +1256,6 @@ defm "" : SIMDConvert<I32x4, I16x8, int_wasm_extadd_pairwise_signed,
12561256defm "" : SIMDConvert<I32x4, I16x8, int_wasm_extadd_pairwise_unsigned,
12571257 "extadd_pairwise_i16x8_u", 0xa6>;
12581258
1259-
12601259// Prototype f64x2 conversions
12611260defm "" : SIMDConvert<F64x2, I32x4, int_wasm_convert_low_signed,
12621261 "convert_low_i32x4_s", 0x53>;
@@ -1271,6 +1270,25 @@ defm "" : SIMDConvert<F32x4, F64x2, int_wasm_demote_zero,
12711270defm "" : SIMDConvert<F64x2, F32x4, int_wasm_promote_low,
12721271 "promote_low_f32x4", 0x69>;
12731272
1273+ // Prototype i8x16 to i32x4 widening
1274+ defm WIDEN_I8x16_TO_I32x4_S :
1275+ SIMD_I<(outs V128:$dst), (ins V128:$vec, vec_i8imm_op:$idx),
1276+ (outs), (ins vec_i8imm_op:$idx),
1277+ [(set (I32x4.vt V128:$dst),
1278+ (I32x4.vt (int_wasm_widen_signed
1279+ (I8x16.vt V128:$vec), (i32 timm:$idx))))],
1280+ "i32x4.widen_i8x16_s\t$dst, $vec, $idx",
1281+ "i32x4.widen_i8x16_s\t$idx", 0x67>;
1282+ defm WIDEN_I8x16_TO_I32x4_U :
1283+ SIMD_I<(outs V128:$dst), (ins V128:$vec, vec_i8imm_op:$idx),
1284+ (outs), (ins vec_i8imm_op:$idx),
1285+ [(set (I32x4.vt V128:$dst),
1286+ (I32x4.vt (int_wasm_widen_unsigned
1287+ (I8x16.vt V128:$vec), (i32 timm:$idx))))],
1288+ "i32x4.widen_i8x16_u\t$dst, $vec, $idx",
1289+ "i32x4.widen_i8x16_u\t$idx", 0x68>;
1290+
1291+
12741292//===----------------------------------------------------------------------===//
12751293// Quasi-Fused Multiply- Add and Subtract (QFMA/QFMS)
12761294//===----------------------------------------------------------------------===//
0 commit comments