Add these bits to the MUBUF and FLAT LDS DMA instructions:
- LGKM_CNT - these operate on LDS;
- VALU - SPG 3.9.8: This instruction acts as both a MUBUF and
VALU instruction;
Codegen currently does not produce any of this, so the change is NFC.
Differential D124472
[AMDGPU] Properly mark MUBUF and FLAT LDS DMA instructions. NFC. rampitec on Apr 26 2022, 12:39 PM. Authored by
Details Add these bits to the MUBUF and FLAT LDS DMA instructions:
VALU instruction; Codegen currently does not produce any of this, so the change is NFC.
Diff Detail
Unit Tests Event Timeline
Comment Actions This should have 2 separate MMOs, and the verifier should probably enforce that if we were to start producing this Comment Actions Unfortunately wait count pass uses MMO pointers, so we have to do it. I can imagine a base pointer, but I have no idea how much memory does this touch. At the very least it depends on the WG size. Comment Actions Intersting that I can only create such MMOs during lowering. I do not see how an intrinsic call in IR can get 2 distinct MMOs. I have managed to get one, which is a 'load store' on address space 4. This is most certainly not a normal memory operation for llvm and not even a normal memory intrinsic. I cannot really express that an intrinsic reads addrspace 1 and writes addrspace 3. I think I have even figured out how much memory does it read and write, but the data type in too wide to express: wave size * operation size. For a single dword that is v64i32, but it can be 4 times more. |
Loads and stores shouldn't be marked hasSideEffects, only mayLoad/mayStore