================
@@ -4504,6 +4511,21 @@ static Value *upgradeARMIntrinsicCall(StringRef Name,
CallBase *CI, Function *F,
//
static Value *upgradeAMDGCNIntrinsicCall(StringRef Name, CallBase *CI,
Function *F, IRBuilder<> &Builder) {
+ if (Name.starts_with("wmma.i32.16x16x64.iu8")) {
+ // Legacy WMMA IU8 intrinsic lacked the optional clamp operand. Append
+ // clamp=false for compatibility.
+ if (CI->arg_size() != 7)
+ return nullptr;
+
+ SmallVector<Value *, 8> Args(CI->args().begin(), CI->args().end());
+ Args.push_back(Builder.getFalse());
+
+ Function *NewDecl = Intrinsic::getOrInsertDeclaration(
+ F->getParent(), Intrinsic::amdgcn_wmma_i32_16x16x64_iu8,
+ {CI->getArgOperand(4)->getType(), CI->getArgOperand(1)->getType()});
+ return Builder.CreateCall(NewDecl, Args);
----------------
arsenm wrote:
Do you really need to create a new call, and not mutate the one in place? As it
is this is losing callsite attributes and metadata
https://github.com/llvm/llvm-project/pull/171069
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits