[llvm] [SPIR-V] Lower get_fence builtin to OpGenericPtrMemSemantics (PR #229023)
Arseniy Obolenskiy via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 6 03:34:17 PDT 2026
================
@@ -1921,6 +1921,29 @@ static bool generateCastToPtrInst(const SPIRV::IncomingCall *Call,
.addUse(GR->getSPIRVTypeID(Call->ReturnType))
.addUse(Call->Arguments[0])
.addImm(ResSC);
+ } else if (Opcode == SPIRV::OpGenericPtrMemSemantics) {
+ if (GR->getPointerStorageClass(Call->Arguments[0]) !=
+ SPIRV::StorageClass::Generic)
+ return false;
+
+ // Shift the WorkgroupMemory/CrossWorkgroupMemory bits down to
+ // CLK_LOCAL/GLOBAL_MEM_FENCE.
+ MachineRegisterInfo *MRI = MIRBuilder.getMRI();
+ SPIRVTypeInst RetTy = Call->ReturnType;
+ Register SemReg =
+ MRI->createGenericVirtualRegister(MRI->getType(Call->ReturnRegister));
+ MRI->setRegClass(SemReg, GR->getRegClass(RetTy));
+ GR->assignSPIRVTypeToVReg(RetTy, SemReg, MIRBuilder.getMF());
+ MIRBuilder.buildInstr(Opcode)
+ .addDef(SemReg)
+ .addUse(GR->getSPIRVTypeID(RetTy))
+ .addUse(Call->Arguments[0]);
----------------
aobolensk wrote:
> This comment was marked as outdated.
Is it still relevant?
https://github.com/llvm/llvm-project/pull/229023
More information about the llvm-commits
mailing list