@@ -579,7 +579,7 @@ define i1 @umin(i32 %a, i32 %b) {
579579; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i32 [[B]], 20
580580; CHECK-NEXT: br i1 [[CMP2]], label [[B_GUARD:%.*]], label [[OUT]]
581581; CHECK: b_guard:
582- ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp ult i32 [[A]], [[B]]
582+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp samesign ult i32 [[A]], [[B]]
583583; CHECK-NEXT: [[MIN:%.*]] = select i1 [[SEL_CMP]], i32 [[A]], i32 [[B]]
584584; CHECK-NEXT: ret i1 false
585585; CHECK: out:
@@ -612,7 +612,7 @@ define i1 @smin(i32 %a, i32 %b) {
612612; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i32 [[B]], 20
613613; CHECK-NEXT: br i1 [[CMP2]], label [[B_GUARD:%.*]], label [[OUT]]
614614; CHECK: b_guard:
615- ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp ule i32 [[A]], [[B]]
615+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp samesign ule i32 [[A]], [[B]]
616616; CHECK-NEXT: [[MIN:%.*]] = select i1 [[SEL_CMP]], i32 [[A]], i32 [[B]]
617617; CHECK-NEXT: ret i1 false
618618; CHECK: out:
@@ -645,7 +645,7 @@ define i1 @smax(i32 %a, i32 %b) {
645645; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[B]], 20
646646; CHECK-NEXT: br i1 [[CMP2]], label [[B_GUARD:%.*]], label [[OUT]]
647647; CHECK: b_guard:
648- ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp uge i32 [[A]], [[B]]
648+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp samesign uge i32 [[A]], [[B]]
649649; CHECK-NEXT: [[MAX:%.*]] = select i1 [[SEL_CMP]], i32 [[A]], i32 [[B]]
650650; CHECK-NEXT: ret i1 false
651651; CHECK: out:
@@ -678,7 +678,7 @@ define i1 @umax(i32 %a, i32 %b) {
678678; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[B]], 20
679679; CHECK-NEXT: br i1 [[CMP2]], label [[B_GUARD:%.*]], label [[OUT]]
680680; CHECK: b_guard:
681- ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp uge i32 [[A]], [[B]]
681+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp samesign uge i32 [[A]], [[B]]
682682; CHECK-NEXT: [[MAX:%.*]] = select i1 [[SEL_CMP]], i32 [[A]], i32 [[B]]
683683; CHECK-NEXT: ret i1 false
684684; CHECK: out:
@@ -824,7 +824,7 @@ define i1 @clamp_low3(i32 noundef %a) {
824824; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[A]], 5
825825; CHECK-NEXT: br i1 [[CMP]], label [[A_GUARD:%.*]], label [[OUT:%.*]]
826826; CHECK: a_guard:
827- ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp ugt i32 [[A]], 5
827+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp samesign ugt i32 [[A]], 5
828828; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[A]], -1
829829; CHECK-NEXT: [[SEL:%.*]] = select i1 [[SEL_CMP]], i32 [[ADD]], i32 5
830830; CHECK-NEXT: ret i1 false
@@ -852,7 +852,7 @@ define i1 @clamp_low4(i32 noundef %a) {
852852; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[A]], 5
853853; CHECK-NEXT: br i1 [[CMP]], label [[A_GUARD:%.*]], label [[OUT:%.*]]
854854; CHECK: a_guard:
855- ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp ule i32 [[A]], 5
855+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp samesign ule i32 [[A]], 5
856856; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[A]], -1
857857; CHECK-NEXT: [[SEL:%.*]] = select i1 [[SEL_CMP]], i32 5, i32 [[ADD]]
858858; CHECK-NEXT: ret i1 false
@@ -1085,10 +1085,10 @@ define void @abs1(i32 %a, ptr %p) {
10851085; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[A]], 0
10861086; CHECK-NEXT: [[ABS:%.*]] = select i1 [[CMP]], i32 [[SUB]], i32 [[A]]
10871087; CHECK-NEXT: store i1 true, ptr [[P]], align 1
1088- ; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[ABS]], 19
1088+ ; CHECK-NEXT: [[C2:%.*]] = icmp samesign ult i32 [[ABS]], 19
10891089; CHECK-NEXT: store i1 [[C2]], ptr [[P]], align 1
10901090; CHECK-NEXT: store i1 true, ptr [[P]], align 1
1091- ; CHECK-NEXT: [[C4:%.*]] = icmp uge i32 [[ABS]], 1
1091+ ; CHECK-NEXT: [[C4:%.*]] = icmp samesign uge i32 [[ABS]], 1
10921092; CHECK-NEXT: store i1 [[C4]], ptr [[P]], align 1
10931093; CHECK-NEXT: br label [[EXIT]]
10941094; CHECK: exit:
@@ -1131,10 +1131,10 @@ define void @abs2(i32 %a, ptr %p) {
11311131; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[A]], 0
11321132; CHECK-NEXT: [[ABS:%.*]] = select i1 [[CMP]], i32 [[A]], i32 [[SUB]]
11331133; CHECK-NEXT: store i1 true, ptr [[P]], align 1
1134- ; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[ABS]], 19
1134+ ; CHECK-NEXT: [[C2:%.*]] = icmp samesign ult i32 [[ABS]], 19
11351135; CHECK-NEXT: store i1 [[C2]], ptr [[P]], align 1
11361136; CHECK-NEXT: store i1 true, ptr [[P]], align 1
1137- ; CHECK-NEXT: [[C4:%.*]] = icmp uge i32 [[ABS]], 1
1137+ ; CHECK-NEXT: [[C4:%.*]] = icmp samesign uge i32 [[ABS]], 1
11381138; CHECK-NEXT: store i1 [[C4]], ptr [[P]], align 1
11391139; CHECK-NEXT: br label [[EXIT]]
11401140; CHECK: exit:
@@ -1934,7 +1934,7 @@ define void @select_assume(i32 %a, i32 %b, i1 %c, ptr %p) {
19341934; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[B]], 20
19351935; CHECK-NEXT: call void @llvm.assume(i1 [[C2]])
19361936; CHECK-NEXT: [[S:%.*]] = select i1 [[C]], i32 [[A]], i32 [[B]]
1937- ; CHECK-NEXT: [[C3:%.*]] = icmp ult i32 [[S]], 19
1937+ ; CHECK-NEXT: [[C3:%.*]] = icmp samesign ult i32 [[S]], 19
19381938; CHECK-NEXT: store i1 [[C3]], ptr [[P]], align 1
19391939; CHECK-NEXT: store i1 true, ptr [[P]], align 1
19401940; CHECK-NEXT: ret void
@@ -1957,10 +1957,10 @@ define void @xor(i8 %a, ptr %p) {
19571957; CHECK-NEXT: [[A_MASK:%.*]] = and i8 [[A]], 15
19581958; CHECK-NEXT: [[XOR:%.*]] = xor i8 [[A_MASK]], -86
19591959; CHECK-NEXT: store i1 true, ptr [[P]], align 1
1960- ; CHECK-NEXT: [[C2:%.*]] = icmp ugt i8 [[XOR]], -96
1960+ ; CHECK-NEXT: [[C2:%.*]] = icmp samesign ugt i8 [[XOR]], -96
19611961; CHECK-NEXT: store i1 [[C2]], ptr [[P]], align 1
19621962; CHECK-NEXT: store i1 true, ptr [[P]], align 1
1963- ; CHECK-NEXT: [[C4:%.*]] = icmp ult i8 [[XOR]], -81
1963+ ; CHECK-NEXT: [[C4:%.*]] = icmp samesign ult i8 [[XOR]], -81
19641964; CHECK-NEXT: store i1 [[C4]], ptr [[P]], align 1
19651965; CHECK-NEXT: ret void
19661966;
0 commit comments