|
3 | 3 | ; RUN: llc < %s -mtriple aarch64 -mattr=+sve -global-isel -aarch64-enable-gisel-sve=1 | FileCheck %s
|
4 | 4 |
|
5 | 5 | ;; add
|
6 |
| -define void @addnxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b, ptr %p) { |
| 6 | +define <vscale x 2 x i64> @addnxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) { |
7 | 7 | ; CHECK-LABEL: addnxv2i64:
|
8 | 8 | ; CHECK: // %bb.0: // %entry
|
9 | 9 | ; CHECK-NEXT: add z0.d, z0.d, z1.d
|
10 |
| -; CHECK-NEXT: ptrue p0.d |
11 |
| -; CHECK-NEXT: st1d { z0.d }, p0, [x0] |
12 | 10 | ; CHECK-NEXT: ret
|
13 | 11 | entry:
|
14 | 12 | %c = add <vscale x 2 x i64> %a, %b
|
15 |
| - store <vscale x 2 x i64> %c, ptr %p, align 16 |
16 |
| - ret void |
| 13 | + ret <vscale x 2 x i64> %c |
17 | 14 | }
|
18 | 15 |
|
19 |
| -define void @addnxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, ptr %p) { |
| 16 | +define <vscale x 4 x i32> @addnxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) { |
20 | 17 | ; CHECK-LABEL: addnxv4i32:
|
21 | 18 | ; CHECK: // %bb.0: // %entry
|
22 | 19 | ; CHECK-NEXT: add z0.s, z0.s, z1.s
|
23 |
| -; CHECK-NEXT: ptrue p0.s |
24 |
| -; CHECK-NEXT: st1w { z0.s }, p0, [x0] |
25 | 20 | ; CHECK-NEXT: ret
|
26 | 21 | entry:
|
27 | 22 | %c = add <vscale x 4 x i32> %a, %b
|
28 |
| - store <vscale x 4 x i32> %c, ptr %p, align 16 |
29 |
| - ret void |
| 23 | + ret <vscale x 4 x i32> %c |
30 | 24 | }
|
31 | 25 |
|
32 |
| -define void @addnxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
| 26 | +define <vscale x 8 x i16> @addnxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
33 | 27 | ; CHECK-LABEL: addnxv8i16:
|
34 | 28 | ; CHECK: // %bb.0: // %entry
|
35 | 29 | ; CHECK-NEXT: add z0.h, z0.h, z1.h
|
36 |
| -; CHECK-NEXT: ptrue p0.h |
37 |
| -; CHECK-NEXT: st1h { z0.h }, p0, [x0] |
38 | 30 | ; CHECK-NEXT: ret
|
39 | 31 | entry:
|
40 | 32 | %c = add <vscale x 8 x i16> %a, %b
|
41 |
| - store <vscale x 8 x i16> %c, ptr %p, align 16 |
42 |
| - ret void |
| 33 | + ret <vscale x 8 x i16> %c |
43 | 34 | }
|
44 | 35 |
|
45 |
| -define void @addnxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b, ptr %p) { |
| 36 | +define <vscale x 16 x i8> @addnxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) { |
46 | 37 | ; CHECK-LABEL: addnxv16i8:
|
47 | 38 | ; CHECK: // %bb.0: // %entry
|
48 | 39 | ; CHECK-NEXT: add z0.b, z0.b, z1.b
|
49 |
| -; CHECK-NEXT: ptrue p0.b |
50 |
| -; CHECK-NEXT: st1b { z0.b }, p0, [x0] |
51 | 40 | ; CHECK-NEXT: ret
|
52 | 41 | entry:
|
53 | 42 | %c = add <vscale x 16 x i8> %a, %b
|
54 |
| - store <vscale x 16 x i8> %c, ptr %p, align 16 |
55 |
| - ret void |
| 43 | + ret <vscale x 16 x i8> %c |
56 | 44 | }
|
57 | 45 |
|
58 | 46 | ;; sub
|
59 |
| -define void @subnxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b, ptr %p) { |
| 47 | +define <vscale x 2 x i64> @subnxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) { |
60 | 48 | ; CHECK-LABEL: subnxv2i64:
|
61 | 49 | ; CHECK: // %bb.0: // %entry
|
62 | 50 | ; CHECK-NEXT: sub z0.d, z0.d, z1.d
|
63 |
| -; CHECK-NEXT: ptrue p0.d |
64 |
| -; CHECK-NEXT: st1d { z0.d }, p0, [x0] |
65 | 51 | ; CHECK-NEXT: ret
|
66 | 52 | entry:
|
67 | 53 | %c = sub <vscale x 2 x i64> %a, %b
|
68 |
| - store <vscale x 2 x i64> %c, ptr %p, align 16 |
69 |
| - ret void |
| 54 | + ret <vscale x 2 x i64> %c |
70 | 55 | }
|
71 | 56 |
|
72 |
| -define void @subnxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, ptr %p) { |
| 57 | +define <vscale x 4 x i32> @subnxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) { |
73 | 58 | ; CHECK-LABEL: subnxv4i32:
|
74 | 59 | ; CHECK: // %bb.0: // %entry
|
75 | 60 | ; CHECK-NEXT: sub z0.s, z0.s, z1.s
|
76 |
| -; CHECK-NEXT: ptrue p0.s |
77 |
| -; CHECK-NEXT: st1w { z0.s }, p0, [x0] |
78 | 61 | ; CHECK-NEXT: ret
|
79 | 62 | entry:
|
80 | 63 | %c = sub <vscale x 4 x i32> %a, %b
|
81 |
| - store <vscale x 4 x i32> %c, ptr %p, align 16 |
82 |
| - ret void |
| 64 | + ret <vscale x 4 x i32> %c |
83 | 65 | }
|
84 | 66 |
|
85 |
| -define void @subnxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
| 67 | +define <vscale x 8 x i16> @subnxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
86 | 68 | ; CHECK-LABEL: subnxv8i16:
|
87 | 69 | ; CHECK: // %bb.0: // %entry
|
88 | 70 | ; CHECK-NEXT: sub z0.h, z0.h, z1.h
|
89 |
| -; CHECK-NEXT: ptrue p0.h |
90 |
| -; CHECK-NEXT: st1h { z0.h }, p0, [x0] |
91 | 71 | ; CHECK-NEXT: ret
|
92 | 72 | entry:
|
93 | 73 | %c = sub <vscale x 8 x i16> %a, %b
|
94 |
| - store <vscale x 8 x i16> %c, ptr %p, align 16 |
95 |
| - ret void |
| 74 | + ret <vscale x 8 x i16> %c |
96 | 75 | }
|
97 | 76 |
|
98 |
| -define void @subnxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b, ptr %p) { |
| 77 | +define <vscale x 16 x i8> @subnxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) { |
99 | 78 | ; CHECK-LABEL: subnxv16i8:
|
100 | 79 | ; CHECK: // %bb.0: // %entry
|
101 | 80 | ; CHECK-NEXT: sub z0.b, z0.b, z1.b
|
102 |
| -; CHECK-NEXT: ptrue p0.b |
103 |
| -; CHECK-NEXT: st1b { z0.b }, p0, [x0] |
104 | 81 | ; CHECK-NEXT: ret
|
105 | 82 | entry:
|
106 | 83 | %c = sub <vscale x 16 x i8> %a, %b
|
107 |
| - store <vscale x 16 x i8> %c, ptr %p, align 16 |
108 |
| - ret void |
| 84 | + ret <vscale x 16 x i8> %c |
109 | 85 | }
|
110 | 86 |
|
111 | 87 | ;; and
|
112 |
| -define void @andnxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b, ptr %p) { |
| 88 | +define <vscale x 2 x i64> @andnxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) { |
113 | 89 | ; CHECK-LABEL: andnxv2i64:
|
114 | 90 | ; CHECK: // %bb.0: // %entry
|
115 | 91 | ; CHECK-NEXT: and z0.d, z0.d, z1.d
|
116 |
| -; CHECK-NEXT: ptrue p0.d |
117 |
| -; CHECK-NEXT: st1d { z0.d }, p0, [x0] |
118 | 92 | ; CHECK-NEXT: ret
|
119 | 93 | entry:
|
120 | 94 | %c = and <vscale x 2 x i64> %a, %b
|
121 |
| - store <vscale x 2 x i64> %c, ptr %p, align 16 |
122 |
| - ret void |
| 95 | + ret <vscale x 2 x i64> %c |
123 | 96 | }
|
124 | 97 |
|
125 |
| -define void @andnxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, ptr %p) { |
| 98 | +define <vscale x 4 x i32> @andnxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) { |
126 | 99 | ; CHECK-LABEL: andnxv4i32:
|
127 | 100 | ; CHECK: // %bb.0: // %entry
|
128 | 101 | ; CHECK-NEXT: and z0.d, z0.d, z1.d
|
129 |
| -; CHECK-NEXT: ptrue p0.s |
130 |
| -; CHECK-NEXT: st1w { z0.s }, p0, [x0] |
131 | 102 | ; CHECK-NEXT: ret
|
132 | 103 | entry:
|
133 | 104 | %c = and <vscale x 4 x i32> %a, %b
|
134 |
| - store <vscale x 4 x i32> %c, ptr %p, align 16 |
135 |
| - ret void |
| 105 | + ret <vscale x 4 x i32> %c |
136 | 106 | }
|
137 | 107 |
|
138 |
| -define void @andnxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
| 108 | +define <vscale x 8 x i16> @andnxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
139 | 109 | ; CHECK-LABEL: andnxv8i16:
|
140 | 110 | ; CHECK: // %bb.0: // %entry
|
141 | 111 | ; CHECK-NEXT: and z0.d, z0.d, z1.d
|
142 |
| -; CHECK-NEXT: ptrue p0.h |
143 |
| -; CHECK-NEXT: st1h { z0.h }, p0, [x0] |
144 | 112 | ; CHECK-NEXT: ret
|
145 | 113 | entry:
|
146 | 114 | %c = and <vscale x 8 x i16> %a, %b
|
147 |
| - store <vscale x 8 x i16> %c, ptr %p, align 16 |
148 |
| - ret void |
| 115 | + ret <vscale x 8 x i16> %c |
149 | 116 | }
|
150 | 117 |
|
151 |
| -define void @andnxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b, ptr %p) { |
| 118 | +define <vscale x 16 x i8> @andnxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) { |
152 | 119 | ; CHECK-LABEL: andnxv16i8:
|
153 | 120 | ; CHECK: // %bb.0: // %entry
|
154 | 121 | ; CHECK-NEXT: and z0.d, z0.d, z1.d
|
155 |
| -; CHECK-NEXT: ptrue p0.b |
156 |
| -; CHECK-NEXT: st1b { z0.b }, p0, [x0] |
157 | 122 | ; CHECK-NEXT: ret
|
158 | 123 | entry:
|
159 | 124 | %c = and <vscale x 16 x i8> %a, %b
|
160 |
| - store <vscale x 16 x i8> %c, ptr %p, align 16 |
161 |
| - ret void |
| 125 | + ret <vscale x 16 x i8> %c |
162 | 126 | }
|
163 | 127 |
|
164 | 128 | ;; or
|
165 |
| -define void @ornxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b, ptr %p) { |
| 129 | +define <vscale x 2 x i64> @ornxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) { |
166 | 130 | ; CHECK-LABEL: ornxv2i64:
|
167 | 131 | ; CHECK: // %bb.0: // %entry
|
168 | 132 | ; CHECK-NEXT: orr z0.d, z0.d, z1.d
|
169 |
| -; CHECK-NEXT: ptrue p0.d |
170 |
| -; CHECK-NEXT: st1d { z0.d }, p0, [x0] |
171 | 133 | ; CHECK-NEXT: ret
|
172 | 134 | entry:
|
173 | 135 | %c = or <vscale x 2 x i64> %a, %b
|
174 |
| - store <vscale x 2 x i64> %c, ptr %p, align 16 |
175 |
| - ret void |
| 136 | + ret <vscale x 2 x i64> %c |
176 | 137 | }
|
177 | 138 |
|
178 |
| -define void @ornxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, ptr %p) { |
| 139 | +define <vscale x 4 x i32> @ornxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) { |
179 | 140 | ; CHECK-LABEL: ornxv4i32:
|
180 | 141 | ; CHECK: // %bb.0: // %entry
|
181 | 142 | ; CHECK-NEXT: orr z0.d, z0.d, z1.d
|
182 |
| -; CHECK-NEXT: ptrue p0.s |
183 |
| -; CHECK-NEXT: st1w { z0.s }, p0, [x0] |
184 | 143 | ; CHECK-NEXT: ret
|
185 | 144 | entry:
|
186 | 145 | %c = or <vscale x 4 x i32> %a, %b
|
187 |
| - store <vscale x 4 x i32> %c, ptr %p, align 16 |
188 |
| - ret void |
| 146 | + ret <vscale x 4 x i32> %c |
189 | 147 | }
|
190 | 148 |
|
191 |
| -define void @ornxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
| 149 | +define <vscale x 8 x i16> @ornxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
192 | 150 | ; CHECK-LABEL: ornxv8i16:
|
193 | 151 | ; CHECK: // %bb.0: // %entry
|
194 | 152 | ; CHECK-NEXT: orr z0.d, z0.d, z1.d
|
195 |
| -; CHECK-NEXT: ptrue p0.h |
196 |
| -; CHECK-NEXT: st1h { z0.h }, p0, [x0] |
197 | 153 | ; CHECK-NEXT: ret
|
198 | 154 | entry:
|
199 | 155 | %c = or <vscale x 8 x i16> %a, %b
|
200 |
| - store <vscale x 8 x i16> %c, ptr %p, align 16 |
201 |
| - ret void |
| 156 | + ret <vscale x 8 x i16> %c |
202 | 157 | }
|
203 | 158 |
|
204 |
| -define void @ornxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b, ptr %p) { |
| 159 | +define <vscale x 16 x i8> @ornxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) { |
205 | 160 | ; CHECK-LABEL: ornxv16i8:
|
206 | 161 | ; CHECK: // %bb.0: // %entry
|
207 | 162 | ; CHECK-NEXT: orr z0.d, z0.d, z1.d
|
208 |
| -; CHECK-NEXT: ptrue p0.b |
209 |
| -; CHECK-NEXT: st1b { z0.b }, p0, [x0] |
210 | 163 | ; CHECK-NEXT: ret
|
211 | 164 | entry:
|
212 | 165 | %c = or <vscale x 16 x i8> %a, %b
|
213 |
| - store <vscale x 16 x i8> %c, ptr %p, align 16 |
214 |
| - ret void |
| 166 | + ret <vscale x 16 x i8> %c |
215 | 167 | }
|
216 | 168 |
|
217 | 169 | ;; xor
|
218 |
| -define void @xornxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b, ptr %p) { |
| 170 | +define <vscale x 2 x i64> @xornxv2i64(<vscale x 2 x i64> %a, <vscale x 2 x i64> %b) { |
219 | 171 | ; CHECK-LABEL: xornxv2i64:
|
220 | 172 | ; CHECK: // %bb.0: // %entry
|
221 | 173 | ; CHECK-NEXT: eor z0.d, z0.d, z1.d
|
222 |
| -; CHECK-NEXT: ptrue p0.d |
223 |
| -; CHECK-NEXT: st1d { z0.d }, p0, [x0] |
224 | 174 | ; CHECK-NEXT: ret
|
225 | 175 | entry:
|
226 | 176 | %c = xor <vscale x 2 x i64> %a, %b
|
227 |
| - store <vscale x 2 x i64> %c, ptr %p, align 16 |
228 |
| - ret void |
| 177 | + ret <vscale x 2 x i64> %c |
229 | 178 | }
|
230 | 179 |
|
231 |
| -define void @xornxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, ptr %p) { |
| 180 | +define <vscale x 4 x i32> @xornxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b) { |
232 | 181 | ; CHECK-LABEL: xornxv4i32:
|
233 | 182 | ; CHECK: // %bb.0: // %entry
|
234 | 183 | ; CHECK-NEXT: eor z0.d, z0.d, z1.d
|
235 |
| -; CHECK-NEXT: ptrue p0.s |
236 |
| -; CHECK-NEXT: st1w { z0.s }, p0, [x0] |
237 | 184 | ; CHECK-NEXT: ret
|
238 | 185 | entry:
|
239 | 186 | %c = xor <vscale x 4 x i32> %a, %b
|
240 |
| - store <vscale x 4 x i32> %c, ptr %p, align 16 |
241 |
| - ret void |
| 187 | + ret <vscale x 4 x i32> %c |
242 | 188 | }
|
243 | 189 |
|
244 |
| -define void @xornxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
| 190 | +define <vscale x 8 x i16> @xornxv8i16(<vscale x 8 x i16> %a, <vscale x 8 x i16> %b, ptr %p) { |
245 | 191 | ; CHECK-LABEL: xornxv8i16:
|
246 | 192 | ; CHECK: // %bb.0: // %entry
|
247 | 193 | ; CHECK-NEXT: eor z0.d, z0.d, z1.d
|
248 |
| -; CHECK-NEXT: ptrue p0.h |
249 |
| -; CHECK-NEXT: st1h { z0.h }, p0, [x0] |
250 | 194 | ; CHECK-NEXT: ret
|
251 | 195 | entry:
|
252 | 196 | %c = xor <vscale x 8 x i16> %a, %b
|
253 |
| - store <vscale x 8 x i16> %c, ptr %p, align 16 |
254 |
| - ret void |
| 197 | + ret <vscale x 8 x i16> %c |
255 | 198 | }
|
256 | 199 |
|
257 |
| -define void @xornxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b, ptr %p) { |
| 200 | +define <vscale x 16 x i8> @xornxv16i8(<vscale x 16 x i8> %a, <vscale x 16 x i8> %b) { |
258 | 201 | ; CHECK-LABEL: xornxv16i8:
|
259 | 202 | ; CHECK: // %bb.0: // %entry
|
260 | 203 | ; CHECK-NEXT: eor z0.d, z0.d, z1.d
|
261 |
| -; CHECK-NEXT: ptrue p0.b |
262 |
| -; CHECK-NEXT: st1b { z0.b }, p0, [x0] |
263 | 204 | ; CHECK-NEXT: ret
|
264 | 205 | entry:
|
265 | 206 | %c = xor <vscale x 16 x i8> %a, %b
|
266 |
| - store <vscale x 16 x i8> %c, ptr %p, align 16 |
267 |
| - ret void |
| 207 | + ret <vscale x 16 x i8> %c |
268 | 208 | }
|
0 commit comments