[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