[llvm] [GlobalISel] Implement G_UADDO/G_UADDE/G_SADDO/G_SADDE for computeKnownBits (PR #165497)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 30 03:00:35 PDT 2025
================
@@ -615,7 +615,37 @@ void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
case TargetOpcode::G_UADDO:
case TargetOpcode::G_UADDE:
case TargetOpcode::G_SADDO:
- case TargetOpcode::G_SADDE:
+ case TargetOpcode::G_SADDE: {
+ if (MI.getOperand(1).getReg() == R) {
+ // If we know the result of a compare has the top bits zero, use this
+ // info.
+ if (TL.getBooleanContents(DstTy.isVector(), false) ==
+ TargetLowering::ZeroOrOneBooleanContent &&
+ BitWidth > 1)
+ Known.Zero.setBitsFrom(1);
+ break;
+ }
+
+ assert(MI.getOperand(0).getReg() == R &&
+ "We only compute knownbits for the sum here.");
+ // With [US]ADDE, a carry bit may be added in.
+ KnownBits Carry(1);
+ if (Opcode == TargetOpcode::G_UADDE || Opcode == TargetOpcode::G_SADDE) {
+ computeKnownBitsImpl(MI.getOperand(4).getReg(), Known, DemandedElts,
----------------
RKSimon wrote:
Known -> Carry?
https://github.com/llvm/llvm-project/pull/165497
More information about the llvm-commits
mailing list