[clang] [llvm] [mlir] [x86][AVX-VNNI] Fix VPDPBXXD Argument Type (PR #159222)

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 17 04:39:15 PDT 2025


================
@@ -594,6 +594,50 @@ static bool upgradeX86IntrinsicFunction(Function *F, StringRef Name,
     return false; // No other 'x86.avx512.*'.
   }
 
+  if (Name.consume_front("avx2.")) {
+    if (Name.starts_with("vpdpbssd.") || Name.starts_with("vpdpbssds.") ||
+        Name.starts_with("vpdpbsud.") || Name.starts_with("vpdpbsuds.") ||
+        Name.starts_with("vpdpbuud.") || Name.starts_with("vpdpbuuds.")) {
+      // Added in 21.1
+      ID = StringSwitch<Intrinsic::ID>(Name)
+               .Case("vpdpbssd.128", Intrinsic::x86_avx2_vpdpbssd_128)
+               .Case("vpdpbssd.256", Intrinsic::x86_avx2_vpdpbssd_256)
+               .Case("vpdpbssds.128", Intrinsic::x86_avx2_vpdpbssds_128)
+               .Case("vpdpbssds.256", Intrinsic::x86_avx2_vpdpbssds_256)
+               .Case("vpdpbsud.128", Intrinsic::x86_avx2_vpdpbsud_128)
+               .Case("vpdpbsud.256", Intrinsic::x86_avx2_vpdpbsud_256)
+               .Case("vpdpbsuds.128", Intrinsic::x86_avx2_vpdpbsuds_128)
+               .Case("vpdpbsuds.256", Intrinsic::x86_avx2_vpdpbsuds_256)
+               .Case("vpdpbuud.128", Intrinsic::x86_avx2_vpdpbuud_128)
+               .Case("vpdpbuud.256", Intrinsic::x86_avx2_vpdpbuud_256)
+               .Case("vpdpbuuds.128", Intrinsic::x86_avx2_vpdpbuuds_128)
+               .Case("vpdpbuuds.256", Intrinsic::x86_avx2_vpdpbuuds_256)
+               .Default(Intrinsic::not_intrinsic);
+      if (ID != Intrinsic::not_intrinsic)
+        return upgradeX86MultiplyAddBytes(F, ID, NewFn);
+    }
+    return false; // No other 'x86.avx2.*'
+  }
+
+  if (Name.consume_front("avx10.")) {
----------------
phoebewang wrote:

ditto.

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


More information about the llvm-commits mailing list