@@ -29,6 +29,15 @@ define {i8, i1} @uadd_2() nounwind {
29
29
ret {i8 , i1 } %t
30
30
}
31
31
32
+ define {i8 , i1 } @uadd_undef () nounwind {
33
+ ; CHECK-LABEL: @uadd_undef(
34
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.uadd.with.overflow.i8(i8 -114, i8 undef)
35
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
36
+ ;
37
+ %t = call {i8 , i1 } @llvm.uadd.with.overflow.i8 (i8 142 , i8 undef )
38
+ ret {i8 , i1 } %t
39
+ }
40
+
32
41
;;-----------------------------
33
42
;; usub
34
43
;;-----------------------------
@@ -49,6 +58,15 @@ define {i8, i1} @usub_2() nounwind {
49
58
ret {i8 , i1 } %t
50
59
}
51
60
61
+ define {i8 , i1 } @usub_undef () nounwind {
62
+ ; CHECK-LABEL: @usub_undef(
63
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 4, i8 undef)
64
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
65
+ ;
66
+ %t = call {i8 , i1 } @llvm.usub.with.overflow.i8 (i8 4 , i8 undef )
67
+ ret {i8 , i1 } %t
68
+ }
69
+
52
70
;;-----------------------------
53
71
;; umul
54
72
;;-----------------------------
@@ -69,6 +87,24 @@ define {i8, i1} @umul_2() nounwind {
69
87
ret {i8 , i1 } %t
70
88
}
71
89
90
+ define {i8 , i1 } @umul_undef () nounwind {
91
+ ; CHECK-LABEL: @umul_undef(
92
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.umul.with.overflow.i8(i8 undef, i8 2)
93
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
94
+ ;
95
+ %t = call {i8 , i1 } @llvm.umul.with.overflow.i8 (i8 undef , i8 2 )
96
+ ret {i8 , i1 } %t
97
+ }
98
+
99
+ define {i8 , i1 } @umul_both_undef () nounwind {
100
+ ; CHECK-LABEL: @umul_both_undef(
101
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.umul.with.overflow.i8(i8 undef, i8 undef)
102
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
103
+ ;
104
+ %t = call {i8 , i1 } @llvm.umul.with.overflow.i8 (i8 undef , i8 undef )
105
+ ret {i8 , i1 } %t
106
+ }
107
+
72
108
;;-----------------------------
73
109
;; sadd
74
110
;;-----------------------------
@@ -113,6 +149,14 @@ define {i8, i1} @sadd_5() nounwind {
113
149
ret {i8 , i1 } %t
114
150
}
115
151
152
+ define {i8 , i1 } @sadd_undef () nounwind {
153
+ ; CHECK-LABEL: @sadd_undef(
154
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.sadd.with.overflow.i8(i8 undef, i8 -10)
155
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
156
+ ;
157
+ %t = call {i8 , i1 } @llvm.sadd.with.overflow.i8 (i8 undef , i8 -10 )
158
+ ret {i8 , i1 } %t
159
+ }
116
160
117
161
;;-----------------------------
118
162
;; ssub
@@ -174,6 +218,15 @@ define {i8, i1} @ssub_5() nounwind {
174
218
ret {i8 , i1 } %t
175
219
}
176
220
221
+ define {i8 , i1 } @ssub_undef () nounwind {
222
+ ; CHECK-LABEL: @ssub_undef(
223
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.ssub.with.overflow.i8(i8 undef, i8 -10)
224
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
225
+ ;
226
+ %t = call {i8 , i1 } @llvm.ssub.with.overflow.i8 (i8 undef , i8 -10 )
227
+ ret {i8 , i1 } %t
228
+ }
229
+
177
230
;;-----------------------------
178
231
;; smul
179
232
;;-----------------------------
@@ -185,3 +238,21 @@ define {i8, i1} @smul_1() nounwind {
185
238
%t = call {i8 , i1 } @llvm.smul.with.overflow.i8 (i8 -20 , i8 -10 )
186
239
ret {i8 , i1 } %t
187
240
}
241
+
242
+ define {i8 , i1 } @smul_undef () nounwind {
243
+ ; CHECK-LABEL: @smul_undef(
244
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.smul.with.overflow.i8(i8 -20, i8 undef)
245
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
246
+ ;
247
+ %t = call {i8 , i1 } @llvm.smul.with.overflow.i8 (i8 -20 , i8 undef )
248
+ ret {i8 , i1 } %t
249
+ }
250
+
251
+ define {i8 , i1 } @smul_both_undef () nounwind {
252
+ ; CHECK-LABEL: @smul_both_undef(
253
+ ; CHECK-NEXT: [[T:%.*]] = call { i8, i1 } @llvm.smul.with.overflow.i8(i8 undef, i8 undef)
254
+ ; CHECK-NEXT: ret { i8, i1 } [[T]]
255
+ ;
256
+ %t = call {i8 , i1 } @llvm.smul.with.overflow.i8 (i8 undef , i8 undef )
257
+ ret {i8 , i1 } %t
258
+ }
0 commit comments