This removes the VCEQ/VCNE/VCGE/VCEQZ/etc nodes, just using two called VCMP and VCMPZ with an extra operand as the condition code. I believe this will make some combines simpler, allowing us to just look at these codes and not the operands. It also helps fill in a missing VCGTUZ MVE selection without adding extra nodes for it.
Details
Diff Detail
Event Timeline
llvm/lib/Target/ARM/ARMISelLowering.cpp | ||
---|---|---|
11813 | There seem to be a load of different encodings for VCMP, do we have to think about that here at all when deciding whether a CC is valid? | |
11842 | This doesn't look like the correct formatting. | |
11843 | else if | |
11849 | else if | |
11862 | I know this isn't you, but these vectors should be SmallVectors instead. |
llvm/lib/Target/ARM/ARMISelLowering.cpp | ||
---|---|---|
11813 | The VCMPs are: Except in floating point, where there are only the first 6. The other 2 do not come up in PerformORCombine_i1 below, because we never have the opposite to invert them from. I've added a IsFloatingPoint argument for any other uses this function might get in the future. | |
11842 | Apparently this is. Too many long casts I guess, it splits it where it can. | |
11862 | Me in an earlier patch :) I'll change it there before committing. |
There seem to be a load of different encodings for VCMP, do we have to think about that here at all when deciding whether a CC is valid?