; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: llc -mtriple=aarch64-- < %s | FileCheck %s define <16 x i4> @avir_v2i4_v16i4(<2 x i4> %arg) nounwind { ; CHECK-LABEL: avir_v2i4_v16i4: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #16 ; CHECK-NEXT: uzp1 v1.4h, v0.4h, v0.4h ; CHECK-NEXT: movi v0.2d, #0000000000000000 ; CHECK-NEXT: fmov x8, d1 ; CHECK-NEXT: and w9, w8, #0xf ; CHECK-NEXT: mov v0.b[0], w9 ; CHECK-NEXT: ubfx w9, w8, #4, #4 ; CHECK-NEXT: mov v0.b[1], w9 ; CHECK-NEXT: ubfx w9, w8, #8, #4 ; CHECK-NEXT: mov v0.b[2], w9 ; CHECK-NEXT: ubfx w9, w8, #12, #4 ; CHECK-NEXT: mov v0.b[3], w9 ; CHECK-NEXT: ubfx w9, w8, #16, #4 ; CHECK-NEXT: mov v0.b[4], w9 ; CHECK-NEXT: ubfx w9, w8, #20, #4 ; CHECK-NEXT: mov v0.b[5], w9 ; CHECK-NEXT: ubfx w9, w8, #24, #4 ; CHECK-NEXT: mov v0.b[6], w9 ; CHECK-NEXT: lsr w9, w8, #28 ; CHECK-NEXT: mov v0.b[7], w9 ; CHECK-NEXT: ubfx x9, x8, #32, #4 ; CHECK-NEXT: mov v0.b[8], w9 ; CHECK-NEXT: ubfx x9, x8, #36, #4 ; CHECK-NEXT: mov v0.b[9], w9 ; CHECK-NEXT: ubfx x9, x8, #40, #4 ; CHECK-NEXT: mov v0.b[10], w9 ; CHECK-NEXT: ubfx x9, x8, #44, #4 ; CHECK-NEXT: mov v0.b[11], w9 ; CHECK-NEXT: ubfx x9, x8, #52, #4 ; CHECK-NEXT: mov v0.b[13], w9 ; CHECK-NEXT: ubfx x9, x8, #56, #4 ; CHECK-NEXT: lsr x8, x8, #60 ; CHECK-NEXT: mov v0.b[14], w9 ; CHECK-NEXT: mov v0.b[15], w8 ; CHECK-NEXT: add sp, sp, #16 ; CHECK-NEXT: ret %res = shufflevector <2 x i4> %arg, <2 x i4> poison, <16 x i32> ret <16 x i4> %res }