[llvm] [SPIR-V] Parse parameterized Memory Access operands with a shared helper (PR #209262)

Arseniy Obolenskiy via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 14 06:22:23 PDT 2026


================
@@ -113,6 +113,42 @@ void SPIRVInstPrinter::printOpConstantVarOps(const MCInst *MI,
   O << Imm;
 }
 
+unsigned SPIRVInstPrinter::printMemoryOperand(const MCInst *MI, unsigned OpNo,
+                                              raw_ostream &O) {
+  O << ' ';
+  if (OpNo >= MI->getNumOperands())
+    return OpNo;
+  const uint64_t Mask = MI->getOperand(OpNo).getImm();
+  printSymbolicOperand<OperandCategory::MemoryOperandOperand>(MI, OpNo, O);
+  unsigned NextOp = OpNo + 1;
+  if (Mask & SPIRV::MemoryOperand::Aligned) {
+    O << ' ';
+    printOperand(MI, NextOp, O);
+    ++NextOp;
+  }
+  if (Mask & SPIRV::MemoryOperand::MakePointerAvailableKHR) {
+    O << ' ';
+    printOperand(MI, NextOp, O);
+    ++NextOp;
+  }
+  if (Mask & SPIRV::MemoryOperand::MakePointerVisibleKHR) {
+    O << ' ';
+    printOperand(MI, NextOp, O);
+    ++NextOp;
+  }
+  if (Mask & SPIRV::MemoryOperand::AliasScopeINTELMask) {
+    O << ' ';
+    printOperand(MI, NextOp, O);
+    ++NextOp;
+  }
+  if (Mask & SPIRV::MemoryOperand::NoAliasINTELMask) {
+    O << ' ';
+    printOperand(MI, NextOp, O);
+    ++NextOp;
+  }
+  return NextOp;
+}
----------------
aobolensk wrote:

Left only one place with the increment, unified handling for all cases

https://github.com/llvm/llvm-project/pull/209262


More information about the llvm-commits mailing list