[clang] [llvm] [x86][AVX-VNNI] Fix VPDPBUSD Argument Types (PR #155194)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 10 01:07:02 PDT 2025
================
@@ -546,19 +564,37 @@ static bool upgradeX86IntrinsicFunction(Function *F, StringRef Name,
if (ID != Intrinsic::not_intrinsic)
return upgradeX86IntrinsicsWith8BitMask(F, ID, NewFn);
+ if (Name.consume_front("avx512.")) {
+ if (Name.consume_front("mask.cmp.")) {
+ // Added in 7.0
+ ID = StringSwitch<Intrinsic::ID>(Name)
+ .Case("pd.128", Intrinsic::x86_avx512_mask_cmp_pd_128)
+ .Case("pd.256", Intrinsic::x86_avx512_mask_cmp_pd_256)
+ .Case("pd.512", Intrinsic::x86_avx512_mask_cmp_pd_512)
+ .Case("ps.128", Intrinsic::x86_avx512_mask_cmp_ps_128)
+ .Case("ps.256", Intrinsic::x86_avx512_mask_cmp_ps_256)
+ .Case("ps.512", Intrinsic::x86_avx512_mask_cmp_ps_512)
+ .Default(Intrinsic::not_intrinsic);
+ if (ID != Intrinsic::not_intrinsic)
+ return upgradeX86MaskedFPCompare(F, ID, NewFn);
+ } else if (Name.starts_with("vpdpbusd.") ||
+ Name.starts_with("vpdpbusds.")) {
+ // Added in 21.1
+ ID = StringSwitch<Intrinsic::ID>(Name)
+ .Case("vpdpbusd.128", Intrinsic::x86_avx512_vpdpbusd_128)
+ .Case("vpdpbusd.256", Intrinsic::x86_avx512_vpdpbusd_256)
+ .Case("vpdpbusd.512", Intrinsic::x86_avx512_vpdpbusd_512)
+ .Case("vpdpbusds.128", Intrinsic::x86_avx512_vpdpbusds_128)
+ .Case("vpdpbusds.256", Intrinsic::x86_avx512_vpdpbusds_256)
+ .Case("vpdpbusds.512", Intrinsic::x86_avx512_vpdpbusds_512)
+ .Default(Intrinsic::not_intrinsic);
+ if (ID != Intrinsic::not_intrinsic)
+ return upgradeX86MultiplyAddBytes(F, ID, NewFn);
+ }
+ return false; // No other 'x86.avx512.*'.
+ }
+
if (Name.consume_front("avx512.mask.cmp.")) {
----------------
phoebewang wrote:
Remove blank block.
https://github.com/llvm/llvm-project/pull/155194
More information about the llvm-commits
mailing list