1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
2
; RUN: llc -mattr=+sve -force-streaming-compatible < %s | FileCheck %s
3
3
; RUN: llc -mattr=+sme -force-streaming-compatible < %s | FileCheck %s
4
+ ; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE
4
5
5
6
target triple = "aarch64-unknown-linux-gnu"
6
7
@@ -14,6 +15,12 @@ define <4 x i8> @vls_sve_and_4xi8(<4 x i8> %b) nounwind {
14
15
; CHECK-NEXT: and z0.d, z0.d, z1.d
15
16
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
16
17
; CHECK-NEXT: ret
18
+ ;
19
+ ; NONEON-NOSVE-LABEL: vls_sve_and_4xi8:
20
+ ; NONEON-NOSVE: // %bb.0:
21
+ ; NONEON-NOSVE-NEXT: movi d1, #0xff000000ff0000
22
+ ; NONEON-NOSVE-NEXT: and v0.8b, v0.8b, v1.8b
23
+ ; NONEON-NOSVE-NEXT: ret
17
24
%c = and <4 x i8 > %b , <i8 0 , i8 255 , i8 0 , i8 255 >
18
25
ret <4 x i8 > %c
19
26
}
@@ -27,6 +34,12 @@ define <8 x i8> @vls_sve_and_8xi8(<8 x i8> %b) nounwind {
27
34
; CHECK-NEXT: and z0.d, z0.d, z1.d
28
35
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
29
36
; CHECK-NEXT: ret
37
+ ;
38
+ ; NONEON-NOSVE-LABEL: vls_sve_and_8xi8:
39
+ ; NONEON-NOSVE: // %bb.0:
40
+ ; NONEON-NOSVE-NEXT: movi d1, #0xff00ff00ff00ff00
41
+ ; NONEON-NOSVE-NEXT: and v0.8b, v0.8b, v1.8b
42
+ ; NONEON-NOSVE-NEXT: ret
30
43
%c = and <8 x i8 > %b , <i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 >
31
44
ret <8 x i8 > %c
32
45
}
@@ -40,6 +53,12 @@ define <16 x i8> @vls_sve_and_16xi8(<16 x i8> %b) nounwind {
40
53
; CHECK-NEXT: and z0.d, z0.d, z1.d
41
54
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
42
55
; CHECK-NEXT: ret
56
+ ;
57
+ ; NONEON-NOSVE-LABEL: vls_sve_and_16xi8:
58
+ ; NONEON-NOSVE: // %bb.0:
59
+ ; NONEON-NOSVE-NEXT: movi v1.2d, #0xff00ff00ff00ff00
60
+ ; NONEON-NOSVE-NEXT: and v0.16b, v0.16b, v1.16b
61
+ ; NONEON-NOSVE-NEXT: ret
43
62
%c = and <16 x i8 > %b , <i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 >
44
63
ret <16 x i8 > %c
45
64
}
@@ -56,6 +75,13 @@ define <32 x i8> @vls_sve_and_32xi8(<32 x i8> %ap) nounwind {
56
75
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
57
76
; CHECK-NEXT: // kill: def $q1 killed $q1 killed $z1
58
77
; CHECK-NEXT: ret
78
+ ;
79
+ ; NONEON-NOSVE-LABEL: vls_sve_and_32xi8:
80
+ ; NONEON-NOSVE: // %bb.0:
81
+ ; NONEON-NOSVE-NEXT: movi v2.2d, #0xff00ff00ff00ff00
82
+ ; NONEON-NOSVE-NEXT: and v0.16b, v0.16b, v2.16b
83
+ ; NONEON-NOSVE-NEXT: and v1.16b, v1.16b, v2.16b
84
+ ; NONEON-NOSVE-NEXT: ret
59
85
%b = and <32 x i8 > %ap , <i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 ,
60
86
i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 , i8 0 , i8 255 >
61
87
ret <32 x i8 > %b
@@ -73,6 +99,13 @@ define <2 x i16> @vls_sve_and_2xi16(<2 x i16> %b) nounwind {
73
99
; CHECK-NEXT: ldr d0, [sp, #8]
74
100
; CHECK-NEXT: add sp, sp, #16
75
101
; CHECK-NEXT: ret
102
+ ;
103
+ ; NONEON-NOSVE-LABEL: vls_sve_and_2xi16:
104
+ ; NONEON-NOSVE: // %bb.0:
105
+ ; NONEON-NOSVE-NEXT: // kill: def $d0 killed $d0 def $q0
106
+ ; NONEON-NOSVE-NEXT: mov v0.s[0], wzr
107
+ ; NONEON-NOSVE-NEXT: // kill: def $d0 killed $d0 killed $q0
108
+ ; NONEON-NOSVE-NEXT: ret
76
109
%c = and <2 x i16 > %b , <i16 0 , i16 65535 >
77
110
ret <2 x i16 > %c
78
111
}
@@ -86,6 +119,12 @@ define <4 x i16> @vls_sve_and_4xi16(<4 x i16> %b) nounwind {
86
119
; CHECK-NEXT: and z0.d, z0.d, z1.d
87
120
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
88
121
; CHECK-NEXT: ret
122
+ ;
123
+ ; NONEON-NOSVE-LABEL: vls_sve_and_4xi16:
124
+ ; NONEON-NOSVE: // %bb.0:
125
+ ; NONEON-NOSVE-NEXT: movi d1, #0xffff0000ffff0000
126
+ ; NONEON-NOSVE-NEXT: and v0.8b, v0.8b, v1.8b
127
+ ; NONEON-NOSVE-NEXT: ret
89
128
%c = and <4 x i16 > %b , <i16 0 , i16 65535 , i16 0 , i16 65535 >
90
129
ret <4 x i16 > %c
91
130
}
@@ -99,6 +138,12 @@ define <8 x i16> @vls_sve_and_8xi16(<8 x i16> %b) nounwind {
99
138
; CHECK-NEXT: and z0.d, z0.d, z1.d
100
139
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
101
140
; CHECK-NEXT: ret
141
+ ;
142
+ ; NONEON-NOSVE-LABEL: vls_sve_and_8xi16:
143
+ ; NONEON-NOSVE: // %bb.0:
144
+ ; NONEON-NOSVE-NEXT: movi v1.2d, #0xffff0000ffff0000
145
+ ; NONEON-NOSVE-NEXT: and v0.16b, v0.16b, v1.16b
146
+ ; NONEON-NOSVE-NEXT: ret
102
147
%c = and <8 x i16 > %b , <i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 >
103
148
ret <8 x i16 > %c
104
149
}
@@ -115,6 +160,13 @@ define <16 x i16> @vls_sve_and_16xi16(<16 x i16> %b) nounwind {
115
160
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
116
161
; CHECK-NEXT: // kill: def $q1 killed $q1 killed $z1
117
162
; CHECK-NEXT: ret
163
+ ;
164
+ ; NONEON-NOSVE-LABEL: vls_sve_and_16xi16:
165
+ ; NONEON-NOSVE: // %bb.0:
166
+ ; NONEON-NOSVE-NEXT: movi v2.2d, #0xffff0000ffff0000
167
+ ; NONEON-NOSVE-NEXT: and v0.16b, v0.16b, v2.16b
168
+ ; NONEON-NOSVE-NEXT: and v1.16b, v1.16b, v2.16b
169
+ ; NONEON-NOSVE-NEXT: ret
118
170
%c = and <16 x i16 > %b , <i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 , i16 0 , i16 65535 >
119
171
ret <16 x i16 > %c
120
172
}
@@ -128,6 +180,13 @@ define <2 x i32> @vls_sve_and_2xi32(<2 x i32> %b) nounwind {
128
180
; CHECK-NEXT: and z0.d, z0.d, z1.d
129
181
; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
130
182
; CHECK-NEXT: ret
183
+ ;
184
+ ; NONEON-NOSVE-LABEL: vls_sve_and_2xi32:
185
+ ; NONEON-NOSVE: // %bb.0:
186
+ ; NONEON-NOSVE-NEXT: // kill: def $d0 killed $d0 def $q0
187
+ ; NONEON-NOSVE-NEXT: mov v0.s[0], wzr
188
+ ; NONEON-NOSVE-NEXT: // kill: def $d0 killed $d0 killed $q0
189
+ ; NONEON-NOSVE-NEXT: ret
131
190
%c = and <2 x i32 > %b , <i32 0 , i32 4294967295 >
132
191
ret <2 x i32 > %c
133
192
}
@@ -141,6 +200,12 @@ define <4 x i32> @vls_sve_and_4xi32(<4 x i32> %b) nounwind {
141
200
; CHECK-NEXT: and z0.d, z0.d, z1.d
142
201
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
143
202
; CHECK-NEXT: ret
203
+ ;
204
+ ; NONEON-NOSVE-LABEL: vls_sve_and_4xi32:
205
+ ; NONEON-NOSVE: // %bb.0:
206
+ ; NONEON-NOSVE-NEXT: movi v1.2d, #0xffffffff00000000
207
+ ; NONEON-NOSVE-NEXT: and v0.16b, v0.16b, v1.16b
208
+ ; NONEON-NOSVE-NEXT: ret
144
209
%c = and <4 x i32 > %b , <i32 0 , i32 4294967295 , i32 0 , i32 4294967295 >
145
210
ret <4 x i32 > %c
146
211
}
@@ -157,6 +222,13 @@ define <8 x i32> @vls_sve_and_8xi32(<8 x i32> %b) nounwind {
157
222
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
158
223
; CHECK-NEXT: // kill: def $q1 killed $q1 killed $z1
159
224
; CHECK-NEXT: ret
225
+ ;
226
+ ; NONEON-NOSVE-LABEL: vls_sve_and_8xi32:
227
+ ; NONEON-NOSVE: // %bb.0:
228
+ ; NONEON-NOSVE-NEXT: movi v2.2d, #0xffffffff00000000
229
+ ; NONEON-NOSVE-NEXT: and v0.16b, v0.16b, v2.16b
230
+ ; NONEON-NOSVE-NEXT: and v1.16b, v1.16b, v2.16b
231
+ ; NONEON-NOSVE-NEXT: ret
160
232
%c = and <8 x i32 > %b , <i32 0 , i32 4294967295 , i32 0 , i32 4294967295 , i32 0 , i32 4294967295 , i32 0 , i32 4294967295 >
161
233
ret <8 x i32 > %c
162
234
}
@@ -170,6 +242,11 @@ define <2 x i64> @vls_sve_and_2xi64(<2 x i64> %b) nounwind {
170
242
; CHECK-NEXT: and z0.d, z0.d, z1.d
171
243
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
172
244
; CHECK-NEXT: ret
245
+ ;
246
+ ; NONEON-NOSVE-LABEL: vls_sve_and_2xi64:
247
+ ; NONEON-NOSVE: // %bb.0:
248
+ ; NONEON-NOSVE-NEXT: mov v0.d[0], xzr
249
+ ; NONEON-NOSVE-NEXT: ret
173
250
%c = and <2 x i64 > %b , <i64 0 , i64 18446744073709551615 >
174
251
ret <2 x i64 > %c
175
252
}
@@ -185,6 +262,12 @@ define <4 x i64> @vls_sve_and_4xi64(<4 x i64> %b) nounwind {
185
262
; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
186
263
; CHECK-NEXT: // kill: def $q1 killed $q1 killed $z1
187
264
; CHECK-NEXT: ret
265
+ ;
266
+ ; NONEON-NOSVE-LABEL: vls_sve_and_4xi64:
267
+ ; NONEON-NOSVE: // %bb.0:
268
+ ; NONEON-NOSVE-NEXT: mov v0.d[0], xzr
269
+ ; NONEON-NOSVE-NEXT: mov v1.d[0], xzr
270
+ ; NONEON-NOSVE-NEXT: ret
188
271
%c = and <4 x i64 > %b , <i64 0 , i64 18446744073709551615 , i64 0 , i64 18446744073709551615 >
189
272
ret <4 x i64 > %c
190
273
}
0 commit comments