Extend loadSRsrcFromVGPR to allow moving a range of instructions into
the loop. The call instruction is preceded by copies into physical
registers which should be part of the waterfall loop, as the registers
can be overwritten by the call.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
4897 | Thanks, I forgot to remove them. | |
5125 | I don’t know how AGPRs work and documentation seems to be scarce, the check for calls is the same as for image operations above. |
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
5125 | My main concern is that this check is over relaxing and allows all non-SGPR classes. This also includes any future register class we may add. AGPR is just an example. What about enabling it just for VGPR for now and put a TODO? |
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
5125 | Dest is the destination we're calling, i.e. the function pointer. The point of the logic, AFAIU, is that if the function pointer is non-uniform, we need to do something about that. AGPRs are non-uniform... so I'd say !isSGPR is correct. |
Dump() is not required.