We really want to try and avoid spilling P0, which can be difficult since there's only one register, so try to rematerialize any VCTP instructions.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | ||
---|---|---|
6138 | Since I don't think this there's much difference in really trivial and trivial, probably isTriviallyReMaterializable is enough to capture this. | |
llvm/test/CodeGen/Thumb2/LowOverheadLoops/remat-vctp.ll | ||
15 | I haven't seen the codegen before this change, so it wasn't immediately clear to me what exactly the clue here is. I.e., is this testing something that isn't tested with the other changed tests? I am guessing the high register pressure? |
Rebased after pre-committing the test, of which I've changed the function name too. The isTrullyReallyTrivial is a virtual function so I haven't chosen the name for it.
Rebased after pre-committing the test, of which I've changed the function name too.
Cheers, that's all clear now.
The isTrullyReallyTrivial is a virtual function so I haven't chosen the name for it.
Ah, blimey, I missed that.
LGTM.
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | ||
---|---|---|
6144 | This probably wants to check that the VCTP is not predicated. | |
llvm/test/CodeGen/Thumb2/LowOverheadLoops/remat-vctp.ll | ||
2 | A full triple would be better. I think the ".main" is important. Otherwise, how come it is still not tail predicated? | |
4 | You can remove hidden. |
llvm/test/CodeGen/Thumb2/LowOverheadLoops/remat-vctp.ll | ||
---|---|---|
2 | Cheers, I was just investigating what was going on there! |
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | ||
---|---|---|
6144 | Do you know a nice way to write IR to guarantee a predicated vctp? |
llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | ||
---|---|---|
6144 | There's an intrinsic for it: https://godbolt.org/z/aPz3s5 |
Since I don't think this there's much difference in really trivial and trivial, probably isTriviallyReMaterializable is enough to capture this.