1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1
2
; RUN: opt < %s -constprop -S | FileCheck %s
2
3
3
-
4
4
declare {i8 , i1 } @llvm.uadd.with.overflow.i8 (i8 , i8 )
5
5
declare {i8 , i1 } @llvm.usub.with.overflow.i8 (i8 , i8 )
6
6
declare {i8 , i1 } @llvm.umul.with.overflow.i8 (i8 , i8 )
@@ -14,114 +14,103 @@ declare {i8, i1} @llvm.smul.with.overflow.i8(i8, i8)
14
14
;;-----------------------------
15
15
16
16
define {i8 , i1 } @uadd_1 () nounwind {
17
- entry:
17
+ ; CHECK-LABEL: @uadd_1(
18
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -114, i1 false }
19
+ ;
18
20
%t = call {i8 , i1 } @llvm.uadd.with.overflow.i8 (i8 42 , i8 100 )
19
21
ret {i8 , i1 } %t
20
-
21
- ; CHECK-LABEL: @uadd_1(
22
- ; CHECK: ret { i8, i1 } { i8 -114, i1 false }
23
22
}
24
23
25
24
define {i8 , i1 } @uadd_2 () nounwind {
26
- entry:
25
+ ; CHECK-LABEL: @uadd_2(
26
+ ; CHECK-NEXT: ret { i8, i1 } { i8 6, i1 true }
27
+ ;
27
28
%t = call {i8 , i1 } @llvm.uadd.with.overflow.i8 (i8 142 , i8 120 )
28
29
ret {i8 , i1 } %t
29
-
30
- ; CHECK-LABEL: @uadd_2(
31
- ; CHECK: ret { i8, i1 } { i8 6, i1 true }
32
30
}
33
31
34
32
;;-----------------------------
35
33
;; usub
36
34
;;-----------------------------
37
35
38
36
define {i8 , i1 } @usub_1 () nounwind {
39
- entry:
37
+ ; CHECK-LABEL: @usub_1(
38
+ ; CHECK-NEXT: ret { i8, i1 } { i8 2, i1 false }
39
+ ;
40
40
%t = call {i8 , i1 } @llvm.usub.with.overflow.i8 (i8 4 , i8 2 )
41
41
ret {i8 , i1 } %t
42
-
43
- ; CHECK-LABEL: @usub_1(
44
- ; CHECK: ret { i8, i1 } { i8 2, i1 false }
45
42
}
46
43
47
44
define {i8 , i1 } @usub_2 () nounwind {
48
- entry:
45
+ ; CHECK-LABEL: @usub_2(
46
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -2, i1 true }
47
+ ;
49
48
%t = call {i8 , i1 } @llvm.usub.with.overflow.i8 (i8 4 , i8 6 )
50
49
ret {i8 , i1 } %t
51
-
52
- ; CHECK-LABEL: @usub_2(
53
- ; CHECK: ret { i8, i1 } { i8 -2, i1 true }
54
50
}
55
51
56
52
;;-----------------------------
57
53
;; umul
58
54
;;-----------------------------
59
55
60
56
define {i8 , i1 } @umul_1 () nounwind {
61
- entry:
57
+ ; CHECK-LABEL: @umul_1(
58
+ ; CHECK-NEXT: ret { i8, i1 } { i8 44, i1 true }
59
+ ;
62
60
%t = call {i8 , i1 } @llvm.umul.with.overflow.i8 (i8 100 , i8 3 )
63
61
ret {i8 , i1 } %t
64
-
65
- ; CHECK-LABEL: @umul_1(
66
- ; CHECK: ret { i8, i1 } { i8 44, i1 true }
67
62
}
68
63
69
64
define {i8 , i1 } @umul_2 () nounwind {
70
- entry:
65
+ ; CHECK-LABEL: @umul_2(
66
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -56, i1 false }
67
+ ;
71
68
%t = call {i8 , i1 } @llvm.umul.with.overflow.i8 (i8 100 , i8 2 )
72
69
ret {i8 , i1 } %t
73
-
74
- ; CHECK-LABEL: @umul_2(
75
- ; CHECK: ret { i8, i1 } { i8 -56, i1 false }
76
70
}
77
71
78
72
;;-----------------------------
79
73
;; sadd
80
74
;;-----------------------------
81
75
82
76
define {i8 , i1 } @sadd_1 () nounwind {
83
- entry:
77
+ ; CHECK-LABEL: @sadd_1(
78
+ ; CHECK-NEXT: ret { i8, i1 } { i8 44, i1 false }
79
+ ;
84
80
%t = call {i8 , i1 } @llvm.sadd.with.overflow.i8 (i8 42 , i8 2 )
85
81
ret {i8 , i1 } %t
86
-
87
- ; CHECK-LABEL: @sadd_1(
88
- ; CHECK: ret { i8, i1 } { i8 44, i1 false }
89
82
}
90
83
91
84
define {i8 , i1 } @sadd_2 () nounwind {
92
- entry:
85
+ ; CHECK-LABEL: @sadd_2(
86
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -126, i1 true }
87
+ ;
93
88
%t = call {i8 , i1 } @llvm.sadd.with.overflow.i8 (i8 120 , i8 10 )
94
89
ret {i8 , i1 } %t
95
-
96
- ; CHECK-LABEL: @sadd_2(
97
- ; CHECK: ret { i8, i1 } { i8 -126, i1 true }
98
90
}
99
91
100
92
define {i8 , i1 } @sadd_3 () nounwind {
101
- entry:
93
+ ; CHECK-LABEL: @sadd_3(
94
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -110, i1 false }
95
+ ;
102
96
%t = call {i8 , i1 } @llvm.sadd.with.overflow.i8 (i8 -120 , i8 10 )
103
97
ret {i8 , i1 } %t
104
-
105
- ; CHECK-LABEL: @sadd_3(
106
- ; CHECK: ret { i8, i1 } { i8 -110, i1 false }
107
98
}
108
99
109
100
define {i8 , i1 } @sadd_4 () nounwind {
110
- entry:
101
+ ; CHECK-LABEL: @sadd_4(
102
+ ; CHECK-NEXT: ret { i8, i1 } { i8 126, i1 true }
103
+ ;
111
104
%t = call {i8 , i1 } @llvm.sadd.with.overflow.i8 (i8 -120 , i8 -10 )
112
105
ret {i8 , i1 } %t
113
-
114
- ; CHECK-LABEL: @sadd_4(
115
- ; CHECK: ret { i8, i1 } { i8 126, i1 true }
116
106
}
117
107
118
108
define {i8 , i1 } @sadd_5 () nounwind {
119
- entry:
109
+ ; CHECK-LABEL: @sadd_5(
110
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -8, i1 false }
111
+ ;
120
112
%t = call {i8 , i1 } @llvm.sadd.with.overflow.i8 (i8 2 , i8 -10 )
121
113
ret {i8 , i1 } %t
122
-
123
- ; CHECK-LABEL: @sadd_5(
124
- ; CHECK: ret { i8, i1 } { i8 -8, i1 false }
125
114
}
126
115
127
116
@@ -130,78 +119,69 @@ entry:
130
119
;;-----------------------------
131
120
132
121
define {i8 , i1 } @ssub_1 () nounwind {
133
- entry:
122
+ ; CHECK-LABEL: @ssub_1(
123
+ ; CHECK-NEXT: ret { i8, i1 } { i8 2, i1 false }
124
+ ;
134
125
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 4 , i8 2 )
135
126
ret {i8 , i1 } %t
136
-
137
- ; CHECK-LABEL: @ssub_1(
138
- ; CHECK: ret { i8, i1 } { i8 2, i1 false }
139
127
}
140
128
141
129
define {i8 , i1 } @ssub_2 () nounwind {
142
- entry:
130
+ ; CHECK-LABEL: @ssub_2(
131
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -2, i1 false }
132
+ ;
143
133
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 4 , i8 6 )
144
134
ret {i8 , i1 } %t
145
-
146
- ; CHECK-LABEL: @ssub_2(
147
- ; CHECK: ret { i8, i1 } { i8 -2, i1 false }
148
135
}
149
136
150
137
define {i8 , i1 } @ssub_3 () nounwind {
151
- entry:
138
+ ; CHECK-LABEL: @ssub_3(
139
+ ; CHECK-NEXT: ret { i8, i1 } { i8 126, i1 true }
140
+ ;
152
141
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 -10 , i8 120 )
153
142
ret {i8 , i1 } %t
154
-
155
- ; CHECK-LABEL: @ssub_3(
156
- ; CHECK: ret { i8, i1 } { i8 126, i1 true }
157
143
}
158
144
159
145
define {i8 , i1 } @ssub_3b () nounwind {
160
- entry:
146
+ ; CHECK-LABEL: @ssub_3b(
147
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -20, i1 false }
148
+ ;
161
149
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 -10 , i8 10 )
162
150
ret {i8 , i1 } %t
163
-
164
- ; CHECK-LABEL: @ssub_3b(
165
- ; CHECK: ret { i8, i1 } { i8 -20, i1 false }
166
151
}
167
152
168
153
define {i8 , i1 } @ssub_4 () nounwind {
169
- entry:
154
+ ; CHECK-LABEL: @ssub_4(
155
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -126, i1 true }
156
+ ;
170
157
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 120 , i8 -10 )
171
158
ret {i8 , i1 } %t
172
-
173
- ; CHECK-LABEL: @ssub_4(
174
- ; CHECK: ret { i8, i1 } { i8 -126, i1 true }
175
159
}
176
160
177
161
define {i8 , i1 } @ssub_4b () nounwind {
178
- entry:
162
+ ; CHECK-LABEL: @ssub_4b(
163
+ ; CHECK-NEXT: ret { i8, i1 } { i8 30, i1 false }
164
+ ;
179
165
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 20 , i8 -10 )
180
166
ret {i8 , i1 } %t
181
-
182
- ; CHECK-LABEL: @ssub_4b(
183
- ; CHECK: ret { i8, i1 } { i8 30, i1 false }
184
167
}
185
168
186
169
define {i8 , i1 } @ssub_5 () nounwind {
187
- entry:
170
+ ; CHECK-LABEL: @ssub_5(
171
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -10, i1 false }
172
+ ;
188
173
%t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 -20 , i8 -10 )
189
174
ret {i8 , i1 } %t
190
-
191
- ; CHECK-LABEL: @ssub_5(
192
- ; CHECK: ret { i8, i1 } { i8 -10, i1 false }
193
175
}
194
176
195
177
;;-----------------------------
196
178
;; smul
197
179
;;-----------------------------
198
180
199
- ; rdar://8501501
200
181
define {i8 , i1 } @smul_1 () nounwind {
201
- entry:
182
+ ; CHECK-LABEL: @smul_1(
183
+ ; CHECK-NEXT: ret { i8, i1 } { i8 -56, i1 true }
184
+ ;
202
185
%t = call {i8 , i1 } @llvm.smul.with.overflow.i8 (i8 -20 , i8 -10 )
203
186
ret {i8 , i1 } %t
204
-
205
- ; CHECK-LABEL: @smul_1(
206
- ; CHECK: ret { i8, i1 } { i8 -56, i1 true }
207
187
}
0 commit comments