Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/AArch64/insert-subvector-res-legalization.ll
Show First 20 Lines • Show All 202 Lines • ▼ Show 20 Lines | ; CHECK-NEXT: ret | ||||
ret <vscale x 2 x i32> %ins | ret <vscale x 2 x i32> %ins | ||||
} | } | ||||
define <vscale x 2 x i32> @vec_scalable_subvec_fixed_idx_nonzero_large_i32(<vscale x 2 x i32>* %a, <8 x i32>* %b) #1 { | define <vscale x 2 x i32> @vec_scalable_subvec_fixed_idx_nonzero_large_i32(<vscale x 2 x i32>* %a, <8 x i32>* %b) #1 { | ||||
; CHECK-LABEL: vec_scalable_subvec_fixed_idx_nonzero_large_i32: | ; CHECK-LABEL: vec_scalable_subvec_fixed_idx_nonzero_large_i32: | ||||
; CHECK: // %bb.0: | ; CHECK: // %bb.0: | ||||
; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill | ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill | ||||
; CHECK-NEXT: addvl sp, sp, #-1 | ; CHECK-NEXT: addvl sp, sp, #-1 | ||||
; CHECK-NEXT: cntd x8 | |||||
; CHECK-NEXT: ptrue p0.d | ; CHECK-NEXT: ptrue p0.d | ||||
; CHECK-NEXT: ptrue p1.s, vl8 | ; CHECK-NEXT: cntd x8 | ||||
; CHECK-NEXT: subs x8, x8, #8 | |||||
; CHECK-NEXT: ld1w { z0.d }, p0/z, [x0] | ; CHECK-NEXT: ld1w { z0.d }, p0/z, [x0] | ||||
; CHECK-NEXT: ld1w { z1.s }, p1/z, [x1] | ; CHECK-NEXT: subs x8, x8, #8 | ||||
; CHECK-NEXT: ptrue p1.d, vl8 | |||||
; CHECK-NEXT: csel x8, xzr, x8, lo | ; CHECK-NEXT: csel x8, xzr, x8, lo | ||||
; CHECK-NEXT: mov w9, #8 | ; CHECK-NEXT: mov w9, #8 | ||||
; CHECK-NEXT: cmp x8, #8 | ; CHECK-NEXT: cmp x8, #8 | ||||
; CHECK-NEXT: csel x8, x8, x9, lo | ; CHECK-NEXT: csel x8, x8, x9, lo | ||||
; CHECK-NEXT: mov x9, sp | ; CHECK-NEXT: mov x9, sp | ||||
; CHECK-NEXT: uunpklo z1.d, z1.s | |||||
; CHECK-NEXT: st1d { z0.d }, p0, [sp] | ; CHECK-NEXT: st1d { z0.d }, p0, [sp] | ||||
; CHECK-NEXT: st1d { z1.d }, p0, [x9, x8, lsl #3] | ; CHECK-NEXT: ld1w { z0.d }, p1/z, [x1] | ||||
; CHECK-NEXT: st1d { z0.d }, p0, [x9, x8, lsl #3] | |||||
; CHECK-NEXT: ld1d { z0.d }, p0/z, [sp] | ; CHECK-NEXT: ld1d { z0.d }, p0/z, [sp] | ||||
; CHECK-NEXT: addvl sp, sp, #1 | ; CHECK-NEXT: addvl sp, sp, #1 | ||||
; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload | ; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload | ||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
%vec = load <vscale x 2 x i32>, <vscale x 2 x i32>* %a | %vec = load <vscale x 2 x i32>, <vscale x 2 x i32>* %a | ||||
%subvec = load <8 x i32>, <8 x i32>* %b | %subvec = load <8 x i32>, <8 x i32>* %b | ||||
%ins = call <vscale x 2 x i32> @llvm.vector.insert.nxv2i32.v8i32(<vscale x 2 x i32> %vec, <8 x i32> %subvec, i64 8) | %ins = call <vscale x 2 x i32> @llvm.vector.insert.nxv2i32.v8i32(<vscale x 2 x i32> %vec, <8 x i32> %subvec, i64 8) | ||||
ret <vscale x 2 x i32> %ins | ret <vscale x 2 x i32> %ins | ||||
Show All 13 Lines |