Details
- Reviewers
arsenm - Commits
- rGdee3190293fe: [AMDGPU] Add llvm.amdgcn.global.load.lds intrinsic
Diff Detail
Unit Tests
Event Timeline
Typo amdgc. in description
llvm/include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
1823 | Does this really need the offset parameter? It's not a buffer intrinsic with the funny different swizzling behavior between scalar and vector, so can't we just match this from the base pointer? | |
llvm/lib/Target/AMDGPU/SIISelLowering.cpp | ||
1325–1326 | I guess this API just isn't strong enough to handle 2 MMOs |
llvm/include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
1823 | This has 2 separate offsets. VGPR offset is applied to the global memory only, while immediate offset applies to both global and LDS. To have it matching first pointer shall be (g_ptr + const) and the second (l_ptr + const) which we cannot guarantee to preserve. | |
llvm/lib/Target/AMDGPU/SIISelLowering.cpp | ||
1325–1326 | Yes, so it is only for the selection time and later I split it. |
llvm/include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
1823 | Probably should comment offset behavior here |
llvm/include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
1823 | You could just not apply the offset if the same constant wasn't used on both pointers. If it's going to be in the intrinsic, there should probably be an optimization to try to put the immediate in the offset field |
llvm/include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
1823 | It should fail to match too often. It is easier to give explicit control to the user. Especially because that is how it is supposed to be used, with the incremental stride by dword. |
Does this really need the offset parameter? It's not a buffer intrinsic with the funny different swizzling behavior between scalar and vector, so can't we just match this from the base pointer?