[clang] [llvm] [X86][AVX10.2] Support AVX10.2-SATCVT new instructions. (PR #101599)

Phoebe Wang via cfe-commits cfe-commits at lists.llvm.org
Sun Aug 4 23:57:42 PDT 2024


================
@@ -417,3 +417,173 @@ defm VMINMAXSH : avx10_minmax_scalar<"vminmaxsh", v8f16x_info, X86vminmaxs, X86v
                  AVX512PSIi8Base, VEX_LIG, EVEX, VVVV, EVEX_CD8<16, CD8VT1>, TA;
 defm VMINMAXSS : avx10_minmax_scalar<"vminmaxss", v4f32x_info, X86vminmaxs, X86vminmaxsSae>,
                  AVX512AIi8Base, VEX_LIG, EVEX, VVVV, EVEX_CD8<32, CD8VT1>;
+
+//-------------------------------------------------
+// AVX10 SATCVT instructions
+//-------------------------------------------------
+
+multiclass avx10_sat_cvt_rmb<bits<8> Opc, string OpStr, X86FoldableSchedWrite sched,
+                              X86VectorVTInfo DestInfo,
+                              X86VectorVTInfo SrcInfo,
+                              SDNode MaskNode> {
+  defm rr: AVX512_maskable<Opc, MRMSrcReg, DestInfo, (outs DestInfo.RC:$dst),
+                         (ins SrcInfo.RC:$src), OpStr, "$src", "$src",
+                         (DestInfo.VT (MaskNode SrcInfo.RC:$src))>, Sched<[sched]>;
+  defm rm: AVX512_maskable<Opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
+                         (ins SrcInfo.MemOp:$src), OpStr, "$src", "$src",
+                         (DestInfo.VT (MaskNode (SrcInfo.VT
+                         (SrcInfo.LdFrag addr:$src))))>,
+                         Sched<[sched.Folded, sched.ReadAfterFold]>;
+  defm rmb: AVX512_maskable<Opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
+                         (ins SrcInfo.ScalarMemOp:$src), OpStr,
+                         "${src}"#SrcInfo.BroadcastStr, "${src}"#SrcInfo.BroadcastStr,
+                         (DestInfo.VT (MaskNode (SrcInfo.VT
+                         (SrcInfo.BroadcastLdFrag addr:$src))))>, EVEX_B,
+                         Sched<[sched.Folded, sched.ReadAfterFold]>;
+}
+
+// Conversion with rounding control (RC)
+multiclass avx10_sat_cvt_rc<bits<8> Opc, string OpStr, X86SchedWriteWidths sched,
+                             AVX512VLVectorVTInfo DestInfo, AVX512VLVectorVTInfo SrcInfo,
+                             SDNode MaskNode> {
+    let Uses = [MXCSR] in
----------------
phoebewang wrote:

let Predicates = [HasAVX10_2_512]

https://github.com/llvm/llvm-project/pull/101599


More information about the cfe-commits mailing list