6
6
7
7
; (x0 < x1) && (x2 > x3)
8
8
define i32 @cmp_and2 (i32 %0 , i32 %1 , i32 %2 , i32 %3 ) {
9
- ; CHECK-LABEL: cmp_and2:
10
- ; CHECK: // %bb.0:
11
- ; CHECK-NEXT: cmp w0, w1
12
- ; CHECK-NEXT: cset w8, lo
13
- ; CHECK-NEXT: cmp w2, w3
14
- ; CHECK-NEXT: cset w9, hi
15
- ; CHECK-NEXT: and w0, w8, w9
16
- ; CHECK-NEXT: ret
9
+ ; SDISEL-LABEL: cmp_and2:
10
+ ; SDISEL: // %bb.0:
11
+ ; SDISEL-NEXT: cmp w0, w1
12
+ ; SDISEL-NEXT: ccmp w2, w3, #0, lo
13
+ ; SDISEL-NEXT: cset w0, hi
14
+ ; SDISEL-NEXT: ret
15
+ ;
16
+ ; GISEL-LABEL: cmp_and2:
17
+ ; GISEL: // %bb.0:
18
+ ; GISEL-NEXT: cmp w0, w1
19
+ ; GISEL-NEXT: cset w8, lo
20
+ ; GISEL-NEXT: cmp w2, w3
21
+ ; GISEL-NEXT: cset w9, hi
22
+ ; GISEL-NEXT: and w0, w8, w9
23
+ ; GISEL-NEXT: ret
17
24
%5 = icmp ult i32 %0 , %1
18
25
%6 = icmp ugt i32 %2 , %3
19
26
%7 = select i1 %5 , i1 %6 , i1 false
@@ -23,17 +30,25 @@ define i32 @cmp_and2(i32 %0, i32 %1, i32 %2, i32 %3) {
23
30
24
31
; (x0 < x1) && (x2 > x3) && (x4 != x5)
25
32
define i32 @cmp_and3 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 ) {
26
- ; CHECK-LABEL: cmp_and3:
27
- ; CHECK: // %bb.0:
28
- ; CHECK-NEXT: cmp w0, w1
29
- ; CHECK-NEXT: cset w8, lo
30
- ; CHECK-NEXT: cmp w2, w3
31
- ; CHECK-NEXT: cset w9, hi
32
- ; CHECK-NEXT: cmp w4, w5
33
- ; CHECK-NEXT: and w8, w8, w9
34
- ; CHECK-NEXT: cset w9, ne
35
- ; CHECK-NEXT: and w0, w8, w9
36
- ; CHECK-NEXT: ret
33
+ ; SDISEL-LABEL: cmp_and3:
34
+ ; SDISEL: // %bb.0:
35
+ ; SDISEL-NEXT: cmp w0, w1
36
+ ; SDISEL-NEXT: ccmp w2, w3, #0, lo
37
+ ; SDISEL-NEXT: ccmp w4, w5, #4, hi
38
+ ; SDISEL-NEXT: cset w0, ne
39
+ ; SDISEL-NEXT: ret
40
+ ;
41
+ ; GISEL-LABEL: cmp_and3:
42
+ ; GISEL: // %bb.0:
43
+ ; GISEL-NEXT: cmp w0, w1
44
+ ; GISEL-NEXT: cset w8, lo
45
+ ; GISEL-NEXT: cmp w2, w3
46
+ ; GISEL-NEXT: cset w9, hi
47
+ ; GISEL-NEXT: cmp w4, w5
48
+ ; GISEL-NEXT: and w8, w8, w9
49
+ ; GISEL-NEXT: cset w9, ne
50
+ ; GISEL-NEXT: and w0, w8, w9
51
+ ; GISEL-NEXT: ret
37
52
%7 = icmp ult i32 %0 , %1
38
53
%8 = icmp ugt i32 %2 , %3
39
54
%9 = select i1 %7 , i1 %8 , i1 false
@@ -45,20 +60,29 @@ define i32 @cmp_and3(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
45
60
46
61
; (x0 < x1) && (x2 > x3) && (x4 != x5) && (x6 == x7)
47
62
define i32 @cmp_and4 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 , i32 %6 , i32 %7 ) {
48
- ; CHECK-LABEL: cmp_and4:
49
- ; CHECK: // %bb.0:
50
- ; CHECK-NEXT: cmp w2, w3
51
- ; CHECK-NEXT: cset w8, hi
52
- ; CHECK-NEXT: cmp w0, w1
53
- ; CHECK-NEXT: cset w9, lo
54
- ; CHECK-NEXT: cmp w4, w5
55
- ; CHECK-NEXT: cset w10, ne
56
- ; CHECK-NEXT: cmp w6, w7
57
- ; CHECK-NEXT: and w8, w8, w9
58
- ; CHECK-NEXT: cset w11, eq
59
- ; CHECK-NEXT: and w9, w10, w11
60
- ; CHECK-NEXT: and w0, w8, w9
61
- ; CHECK-NEXT: ret
63
+ ; SDISEL-LABEL: cmp_and4:
64
+ ; SDISEL: // %bb.0:
65
+ ; SDISEL-NEXT: cmp w2, w3
66
+ ; SDISEL-NEXT: ccmp w0, w1, #2, hi
67
+ ; SDISEL-NEXT: ccmp w4, w5, #4, lo
68
+ ; SDISEL-NEXT: ccmp w6, w7, #0, ne
69
+ ; SDISEL-NEXT: cset w0, eq
70
+ ; SDISEL-NEXT: ret
71
+ ;
72
+ ; GISEL-LABEL: cmp_and4:
73
+ ; GISEL: // %bb.0:
74
+ ; GISEL-NEXT: cmp w2, w3
75
+ ; GISEL-NEXT: cset w8, hi
76
+ ; GISEL-NEXT: cmp w0, w1
77
+ ; GISEL-NEXT: cset w9, lo
78
+ ; GISEL-NEXT: cmp w4, w5
79
+ ; GISEL-NEXT: cset w10, ne
80
+ ; GISEL-NEXT: cmp w6, w7
81
+ ; GISEL-NEXT: and w8, w8, w9
82
+ ; GISEL-NEXT: cset w11, eq
83
+ ; GISEL-NEXT: and w9, w10, w11
84
+ ; GISEL-NEXT: and w0, w8, w9
85
+ ; GISEL-NEXT: ret
62
86
%9 = icmp ugt i32 %2 , %3
63
87
%10 = icmp ult i32 %0 , %1
64
88
%11 = select i1 %9 , i1 %10 , i1 false
@@ -72,15 +96,22 @@ define i32 @cmp_and4(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32
72
96
73
97
; (x0 < x1) || (x2 > x3)
74
98
define i32 @cmp_or2 (i32 %0 , i32 %1 , i32 %2 , i32 %3 ) {
75
- ; CHECK-LABEL: cmp_or2:
76
- ; CHECK: // %bb.0:
77
- ; CHECK-NEXT: cmp w0, w1
78
- ; CHECK-NEXT: cset w8, lo
79
- ; CHECK-NEXT: cmp w2, w3
80
- ; CHECK-NEXT: cset w9, ne
81
- ; CHECK-NEXT: orr w8, w8, w9
82
- ; CHECK-NEXT: and w0, w8, #0x1
83
- ; CHECK-NEXT: ret
99
+ ; SDISEL-LABEL: cmp_or2:
100
+ ; SDISEL: // %bb.0:
101
+ ; SDISEL-NEXT: cmp w0, w1
102
+ ; SDISEL-NEXT: ccmp w2, w3, #0, hs
103
+ ; SDISEL-NEXT: cset w0, ne
104
+ ; SDISEL-NEXT: ret
105
+ ;
106
+ ; GISEL-LABEL: cmp_or2:
107
+ ; GISEL: // %bb.0:
108
+ ; GISEL-NEXT: cmp w0, w1
109
+ ; GISEL-NEXT: cset w8, lo
110
+ ; GISEL-NEXT: cmp w2, w3
111
+ ; GISEL-NEXT: cset w9, ne
112
+ ; GISEL-NEXT: orr w8, w8, w9
113
+ ; GISEL-NEXT: and w0, w8, #0x1
114
+ ; GISEL-NEXT: ret
84
115
%5 = icmp ult i32 %0 , %1
85
116
%6 = icmp ne i32 %2 , %3
86
117
%7 = select i1 %5 , i1 true , i1 %6
@@ -90,18 +121,26 @@ define i32 @cmp_or2(i32 %0, i32 %1, i32 %2, i32 %3) {
90
121
91
122
; (x0 < x1) || (x2 > x3) || (x4 != x5)
92
123
define i32 @cmp_or3 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 ) {
93
- ; CHECK-LABEL: cmp_or3:
94
- ; CHECK: // %bb.0:
95
- ; CHECK-NEXT: cmp w0, w1
96
- ; CHECK-NEXT: cset w8, lo
97
- ; CHECK-NEXT: cmp w2, w3
98
- ; CHECK-NEXT: cset w9, hi
99
- ; CHECK-NEXT: cmp w4, w5
100
- ; CHECK-NEXT: orr w8, w8, w9
101
- ; CHECK-NEXT: cset w9, ne
102
- ; CHECK-NEXT: orr w8, w8, w9
103
- ; CHECK-NEXT: and w0, w8, #0x1
104
- ; CHECK-NEXT: ret
124
+ ; SDISEL-LABEL: cmp_or3:
125
+ ; SDISEL: // %bb.0:
126
+ ; SDISEL-NEXT: cmp w0, w1
127
+ ; SDISEL-NEXT: ccmp w2, w3, #2, hs
128
+ ; SDISEL-NEXT: ccmp w4, w5, #0, ls
129
+ ; SDISEL-NEXT: cset w0, ne
130
+ ; SDISEL-NEXT: ret
131
+ ;
132
+ ; GISEL-LABEL: cmp_or3:
133
+ ; GISEL: // %bb.0:
134
+ ; GISEL-NEXT: cmp w0, w1
135
+ ; GISEL-NEXT: cset w8, lo
136
+ ; GISEL-NEXT: cmp w2, w3
137
+ ; GISEL-NEXT: cset w9, hi
138
+ ; GISEL-NEXT: cmp w4, w5
139
+ ; GISEL-NEXT: orr w8, w8, w9
140
+ ; GISEL-NEXT: cset w9, ne
141
+ ; GISEL-NEXT: orr w8, w8, w9
142
+ ; GISEL-NEXT: and w0, w8, #0x1
143
+ ; GISEL-NEXT: ret
105
144
%7 = icmp ult i32 %0 , %1
106
145
%8 = icmp ugt i32 %2 , %3
107
146
%9 = select i1 %7 , i1 true , i1 %8
@@ -113,21 +152,30 @@ define i32 @cmp_or3(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
113
152
114
153
; (x0 < x1) || (x2 > x3) || (x4 != x5) || (x6 == x7)
115
154
define i32 @cmp_or4 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 , i32 %6 , i32 %7 ) {
116
- ; CHECK-LABEL: cmp_or4:
117
- ; CHECK: // %bb.0:
118
- ; CHECK-NEXT: cmp w0, w1
119
- ; CHECK-NEXT: cset w8, lo
120
- ; CHECK-NEXT: cmp w2, w3
121
- ; CHECK-NEXT: cset w9, hi
122
- ; CHECK-NEXT: cmp w4, w5
123
- ; CHECK-NEXT: cset w10, ne
124
- ; CHECK-NEXT: cmp w6, w7
125
- ; CHECK-NEXT: orr w8, w8, w9
126
- ; CHECK-NEXT: cset w11, eq
127
- ; CHECK-NEXT: orr w9, w10, w11
128
- ; CHECK-NEXT: orr w8, w8, w9
129
- ; CHECK-NEXT: and w0, w8, #0x1
130
- ; CHECK-NEXT: ret
155
+ ; SDISEL-LABEL: cmp_or4:
156
+ ; SDISEL: // %bb.0:
157
+ ; SDISEL-NEXT: cmp w0, w1
158
+ ; SDISEL-NEXT: ccmp w2, w3, #2, hs
159
+ ; SDISEL-NEXT: ccmp w4, w5, #0, ls
160
+ ; SDISEL-NEXT: ccmp w6, w7, #4, eq
161
+ ; SDISEL-NEXT: cset w0, eq
162
+ ; SDISEL-NEXT: ret
163
+ ;
164
+ ; GISEL-LABEL: cmp_or4:
165
+ ; GISEL: // %bb.0:
166
+ ; GISEL-NEXT: cmp w0, w1
167
+ ; GISEL-NEXT: cset w8, lo
168
+ ; GISEL-NEXT: cmp w2, w3
169
+ ; GISEL-NEXT: cset w9, hi
170
+ ; GISEL-NEXT: cmp w4, w5
171
+ ; GISEL-NEXT: cset w10, ne
172
+ ; GISEL-NEXT: cmp w6, w7
173
+ ; GISEL-NEXT: orr w8, w8, w9
174
+ ; GISEL-NEXT: cset w11, eq
175
+ ; GISEL-NEXT: orr w9, w10, w11
176
+ ; GISEL-NEXT: orr w8, w8, w9
177
+ ; GISEL-NEXT: and w0, w8, #0x1
178
+ ; GISEL-NEXT: ret
131
179
%9 = icmp ult i32 %0 , %1
132
180
%10 = icmp ugt i32 %2 , %3
133
181
%11 = select i1 %9 , i1 true , i1 %10
@@ -194,3 +242,5 @@ define i32 @true_or3(i32 %0, i32 %1, i32 %2) {
194
242
%9 = zext i1 %8 to i32
195
243
ret i32 %9
196
244
}
245
+ ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
246
+ ; CHECK: {{.*}}
0 commit comments