================ @@ -9325,6 +9345,43 @@ multiclass avx512_fp28_p_sae<bits<8> opc, string OpcodeStr, X86VectorVTInfo _, EVEX_B, Sched<[sched]>; } +multiclass avx512_fp28_p_ass<bits<8> opc, string OpcodeStr, X86VectorVTInfo _> { + let ExeDomain = _.ExeDomain, hasNoSchedulingInfo = 1 in { + defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst), + (ins _.RC:$src), OpcodeStr, "$src", "$src", + (null_frag)>, Sched<[WriteMove]>; + + defm m : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst), + (ins _.MemOp:$src), OpcodeStr, "$src", "$src", + (null_frag)>, Sched<[WriteMove]>; + + defm mb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst), + (ins _.ScalarMemOp:$src), OpcodeStr, + "${src}"#_.BroadcastStr, "${src}"#_.BroadcastStr, + (null_frag)>, Sched<[WriteMove]>, EVEX_B; + } +} +multiclass avx512_fp28_p_sae_ass<bits<8> opc, string OpcodeStr, X86VectorVTInfo _> { + let ExeDomain = _.ExeDomain, Uses = [MXCSR] in + defm rb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst), + (ins _.RC:$src), OpcodeStr, + "{sae}, $src", "$src, {sae}", + (null_frag)>, Sched<[WriteMove]>, EVEX_B; +} + +multiclass avx512_eri_ass<bits<8> opc, string OpcodeStr> { + defm PSZ : avx512_fp28_p_ass<opc, OpcodeStr#"ps", v16f32_info>, + avx512_fp28_p_sae_ass<opc, OpcodeStr#"ps", v16f32_info>, + T8, PD, EVEX_V512, EVEX_CD8<32, CD8VF>; + defm PDZ : avx512_fp28_p_ass<opc, OpcodeStr#"pd", v8f64_info>, + avx512_fp28_p_sae_ass<opc, OpcodeStr#"pd", v8f64_info>, + T8, PD, EVEX_V512, REX_W, EVEX_CD8<64, CD8VF>; +} + +defm VRSQRT28 : avx512_eri_ass<0xCC, "vrsqrt28">, EVEX; ---------------- phoebewang wrote:
ditto. https://github.com/llvm/llvm-project/pull/92883 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits