xref: /aosp_15_r20/external/llvm/test/Transforms/InstCombine/zext-bool-add-sub.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; rdar://11748024
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine i32 @a(i1 zeroext %x, i1 zeroext %y) {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @a(
7*9880d681SAndroid Build Coastguard Worker; CHECK: [[TMP1:%.*]] = sext i1 %y to i32
8*9880d681SAndroid Build Coastguard Worker; CHECK: [[TMP2:%.*]] = select i1 %x, i32 2, i32 1
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add nsw i32 [[TMP2]], [[TMP1]]
10*9880d681SAndroid Build Coastguard Worker  %conv = zext i1 %x to i32
11*9880d681SAndroid Build Coastguard Worker  %conv3 = zext i1 %y to i32
12*9880d681SAndroid Build Coastguard Worker  %conv3.neg = sub i32 0, %conv3
13*9880d681SAndroid Build Coastguard Worker  %sub = add i32 %conv, 1
14*9880d681SAndroid Build Coastguard Worker  %add = add i32 %sub, %conv3.neg
15*9880d681SAndroid Build Coastguard Worker  ret i32 %add
16*9880d681SAndroid Build Coastguard Worker}
17