The adds some very basic folding of PREDICATE_CASTS, removing cases when they are chained together. These would already be removed eventually, as these are lowered to copies. This just allows it to happen earlier, which can help during lowering.
Details
Diff Detail
Event Timeline
Could you say what it is generally helping? For the first few test cases, the main change that I see is push and pop instructions being introduced...
Yeah, it's a shame about the masked ld-st tests. They appear to be in a different order, causing the extra register usage. Seems like more of a scheduling problem. The tests in mve-pred-bitcast.ll and mve-pred-loadstore.ll are both smaller (and the masked load-store tests will eventually generate narrow/widen masked loads/stores.)
This seems like a fairly obvious simplification to me. It should in certain situations allow further simplification, so should in general be an improvement.
Good point, the copies probably would do a good job of constraining the scheduler!
llvm/lib/Target/ARM/ARMISelLowering.cpp | ||
---|---|---|
12641 | Shouldn't this be casting to VT? |
Shouldn't this be casting to VT?