Skip to content

Commit b18fb19

Browse files
committed
[ConstraintElim] Add pre-commit tests. NFC.
1 parent 22417ec commit b18fb19

File tree

1 file changed

+132
-0
lines changed
  • llvm/test/Transforms/ConstraintElimination

1 file changed

+132
-0
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s
3+
4+
define i1 @test_decompose_sub_nsw_sgt_nonneg(i32 %x, i32 %y) {
5+
; CHECK-LABEL: define i1 @test_decompose_sub_nsw_sgt_nonneg(
6+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
7+
; CHECK-NEXT: [[ENTRY:.*:]]
8+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[Y]], [[X]]
9+
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SUB]], 10
10+
; CHECK-NEXT: br i1 [[COND]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]]
11+
; CHECK: [[IF_THEN]]:
12+
; CHECK-NEXT: [[RET:%.*]] = icmp slt i32 [[X]], [[Y]]
13+
; CHECK-NEXT: ret i1 [[RET]]
14+
; CHECK: [[IF_ELSE]]:
15+
; CHECK-NEXT: ret i1 true
16+
;
17+
entry:
18+
%sub = sub nsw i32 %y, %x
19+
%cond = icmp sgt i32 %sub, 10
20+
br i1 %cond, label %if.then, label %if.else
21+
22+
if.then:
23+
%ret = icmp slt i32 %x, %y
24+
ret i1 %ret
25+
26+
if.else:
27+
ret i1 true
28+
}
29+
30+
define i1 @test_decompose_sub_nsw_sgt_zero(i32 %x, i32 %y) {
31+
; CHECK-LABEL: define i1 @test_decompose_sub_nsw_sgt_zero(
32+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
33+
; CHECK-NEXT: [[ENTRY:.*:]]
34+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[Y]], [[X]]
35+
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SUB]], 0
36+
; CHECK-NEXT: br i1 [[COND]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]]
37+
; CHECK: [[IF_THEN]]:
38+
; CHECK-NEXT: [[RET:%.*]] = icmp slt i32 [[X]], [[Y]]
39+
; CHECK-NEXT: ret i1 [[RET]]
40+
; CHECK: [[IF_ELSE]]:
41+
; CHECK-NEXT: ret i1 true
42+
;
43+
entry:
44+
%sub = sub nsw i32 %y, %x
45+
%cond = icmp sgt i32 %sub, 0
46+
br i1 %cond, label %if.then, label %if.else
47+
48+
if.then:
49+
%ret = icmp slt i32 %x, %y
50+
ret i1 %ret
51+
52+
if.else:
53+
ret i1 true
54+
}
55+
56+
define i1 @test_decompose_sub_nsw_sgt_zero_inv(i32 %x, i32 %y) {
57+
; CHECK-LABEL: define i1 @test_decompose_sub_nsw_sgt_zero_inv(
58+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
59+
; CHECK-NEXT: [[ENTRY:.*:]]
60+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[Y]], [[X]]
61+
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SUB]], 10
62+
; CHECK-NEXT: br i1 [[COND]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]]
63+
; CHECK: [[IF_THEN]]:
64+
; CHECK-NEXT: [[RET:%.*]] = icmp sge i32 [[X]], [[Y]]
65+
; CHECK-NEXT: ret i1 [[RET]]
66+
; CHECK: [[IF_ELSE]]:
67+
; CHECK-NEXT: ret i1 true
68+
;
69+
entry:
70+
%sub = sub nsw i32 %y, %x
71+
%cond = icmp sgt i32 %sub, 10
72+
br i1 %cond, label %if.then, label %if.else
73+
74+
if.then:
75+
%ret = icmp sge i32 %x, %y
76+
ret i1 %ret
77+
78+
if.else:
79+
ret i1 true
80+
}
81+
82+
define i1 @test_decompose_sub_nonsw_sgt_zero(i32 %x, i32 %y) {
83+
; CHECK-LABEL: define i1 @test_decompose_sub_nonsw_sgt_zero(
84+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
85+
; CHECK-NEXT: [[ENTRY:.*:]]
86+
; CHECK-NEXT: [[SUB:%.*]] = sub i32 [[Y]], [[X]]
87+
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SUB]], 10
88+
; CHECK-NEXT: br i1 [[COND]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]]
89+
; CHECK: [[IF_THEN]]:
90+
; CHECK-NEXT: [[RET:%.*]] = icmp slt i32 [[X]], [[Y]]
91+
; CHECK-NEXT: ret i1 [[RET]]
92+
; CHECK: [[IF_ELSE]]:
93+
; CHECK-NEXT: ret i1 true
94+
;
95+
entry:
96+
%sub = sub i32 %y, %x
97+
%cond = icmp sgt i32 %sub, 10
98+
br i1 %cond, label %if.then, label %if.else
99+
100+
if.then:
101+
%ret = icmp slt i32 %x, %y
102+
ret i1 %ret
103+
104+
if.else:
105+
ret i1 true
106+
}
107+
108+
define i1 @test_decompose_sub_nsw_sgt_neg(i32 %x, i32 %y) {
109+
; CHECK-LABEL: define i1 @test_decompose_sub_nsw_sgt_neg(
110+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
111+
; CHECK-NEXT: [[ENTRY:.*:]]
112+
; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 [[Y]], [[X]]
113+
; CHECK-NEXT: [[COND:%.*]] = icmp sgt i32 [[SUB]], -10
114+
; CHECK-NEXT: br i1 [[COND]], label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]]
115+
; CHECK: [[IF_THEN]]:
116+
; CHECK-NEXT: [[RET:%.*]] = icmp slt i32 [[X]], [[Y]]
117+
; CHECK-NEXT: ret i1 [[RET]]
118+
; CHECK: [[IF_ELSE]]:
119+
; CHECK-NEXT: ret i1 true
120+
;
121+
entry:
122+
%sub = sub nsw i32 %y, %x
123+
%cond = icmp sgt i32 %sub, -10
124+
br i1 %cond, label %if.then, label %if.else
125+
126+
if.then:
127+
%ret = icmp slt i32 %x, %y
128+
ret i1 %ret
129+
130+
if.else:
131+
ret i1 true
132+
}

0 commit comments

Comments
 (0)