Skip to content

Commit 6d79e43

Browse files
committed
[ConstantFolding] Add undef tests for overflow intrinsics; NFC
llvm-svn: 349805
1 parent da1beca commit 6d79e43

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

llvm/test/Transforms/ConstProp/overflow-ops.ll

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ define {i8, i1} @uadd_2() nounwind {
2929
ret {i8, i1} %t
3030
}
3131

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+
3241
;;-----------------------------
3342
;; usub
3443
;;-----------------------------
@@ -49,6 +58,15 @@ define {i8, i1} @usub_2() nounwind {
4958
ret {i8, i1} %t
5059
}
5160

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+
5270
;;-----------------------------
5371
;; umul
5472
;;-----------------------------
@@ -69,6 +87,24 @@ define {i8, i1} @umul_2() nounwind {
6987
ret {i8, i1} %t
7088
}
7189

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+
72108
;;-----------------------------
73109
;; sadd
74110
;;-----------------------------
@@ -113,6 +149,14 @@ define {i8, i1} @sadd_5() nounwind {
113149
ret {i8, i1} %t
114150
}
115151

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+
}
116160

117161
;;-----------------------------
118162
;; ssub
@@ -174,6 +218,15 @@ define {i8, i1} @ssub_5() nounwind {
174218
ret {i8, i1} %t
175219
}
176220

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+
177230
;;-----------------------------
178231
;; smul
179232
;;-----------------------------
@@ -185,3 +238,21 @@ define {i8, i1} @smul_1() nounwind {
185238
%t = call {i8, i1} @llvm.smul.with.overflow.i8(i8 -20, i8 -10)
186239
ret {i8, i1} %t
187240
}
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

Comments
 (0)