| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: llc -mtriple=aarch64 %s -o - | FileCheck %s |
| |
| define <16 x i1> @whilewr_8(ptr %a, ptr %b) { |
| ; CHECK-LABEL: whilewr_8: |
| ; CHECK: // %bb.0: // %entry |
| ; CHECK-NEXT: adrp x8, .LCPI0_0 |
| ; CHECK-NEXT: adrp x10, .LCPI0_1 |
| ; CHECK-NEXT: sub x9, x1, x0 |
| ; CHECK-NEXT: ldr q0, [x8, :lo12:.LCPI0_0] |
| ; CHECK-NEXT: adrp x8, .LCPI0_2 |
| ; CHECK-NEXT: ldr q1, [x10, :lo12:.LCPI0_1] |
| ; CHECK-NEXT: ldr q3, [x8, :lo12:.LCPI0_2] |
| ; CHECK-NEXT: adrp x8, .LCPI0_4 |
| ; CHECK-NEXT: adrp x10, .LCPI0_3 |
| ; CHECK-NEXT: ldr q5, [x8, :lo12:.LCPI0_4] |
| ; CHECK-NEXT: adrp x8, .LCPI0_5 |
| ; CHECK-NEXT: dup v2.2d, x9 |
| ; CHECK-NEXT: ldr q4, [x10, :lo12:.LCPI0_3] |
| ; CHECK-NEXT: adrp x10, .LCPI0_6 |
| ; CHECK-NEXT: ldr q6, [x8, :lo12:.LCPI0_5] |
| ; CHECK-NEXT: adrp x8, .LCPI0_7 |
| ; CHECK-NEXT: ldr q7, [x10, :lo12:.LCPI0_6] |
| ; CHECK-NEXT: cmp x9, #1 |
| ; CHECK-NEXT: ldr q16, [x8, :lo12:.LCPI0_7] |
| ; CHECK-NEXT: cmhi v0.2d, v2.2d, v0.2d |
| ; CHECK-NEXT: cmhi v1.2d, v2.2d, v1.2d |
| ; CHECK-NEXT: cmhi v3.2d, v2.2d, v3.2d |
| ; CHECK-NEXT: cmhi v4.2d, v2.2d, v4.2d |
| ; CHECK-NEXT: cmhi v5.2d, v2.2d, v5.2d |
| ; CHECK-NEXT: cmhi v6.2d, v2.2d, v6.2d |
| ; CHECK-NEXT: cmhi v7.2d, v2.2d, v7.2d |
| ; CHECK-NEXT: cmhi v2.2d, v2.2d, v16.2d |
| ; CHECK-NEXT: uzp1 v0.4s, v1.4s, v0.4s |
| ; CHECK-NEXT: cset w8, lt |
| ; CHECK-NEXT: uzp1 v1.4s, v4.4s, v3.4s |
| ; CHECK-NEXT: uzp1 v3.4s, v6.4s, v5.4s |
| ; CHECK-NEXT: uzp1 v2.4s, v2.4s, v7.4s |
| ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h |
| ; CHECK-NEXT: uzp1 v1.8h, v2.8h, v3.8h |
| ; CHECK-NEXT: uzp1 v0.16b, v1.16b, v0.16b |
| ; CHECK-NEXT: dup v1.16b, w8 |
| ; CHECK-NEXT: orr v0.16b, v0.16b, v1.16b |
| ; CHECK-NEXT: ret |
| entry: |
| %0 = call <16 x i1> @llvm.loop.dependence.war.mask.v16i1(ptr %a, ptr %b, i64 1) |
| ret <16 x i1> %0 |
| } |