; PR14708
; CHECK-LABEL: @test69(
-; CHECK: %1 = and i32 %c, -33
-; CHECK: %2 = icmp eq i32 %1, 65
+; CHECK: %1 = or i32 %c, 32
+; CHECK: %2 = icmp eq i32 %1, 97
; CHECK: ret i1 %2
define i1 @test69(i32 %c) nounwind uwtable {
%1 = icmp eq i32 %c, 97
; CHECK-LABEL: @cmp_sgt_rhs_dec
; CHECK-NOT: sub
-; CHECK: icmp sge
+; CHECK: icmp sge i32 %conv, %i
define i1 @cmp_sgt_rhs_dec(float %x, i32 %i) {
%conv = fptosi float %x to i32
%dec = sub nsw i32 %i, 1
; CHECK-LABEL: @cmp_sle_rhs_dec
; CHECK-NOT: sub
-; CHECK: icmp slt
+; CHECK: icmp slt i32 %conv, %i
define i1 @cmp_sle_rhs_dec(float %x, i32 %i) {
%conv = fptosi float %x to i32
%dec = sub nsw i32 %i, 1
; CHECK-LABEL: @cmp_sge_rhs_inc
; CHECK-NOT: add
-; CHECK: icmp sgt
+; CHECK: icmp sgt i32 %conv, %i
define i1 @cmp_sge_rhs_inc(float %x, i32 %i) {
%conv = fptosi float %x to i32
%inc = add nsw i32 %i, 1
; CHECK-LABEL: @cmp_slt_rhs_inc
; CHECK-NOT: add
-; CHECK: icmp sle
+; CHECK: icmp sle i32 %conv, %i
define i1 @cmp_slt_rhs_inc(float %x, i32 %i) {
%conv = fptosi float %x to i32
%inc = add nsw i32 %i, 1
%cmp = icmp slt i32 %conv, %inc
ret i1 %cmp
}
+
+; CHECK-LABEL: @PR26407
+; CHECK-NEXT: %[[addx:.*]] = add i32 %x, 2147483647
+; CHECK-NEXT: %[[addy:.*]] = add i32 %y, 2147483647
+; CHECK-NEXT: %[[cmp:.*]] = icmp uge i32 %[[addx]], %[[addy]]
+; CHECK-NEXT: ret i1 %[[cmp]]
+define i1 @PR26407(i32 %x, i32 %y) {
+ %addx = add i32 %x, 2147483647
+ %addy = add i32 %y, 2147483647
+ %cmp = icmp uge i32 %addx, %addy
+ ret i1 %cmp
+}