Skip to content

Commit 19610f5

Browse files
committed
[InstSimplify] Add constant folding tests for UCMP/SCMP intrinsics
1 parent 0cd2bf3 commit 19610f5

File tree

1 file changed

+92
-0
lines changed
  • llvm/test/Transforms/InstSimplify

1 file changed

+92
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3+
4+
define i8 @scmp_lt() {
5+
; CHECK-LABEL: define i8 @scmp_lt() {
6+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.scmp.i8.i32(i32 -7, i32 3)
7+
; CHECK-NEXT: ret i8 [[TMP1]]
8+
;
9+
%1 = call i8 @llvm.scmp(i32 -7, i32 3)
10+
ret i8 %1
11+
}
12+
13+
define i8 @scmp_eq() {
14+
; CHECK-LABEL: define i8 @scmp_eq() {
15+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.scmp.i8.i32(i32 2, i32 2)
16+
; CHECK-NEXT: ret i8 [[TMP1]]
17+
;
18+
%1 = call i8 @llvm.scmp(i32 2, i32 2)
19+
ret i8 %1
20+
}
21+
22+
define i8 @scmp_gt() {
23+
; CHECK-LABEL: define i8 @scmp_gt() {
24+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.scmp.i8.i32(i32 2, i32 -7)
25+
; CHECK-NEXT: ret i8 [[TMP1]]
26+
;
27+
%1 = call i8 @llvm.scmp(i32 2, i32 -7)
28+
ret i8 %1
29+
}
30+
31+
define i8 @ucmp_lt() {
32+
; CHECK-LABEL: define i8 @ucmp_lt() {
33+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 7, i32 12)
34+
; CHECK-NEXT: ret i8 [[TMP1]]
35+
;
36+
%1 = call i8 @llvm.ucmp(i32 7, i32 12)
37+
ret i8 %1
38+
}
39+
40+
define i2 @ucmp_eq() {
41+
; CHECK-LABEL: define i2 @ucmp_eq() {
42+
; CHECK-NEXT: [[TMP1:%.*]] = call i2 @llvm.ucmp.i2.i32(i32 12, i32 12)
43+
; CHECK-NEXT: ret i2 [[TMP1]]
44+
;
45+
%1 = call i2 @llvm.ucmp(i32 12, i32 12)
46+
ret i2 %1
47+
}
48+
49+
define i100 @ucmp_gt() {
50+
; CHECK-LABEL: define i100 @ucmp_gt() {
51+
; CHECK-NEXT: [[TMP1:%.*]] = call i100 @llvm.ucmp.i100.i32(i32 7, i32 3)
52+
; CHECK-NEXT: ret i100 [[TMP1]]
53+
;
54+
%1 = call i100 @llvm.ucmp(i32 7, i32 3)
55+
ret i100 %1
56+
}
57+
58+
define i8 @ucmp_poison() {
59+
; CHECK-LABEL: define i8 @ucmp_poison() {
60+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 poison, i32 5)
61+
; CHECK-NEXT: ret i8 [[TMP1]]
62+
;
63+
%1 = call i8 @llvm.ucmp(i32 poison, i32 5)
64+
ret i8 %1
65+
}
66+
67+
define i8 @scmp_undef() {
68+
; CHECK-LABEL: define i8 @scmp_undef() {
69+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.scmp.i8.i32(i32 undef, i32 -12)
70+
; CHECK-NEXT: ret i8 [[TMP1]]
71+
;
72+
%1 = call i8 @llvm.scmp(i32 undef, i32 -12)
73+
ret i8 %1
74+
}
75+
76+
define <4 x i8> @ucmp_lt_splat() {
77+
; CHECK-LABEL: define <4 x i8> @ucmp_lt_splat() {
78+
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i8> @llvm.ucmp.v4i8.v4i32(<4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32> <i32 3, i32 3, i32 3, i32 3>)
79+
; CHECK-NEXT: ret <4 x i8> [[TMP1]]
80+
;
81+
%1 = call <4 x i8> @llvm.ucmp(<4 x i32> splat(i32 1), <4 x i32> splat(i32 3))
82+
ret <4 x i8> %1
83+
}
84+
85+
define <4 x i8> @scmp_nonsplat() {
86+
; CHECK-LABEL: define <4 x i8> @scmp_nonsplat() {
87+
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i8> @llvm.scmp.v4i8.v4i32(<4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32> <i32 -1, i32 1, i32 -2, i32 4>)
88+
; CHECK-NEXT: ret <4 x i8> [[TMP1]]
89+
;
90+
%1 = call <4 x i8> @llvm.scmp(<4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32> <i32 -1, i32 1, i32 -2, i32 4>)
91+
ret <4 x i8> %1
92+
}

0 commit comments

Comments
 (0)