[TableGen] Don't commute isel patterns if it would put an immAllOnesV or immAllZerosV...
authorCraig Topper <craig.topper@sifive.com>
Mon, 1 Feb 2021 04:31:24 +0000 (20:31 -0800)
committerCraig Topper <craig.topper@sifive.com>
Mon, 1 Feb 2021 05:18:21 +0000 (21:18 -0800)
commit77f077b8c3b2e8bbf9b160d56194312e506dfe8f
treef6c4efbd3c239e7a7c1dddfb17addd0c5832c4c6
parentbf416d166bdde187cf3b7e99888bcb4b95a93142
[TableGen] Don't commute isel patterns if it would put an immAllOnesV or immAllZerosV on the left hand side.

This primarily occurs with isel patterns using vnot. This reduces
the number of variants in the isel tables.

We generally canonicalize build_vectors of constants to the RHS. I think
we might fail if there is a bitcast on the build_vector, but that
should be easy to fix if we can find a case. Usually the
bitcast is introduced by type legalization or lowering. It's
likely canonicalization would have already occured.
llvm/utils/TableGen/CodeGenDAGPatterns.cpp