[llvm] [AMDGPU] Ensure positive InstOffset for buffer operations (PR #145504)

Shilei Tian via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 24 06:38:14 PDT 2025


================
@@ -803,6 +803,21 @@ DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
     }
   }
 
+  // Validate buffer offset for GFX12+ - must be positive
+  if ((MCII->get(MI.getOpcode()).TSFlags &
+       (SIInstrFlags::MTBUF | SIInstrFlags::MUBUF)) &&
+      AMDGPU::isGFX12Plus(STI)) {
+    int OffsetIdx =
+        AMDGPU::getNamedOperandIdx(MI.getOpcode(), AMDGPU::OpName::offset);
+    if (OffsetIdx != -1) {
+      uint32_t Imm = MI.getOperand(OffsetIdx).getImm();
+      int64_t SignedOffset = SignExtend64<24>(Imm);
+      if (SignedOffset < 0) {
+        return MCDisassembler::Fail;
+      }
----------------
shiltian wrote:

```suggestion
      if (SignedOffset < 0)
        return MCDisassembler::Fail;
```

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


More information about the llvm-commits mailing list