[SystemZ] Use llvm::countl_zero and llvm::countr_zero (NFC)
authorKazu Hirata <kazu@google.com>
Thu, 26 Jan 2023 06:05:06 +0000 (22:05 -0800)
committerKazu Hirata <kazu@google.com>
Thu, 26 Jan 2023 06:05:06 +0000 (22:05 -0800)
commit7510b7ec4a662b050a41b399fcd3720e0e5afd82
treec15955ae0d3d7bce1836763fd6eeaeb21519c0be
parentd2ea8ae5d43e05791a201e7ca233d3f637254597
[SystemZ] Use llvm::countl_zero and llvm::countr_zero (NFC)

isVectorConstantLegal calls findFirstSet and findLastSet, but we don't
rely on their ability to return std::numeric_limits<T>::max() on input
0.

This patch replaces those calls with calls to llvm::countl_zero and
llvm::countr_zero.

Due to an off-by-one error in the original code, the value of Upper
could change at bit N, where N is the index of the highest set bit in
SplatBitsZ, but the difference doesn't matter at the end.  Without
this patch, Upper could have bit N set.  With this patch, Upper never
has bit N set.  Either way, both calls to tryValue have this bit set
because the argument is ORed with SplatBitsZ.
llvm/lib/Target/SystemZ/SystemZISelLowering.cpp