@@ -7225,17 +7225,16 @@ multiclass avx512_cvtps2ph<X86VectorVTInfo _dest, X86VectorVTInfo _src,
7225
7225
(X86cvtps2ph (_src.VT _src.RC:$src1),
7226
7226
(i32 imm:$src2)),
7227
7227
NoItinerary, 0, 0>, AVX512AIi8Base;
7228
- def mr : AVX512AIi8<0x1D, MRMDestMem, (outs),
7229
- (ins x86memop:$dst, _src.RC:$src1, i32u8imm:$src2),
7230
- "vcvtps2ph\t{$src2, $src1, $dst|$dst, $src1, $src2}",
7231
- [(store (_dest.VT (X86cvtps2ph (_src.VT _src.RC:$src1),
7232
- (i32 imm:$src2))),
7233
- addr:$dst)]>;
7234
- let hasSideEffects = 0, mayStore = 1 in
7235
- def mrk : AVX512AIi8<0x1D, MRMDestMem, (outs),
7236
- (ins x86memop:$dst, _dest.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
7237
- "vcvtps2ph\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
7238
- []>, EVEX_K;
7228
+ let hasSideEffects = 0, mayStore = 1 in {
7229
+ def mr : AVX512AIi8<0x1D, MRMDestMem, (outs),
7230
+ (ins x86memop:$dst, _src.RC:$src1, i32u8imm:$src2),
7231
+ "vcvtps2ph\t{$src2, $src1, $dst|$dst, $src1, $src2}",
7232
+ []>;
7233
+ def mrk : AVX512AIi8<0x1D, MRMDestMem, (outs),
7234
+ (ins x86memop:$dst, _dest.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
7235
+ "vcvtps2ph\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
7236
+ []>, EVEX_K;
7237
+ }
7239
7238
}
7240
7239
multiclass avx512_cvtps2ph_sae<X86VectorVTInfo _dest, X86VectorVTInfo _src> {
7241
7240
let hasSideEffects = 0 in
@@ -7255,6 +7254,19 @@ let Predicates = [HasAVX512] in {
7255
7254
defm VCVTPS2PHZ128 : avx512_cvtps2ph<v8i16x_info, v4f32x_info, f64mem>,
7256
7255
EVEX, EVEX_V128, EVEX_CD8<32, CD8VH>;
7257
7256
}
7257
+
7258
+ def : Pat<(store (f64 (extractelt
7259
+ (bc_v2f64 (v8i16 (X86cvtps2ph VR128X:$src1, i32:$src2))),
7260
+ (iPTR 0))), addr:$dst),
7261
+ (VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, imm:$src2)>;
7262
+ def : Pat<(store (i64 (extractelt
7263
+ (bc_v2i64 (v8i16 (X86cvtps2ph VR128X:$src1, i32:$src2))),
7264
+ (iPTR 0))), addr:$dst),
7265
+ (VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, imm:$src2)>;
7266
+ def : Pat<(store (v8i16 (X86cvtps2ph VR256X:$src1, i32:$src2)), addr:$dst),
7267
+ (VCVTPS2PHZ256mr addr:$dst, VR256X:$src1, imm:$src2)>;
7268
+ def : Pat<(store (v16i16 (X86cvtps2ph VR512:$src1, i32:$src2)), addr:$dst),
7269
+ (VCVTPS2PHZmr addr:$dst, VR512:$src1, imm:$src2)>;
7258
7270
}
7259
7271
7260
7272
// Patterns for matching conversions from float to half-float and vice versa.
0 commit comments