|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc < %s -mtriple=aarch64 -aarch64-neon-syntax=generic | FileCheck %s -check-prefixes=CHECK,SDAG |
3 |
| -; RUN: llc < %s -mtriple=aarch64 -global-isel=1 -aarch64-neon-syntax=generic | FileCheck %s --check-prefixes=CHECK,GISEL |
| 2 | +; RUN: llc < %s -mtriple=aarch64 -aarch64-neon-syntax=generic | FileCheck %s -check-prefixes=CHECK,CHECK-SD |
| 3 | +; RUN: llc < %s -mtriple=aarch64 -global-isel=1 -aarch64-neon-syntax=generic | FileCheck %s --check-prefixes=CHECK,CHECK-GI |
4 | 4 |
|
5 | 5 | declare i8 @llvm.vector.reduce.add.v2i8(<2 x i8>)
|
6 | 6 | declare i8 @llvm.vector.reduce.add.v3i8(<3 x i8>)
|
@@ -247,26 +247,26 @@ entry:
|
247 | 247 | }
|
248 | 248 |
|
249 | 249 | define i8 @addv_v3i8(<3 x i8> %a) {
|
250 |
| -; SDAG-LABEL: addv_v3i8: |
251 |
| -; SDAG: // %bb.0: // %entry |
252 |
| -; SDAG-NEXT: movi v0.2d, #0000000000000000 |
253 |
| -; SDAG-NEXT: mov v0.h[0], w0 |
254 |
| -; SDAG-NEXT: mov v0.h[1], w1 |
255 |
| -; SDAG-NEXT: mov v0.h[2], w2 |
256 |
| -; SDAG-NEXT: addv h0, v0.4h |
257 |
| -; SDAG-NEXT: fmov w0, s0 |
258 |
| -; SDAG-NEXT: ret |
| 250 | +; CHECK-SD-LABEL: addv_v3i8: |
| 251 | +; CHECK-SD: // %bb.0: // %entry |
| 252 | +; CHECK-SD-NEXT: movi v0.2d, #0000000000000000 |
| 253 | +; CHECK-SD-NEXT: mov v0.h[0], w0 |
| 254 | +; CHECK-SD-NEXT: mov v0.h[1], w1 |
| 255 | +; CHECK-SD-NEXT: mov v0.h[2], w2 |
| 256 | +; CHECK-SD-NEXT: addv h0, v0.4h |
| 257 | +; CHECK-SD-NEXT: fmov w0, s0 |
| 258 | +; CHECK-SD-NEXT: ret |
259 | 259 | ;
|
260 |
| -; GISEL-LABEL: addv_v3i8: |
261 |
| -; GISEL: // %bb.0: // %entry |
262 |
| -; GISEL-NEXT: fmov s0, w0 |
263 |
| -; GISEL-NEXT: mov w8, #0 // =0x0 |
264 |
| -; GISEL-NEXT: mov v0.h[1], w1 |
265 |
| -; GISEL-NEXT: mov v0.h[2], w2 |
266 |
| -; GISEL-NEXT: mov v0.h[3], w8 |
267 |
| -; GISEL-NEXT: addv h0, v0.4h |
268 |
| -; GISEL-NEXT: fmov w0, s0 |
269 |
| -; GISEL-NEXT: ret |
| 260 | +; CHECK-GI-LABEL: addv_v3i8: |
| 261 | +; CHECK-GI: // %bb.0: // %entry |
| 262 | +; CHECK-GI-NEXT: fmov s0, w0 |
| 263 | +; CHECK-GI-NEXT: mov w8, #0 // =0x0 |
| 264 | +; CHECK-GI-NEXT: mov v0.h[1], w1 |
| 265 | +; CHECK-GI-NEXT: mov v0.h[2], w2 |
| 266 | +; CHECK-GI-NEXT: mov v0.h[3], w8 |
| 267 | +; CHECK-GI-NEXT: addv h0, v0.4h |
| 268 | +; CHECK-GI-NEXT: fmov w0, s0 |
| 269 | +; CHECK-GI-NEXT: ret |
270 | 270 | entry:
|
271 | 271 | %arg1 = call i8 @llvm.vector.reduce.add.v3i8(<3 x i8> %a)
|
272 | 272 | ret i8 %arg1
|
@@ -329,22 +329,22 @@ entry:
|
329 | 329 | }
|
330 | 330 |
|
331 | 331 | define i16 @addv_v3i16(<3 x i16> %a) {
|
332 |
| -; SDAG-LABEL: addv_v3i16: |
333 |
| -; SDAG: // %bb.0: // %entry |
334 |
| -; SDAG-NEXT: // kill: def $d0 killed $d0 def $q0 |
335 |
| -; SDAG-NEXT: mov v0.h[3], wzr |
336 |
| -; SDAG-NEXT: addv h0, v0.4h |
337 |
| -; SDAG-NEXT: fmov w0, s0 |
338 |
| -; SDAG-NEXT: ret |
| 332 | +; CHECK-SD-LABEL: addv_v3i16: |
| 333 | +; CHECK-SD: // %bb.0: // %entry |
| 334 | +; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0 |
| 335 | +; CHECK-SD-NEXT: mov v0.h[3], wzr |
| 336 | +; CHECK-SD-NEXT: addv h0, v0.4h |
| 337 | +; CHECK-SD-NEXT: fmov w0, s0 |
| 338 | +; CHECK-SD-NEXT: ret |
339 | 339 | ;
|
340 |
| -; GISEL-LABEL: addv_v3i16: |
341 |
| -; GISEL: // %bb.0: // %entry |
342 |
| -; GISEL-NEXT: // kill: def $d0 killed $d0 def $q0 |
343 |
| -; GISEL-NEXT: mov w8, #0 // =0x0 |
344 |
| -; GISEL-NEXT: mov v0.h[3], w8 |
345 |
| -; GISEL-NEXT: addv h0, v0.4h |
346 |
| -; GISEL-NEXT: fmov w0, s0 |
347 |
| -; GISEL-NEXT: ret |
| 340 | +; CHECK-GI-LABEL: addv_v3i16: |
| 341 | +; CHECK-GI: // %bb.0: // %entry |
| 342 | +; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0 |
| 343 | +; CHECK-GI-NEXT: mov w8, #0 // =0x0 |
| 344 | +; CHECK-GI-NEXT: mov v0.h[3], w8 |
| 345 | +; CHECK-GI-NEXT: addv h0, v0.4h |
| 346 | +; CHECK-GI-NEXT: fmov w0, s0 |
| 347 | +; CHECK-GI-NEXT: ret |
348 | 348 | entry:
|
349 | 349 | %arg1 = call i16 @llvm.vector.reduce.add.v3i16(<3 x i16> %a)
|
350 | 350 | ret i16 %arg1
|
@@ -442,29 +442,29 @@ entry:
|
442 | 442 | }
|
443 | 443 |
|
444 | 444 | define i64 @addv_v3i64(<3 x i64> %a) {
|
445 |
| -; SDAG-LABEL: addv_v3i64: |
446 |
| -; SDAG: // %bb.0: // %entry |
447 |
| -; SDAG-NEXT: // kill: def $d2 killed $d2 def $q2 |
448 |
| -; SDAG-NEXT: // kill: def $d0 killed $d0 def $q0 |
449 |
| -; SDAG-NEXT: // kill: def $d1 killed $d1 def $q1 |
450 |
| -; SDAG-NEXT: mov v0.d[1], v1.d[0] |
451 |
| -; SDAG-NEXT: mov v2.d[1], xzr |
452 |
| -; SDAG-NEXT: add v0.2d, v0.2d, v2.2d |
453 |
| -; SDAG-NEXT: addp d0, v0.2d |
454 |
| -; SDAG-NEXT: fmov x0, d0 |
455 |
| -; SDAG-NEXT: ret |
| 445 | +; CHECK-SD-LABEL: addv_v3i64: |
| 446 | +; CHECK-SD: // %bb.0: // %entry |
| 447 | +; CHECK-SD-NEXT: // kill: def $d2 killed $d2 def $q2 |
| 448 | +; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0 |
| 449 | +; CHECK-SD-NEXT: // kill: def $d1 killed $d1 def $q1 |
| 450 | +; CHECK-SD-NEXT: mov v0.d[1], v1.d[0] |
| 451 | +; CHECK-SD-NEXT: mov v2.d[1], xzr |
| 452 | +; CHECK-SD-NEXT: add v0.2d, v0.2d, v2.2d |
| 453 | +; CHECK-SD-NEXT: addp d0, v0.2d |
| 454 | +; CHECK-SD-NEXT: fmov x0, d0 |
| 455 | +; CHECK-SD-NEXT: ret |
456 | 456 | ;
|
457 |
| -; GISEL-LABEL: addv_v3i64: |
458 |
| -; GISEL: // %bb.0: // %entry |
459 |
| -; GISEL-NEXT: // kill: def $d0 killed $d0 def $q0 |
460 |
| -; GISEL-NEXT: // kill: def $d2 killed $d2 def $q2 |
461 |
| -; GISEL-NEXT: // kill: def $d1 killed $d1 def $q1 |
462 |
| -; GISEL-NEXT: mov v0.d[1], v1.d[0] |
463 |
| -; GISEL-NEXT: mov v2.d[1], xzr |
464 |
| -; GISEL-NEXT: add v0.2d, v0.2d, v2.2d |
465 |
| -; GISEL-NEXT: addp d0, v0.2d |
466 |
| -; GISEL-NEXT: fmov x0, d0 |
467 |
| -; GISEL-NEXT: ret |
| 457 | +; CHECK-GI-LABEL: addv_v3i64: |
| 458 | +; CHECK-GI: // %bb.0: // %entry |
| 459 | +; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0 |
| 460 | +; CHECK-GI-NEXT: // kill: def $d2 killed $d2 def $q2 |
| 461 | +; CHECK-GI-NEXT: // kill: def $d1 killed $d1 def $q1 |
| 462 | +; CHECK-GI-NEXT: mov v0.d[1], v1.d[0] |
| 463 | +; CHECK-GI-NEXT: mov v2.d[1], xzr |
| 464 | +; CHECK-GI-NEXT: add v0.2d, v0.2d, v2.2d |
| 465 | +; CHECK-GI-NEXT: addp d0, v0.2d |
| 466 | +; CHECK-GI-NEXT: fmov x0, d0 |
| 467 | +; CHECK-GI-NEXT: ret |
468 | 468 | entry:
|
469 | 469 | %arg1 = call i64 @llvm.vector.reduce.add.v3i64(<3 x i64> %a)
|
470 | 470 | ret i64 %arg1
|
@@ -493,6 +493,3 @@ entry:
|
493 | 493 | ret i128 %arg1
|
494 | 494 | }
|
495 | 495 |
|
496 |
| -;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: |
497 |
| -; GISEL: {{.*}} |
498 |
| -; SDAG: {{.*}} |
0 commit comments