The previous implementation was incorrect, and based off incorrect
instruction definitions. Unfortunately we can't match natural
addressing in a lot of cases due to the shift/scale applied in
getelementptrs. This relies on reducing the 64-bit shift to 32-bits.
Details
Details
Diff Detail
Diff Detail
Event Timeline
llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | ||
---|---|---|
1789 | You probably need to match OR as well, this is a canonical form. |
llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | ||
---|---|---|
1789 | This is for the variable offset, where add is less likely to turn into or. That's another edge case I'll look at in the next round (the other being SGPR base + imm offset should also probably use this with a 0 voffset instead of copying the base pointer) |
You probably need to match OR as well, this is a canonical form.