@@ -1541,6 +1541,24 @@ defm VFNMSUB132NEPBF16 : avx10_fma3p_132_bf16<0x9E, "vfnmsub132nepbf16", X86any_
1541
1541
//-------------------------------------------------
1542
1542
// AVX10 COMEF instructions
1543
1543
//-------------------------------------------------
1544
+ multiclass avx10_com_ef<bits<8> Opc, RegisterClass RC, ValueType VT,
1545
+ SDPatternOperator OpNode, string OpcodeStr,
1546
+ X86MemOperand x86memop, PatFrag ld_frag,
1547
+ Domain d, X86FoldableSchedWrite sched = WriteFComX>{
1548
+ let ExeDomain = d, mayRaiseFPException = 1, isCodeGenOnly = 1 in {
1549
+ def rr : AVX512<Opc, MRMSrcReg, (outs), (ins RC:$src1, RC:$src2),
1550
+ !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
1551
+ [(set EFLAGS, (OpNode (VT RC:$src1), RC:$src2))]>,
1552
+ EVEX, EVEX_V128, Sched<[sched]>, SIMD_EXC;
1553
+ let mayLoad = 1 in {
1554
+ def rm : AVX512<Opc, MRMSrcMem, (outs), (ins RC:$src1, x86memop:$src2),
1555
+ !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
1556
+ [(set EFLAGS, (OpNode (VT RC:$src1), (ld_frag addr:$src2)))]>,
1557
+ EVEX, EVEX_V128, Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
1558
+ }
1559
+ }
1560
+ }
1561
+
1544
1562
multiclass avx10_com_ef_int<bits<8> Opc, X86VectorVTInfo _, SDNode OpNode,
1545
1563
string OpcodeStr,
1546
1564
Domain d,
@@ -1564,6 +1582,15 @@ multiclass avx10_com_ef_int<bits<8> Opc, X86VectorVTInfo _, SDNode OpNode,
1564
1582
}
1565
1583
1566
1584
let Defs = [EFLAGS], Uses = [MXCSR], Predicates = [HasAVX10_2] in {
1585
+ defm VUCOMXSDZ : avx10_com_ef<0x2e, FR64X, f64, X86ucomi512,
1586
+ "vucomxsd", f64mem, loadf64, SSEPackedDouble>,
1587
+ TB, XS, VEX_LIG, REX_W, EVEX_CD8<64, CD8VT1>;
1588
+ defm VUCOMXSHZ : avx10_com_ef<0x2e, FR16X, f16, X86ucomi512,
1589
+ "vucomxsh", f16mem, loadf16, SSEPackedSingle>,
1590
+ T_MAP5, XD, EVEX_CD8<16, CD8VT1>;
1591
+ defm VUCOMXSSZ : avx10_com_ef<0x2e, FR32X, f32, X86ucomi512,
1592
+ "vucomxss", f32mem, loadf32, SSEPackedSingle>,
1593
+ TB, XD, VEX_LIG, EVEX_CD8<32, CD8VT1>;
1567
1594
defm VCOMXSDZ : avx10_com_ef_int<0x2f, v2f64x_info, X86comi512,
1568
1595
"vcomxsd", SSEPackedDouble>,
1569
1596
TB, XS, VEX_LIG, REX_W, EVEX_CD8<64, CD8VT1>;
0 commit comments