[PATCH] D129690: [LLVM][AMDGPU] Specialize 32-bit atomic fadd instruction for generic address space

Shilei Tian via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 20 19:59:58 PDT 2022


tianshilei1992 added inline comments.


================
Comment at: llvm/lib/Target/AMDGPU/SIISelLowering.cpp:13014
+  FunctionCallee AddressShared = M->getOrInsertFunction(
+      "llvm.amdgcn.is.shared", Builder.getInt1Ty(), Builder.getInt8PtrTy());
+  Value *IsShared = Builder.CreateCall(AddressShared, {AddrInt8Ptr});
----------------
arsenm wrote:
> tianshilei1992 wrote:
> > arsenm wrote:
> > > Should use getIntrinsic with the enum, not refer to the intrinsic by name (or CreateIntrinsic)
> > Well, I agree, but that intrinsic is not in llvm yet. clang directly lowers the compiler built-in to this. As a result, directly using the name is a WA.
> Yes it is, the intrinsic wouldn't work at all if it weren't
It looks like I didn't use `CreateIntrinsic` correctly. It hits the following assertion (llvm/lib/IR/Function.cpp:894):
```
  assert((Tys.empty() || Intrinsic::isOverloaded(Id)) &&
         "This version of getName is for overloaded intrinsics only");
```
Isn't `Intrinsic::amdgcn_is_shared` the right intrinsic ID?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129690/new/

https://reviews.llvm.org/D129690



More information about the llvm-commits mailing list