[llvm] [GlobalISel] Fold G_ICMP if possible (PR #86357)
Amara Emerson via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 25 10:44:07 PDT 2024
================
@@ -996,6 +996,74 @@ llvm::ConstantFoldCTLZ(Register Src, const MachineRegisterInfo &MRI) {
return std::nullopt;
}
+std::optional<SmallVector<APInt>>
+llvm::ConstantFoldICmp(unsigned Pred, const Register Op1, const Register Op2,
+ const MachineRegisterInfo &MRI) {
+ LLT Ty = MRI.getType(Op1);
+ if (Ty != MRI.getType(Op2))
+ return std::nullopt;
+
+ auto TryFoldScalar = [&MRI, Pred](Register LHS,
+ Register RHS) -> std::optional<APInt> {
+ auto LHSCst = getIConstantVRegVal(LHS, MRI);
----------------
aemerson wrote:
I'm not 100 sure how this is happening but it feels like the client of MIRBuilder should be creating new vregs and COPYing later to avoid creating multiple defs.
https://github.com/llvm/llvm-project/pull/86357
More information about the llvm-commits
mailing list