6
6
7
7
; (x0 < x1) && (x2 > x3)
8
8
define i32 @cmp_and2 (i32 %0 , i32 %1 , i32 %2 , i32 %3 ) {
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
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
24
17
%5 = icmp ult i32 %0 , %1
25
18
%6 = icmp ugt i32 %2 , %3
26
19
%7 = select i1 %5 , i1 %6 , i1 false
@@ -30,25 +23,17 @@ define i32 @cmp_and2(i32 %0, i32 %1, i32 %2, i32 %3) {
30
23
31
24
; (x0 < x1) && (x2 > x3) && (x4 != x5)
32
25
define i32 @cmp_and3 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 ) {
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
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
52
37
%7 = icmp ult i32 %0 , %1
53
38
%8 = icmp ugt i32 %2 , %3
54
39
%9 = select i1 %7 , i1 %8 , i1 false
@@ -60,29 +45,20 @@ define i32 @cmp_and3(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
60
45
61
46
; (x0 < x1) && (x2 > x3) && (x4 != x5) && (x6 == x7)
62
47
define i32 @cmp_and4 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 , i32 %6 , i32 %7 ) {
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
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
86
62
%9 = icmp ugt i32 %2 , %3
87
63
%10 = icmp ult i32 %0 , %1
88
64
%11 = select i1 %9 , i1 %10 , i1 false
@@ -96,22 +72,15 @@ define i32 @cmp_and4(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32
96
72
97
73
; (x0 < x1) || (x2 > x3)
98
74
define i32 @cmp_or2 (i32 %0 , i32 %1 , i32 %2 , i32 %3 ) {
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
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
115
84
%5 = icmp ult i32 %0 , %1
116
85
%6 = icmp ne i32 %2 , %3
117
86
%7 = select i1 %5 , i1 true , i1 %6
@@ -121,26 +90,18 @@ define i32 @cmp_or2(i32 %0, i32 %1, i32 %2, i32 %3) {
121
90
122
91
; (x0 < x1) || (x2 > x3) || (x4 != x5)
123
92
define i32 @cmp_or3 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 ) {
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
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
144
105
%7 = icmp ult i32 %0 , %1
145
106
%8 = icmp ugt i32 %2 , %3
146
107
%9 = select i1 %7 , i1 true , i1 %8
@@ -152,30 +113,21 @@ define i32 @cmp_or3(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
152
113
153
114
; (x0 < x1) || (x2 > x3) || (x4 != x5) || (x6 == x7)
154
115
define i32 @cmp_or4 (i32 %0 , i32 %1 , i32 %2 , i32 %3 , i32 %4 , i32 %5 , i32 %6 , i32 %7 ) {
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
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
179
131
%9 = icmp ult i32 %0 , %1
180
132
%10 = icmp ugt i32 %2 , %3
181
133
%11 = select i1 %9 , i1 true , i1 %10
@@ -242,5 +194,3 @@ define i32 @true_or3(i32 %0, i32 %1, i32 %2) {
242
194
%9 = zext i1 %8 to i32
243
195
ret i32 %9
244
196
}
245
- ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
246
- ; CHECK: {{.*}}
0 commit comments