Details
Diff Detail
Event Timeline
Could you make this generic over the VGPR register class instead? That code duplication is rather annoying.
I agree it does not look nice with the duplication. However, the existing implementation is easy to follow,
and I could not figure out a way that can easily generalize over vgpr class without make the code messy.
We will continue to work on to come out with a generalized solution. But in the mean time, we need
the fix for a correctness issue which has been bothering us for a long time.
GlobalISel already has a generalized implementation, it just relies on generic registers. I'd rather copy something from there and dirty it up with register classes
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
4986 | llvm_unreachable |
Update based on the reviewers' request to generate the waterfall loop for resource registers of
arbitrary sizes.
Update a few LIT tests, mainly because of the changes in instruction order, or additional move instructions under -O0.
A minor change to use the register directly in stead of getting it from the instruction.
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
5075 | What about the SGPR offset? I guess this was broken before anyway |
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
5075 | Do you mean we will have to legalize the case with SGPR Offset? If you can come up with a test case with SGPR offset, we can fix the broken, in a separate patch of course. Thanks. |
llvm_unreachable