The original commit forced all 64-bit values to be loaded from indexed
registers, regardless of how close they were located to a given base
register. This relaxes that, and permits some to be immediate-indexed
if they fit within a signed 255 (really 248, 8-byte aligned mask) byte
window. Patch by kthomsen.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 40109 Build 40191: arc lint + arc unit
Event Timeline
Comment Actions
Please add a test case for this.
Maybe an test were we have an SPE load of f64 with a 8 bit offset and one where the offset is larger or perhaps not aligned. Anyway, that's just a suggestion. You probably have a better idea of what you would like to test for this.
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
2281 | This section of code looks to be loop invariant. I'm not sure if the intention was to use UT or not but if it is invariant you can pull it out of the loop. Basically, if isIntU8Immediate(N.getOperand(1), imm) && !(imm % EVXEncodingAlignment) is true then the function can only return false. |
Comment Actions
@jhibbits Sorry, I'm stucked in an important project and had no time, during the last 3 month, to do anything on the CLANG.
This section of code looks to be loop invariant. I'm not sure if the intention was to use UT or not but if it is invariant you can pull it out of the loop. Basically, if isIntU8Immediate(N.getOperand(1), imm) && !(imm % EVXEncodingAlignment) is true then the function can only return false.