[llvm] [AMDGPU] Support merging 16-bit and 8-bit TBUFFER load/store instruction (PR #145078)
Harrison Hao via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 15 21:47:19 PDT 2025
================
@@ -839,8 +839,16 @@ void SILoadStoreOptimizer::CombineInfo::setMI(MachineBasicBlock::iterator MI,
Offset = I->getOperand(OffsetIdx).getImm();
}
- if (InstClass == TBUFFER_LOAD || InstClass == TBUFFER_STORE)
+ if (InstClass == TBUFFER_LOAD || InstClass == TBUFFER_STORE) {
Format = LSO.TII->getNamedOperand(*I, AMDGPU::OpName::format)->getImm();
+ const AMDGPU::GcnBufferFormatInfo *Info =
+ AMDGPU::getGcnBufferFormatInfo(Format, *LSO.STM);
+
+ // Use 2-byte element size if the tbuffer format is 16-bit.
+ // Use 1-byte element size if the tbuffer format is 8-bit.
+ if (Info)
----------------
harrisonGPU wrote:
I think separating merge-tbuffer.mir makes sense, but we still have these lit tests that need to be separated:
```
Failed Tests (6):
LLVM :: CodeGen/AMDGPU/llvm.amdgcn.raw.ptr.tbuffer.load.ll
LLVM :: CodeGen/AMDGPU/llvm.amdgcn.raw.ptr.tbuffer.store.ll
LLVM :: CodeGen/AMDGPU/llvm.amdgcn.raw.tbuffer.load.ll
LLVM :: CodeGen/AMDGPU/llvm.amdgcn.raw.tbuffer.store.ll
LLVM :: CodeGen/AMDGPU/llvm.amdgcn.struct.ptr.tbuffer.load.ll
LLVM :: CodeGen/AMDGPU/llvm.amdgcn.struct.tbuffer.load.ll
```
Should I continue to do this?
https://github.com/llvm/llvm-project/pull/145078
More information about the llvm-commits
mailing list