These instructions set, clear, or invert a single bit. If their
users don't use the upper 32 bits, they don't use the upper 32 bits
of their input.
Additionally the second operand BSET/BCLR/BINV is a shift amount
which only uses 6 bits of the source.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D137452
break;
case RISCV::SLL:
+ case RISCV::BSET:
+ case RISCV::BCLR:
+ case RISCV::BINV:
// Operand 2 is the shift amount which uses 6 bits.
if (OpIdx == 2)
break;
case RISCV::SH2ADD:
case RISCV::SH3ADD:
case RISCV::XNOR:
+ case RISCV::BSETI:
+ case RISCV::BCLRI:
+ case RISCV::BINVI:
Worklist.push_back(UserMI);
break;
}