1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -instcombine -S | FileCheck %s 3 4define i32 @PR38915(i32 %x, i32 %y, i32 %z) { 5; CHECK-LABEL: @PR38915( 6; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[X:%.*]], -1 7; CHECK-NEXT: [[TMP2:%.*]] = add i32 [[Y:%.*]], -1 8; CHECK-NEXT: [[TMP3:%.*]] = icmp slt i32 [[TMP1]], [[TMP2]] 9; CHECK-NEXT: [[M1N:%.*]] = select i1 [[TMP3]], i32 [[TMP1]], i32 [[TMP2]] 10; CHECK-NEXT: [[C2:%.*]] = icmp sgt i32 [[M1N]], [[Z:%.*]] 11; CHECK-NEXT: [[M2:%.*]] = select i1 [[C2]], i32 [[M1N]], i32 [[Z]] 12; CHECK-NEXT: [[M2N:%.*]] = xor i32 [[M2]], -1 13; CHECK-NEXT: ret i32 [[M2N]] 14; 15 %xn = sub i32 0, %x 16 %yn = sub i32 0, %y 17 %c1 = icmp sgt i32 %xn, %yn 18 %m1 = select i1 %c1, i32 %xn, i32 %yn 19 %m1n = xor i32 %m1, -1 20 %c2 = icmp sgt i32 %m1n, %z 21 %m2 = select i1 %c2, i32 %m1n, i32 %z 22 %m2n = xor i32 %m2, -1 23 ret i32 %m2n 24} 25