@@ -70,9 +70,12 @@ define <16 x i8> @concat_v16i8(<8 x i8> %op1, <8 x i8> %op2) {
7070;
7171; NONEON-NOSVE-LABEL: concat_v16i8:
7272; NONEON-NOSVE: // %bb.0:
73- ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-16]!
74- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
75- ; NONEON-NOSVE-NEXT: ldr q0, [sp], #16
73+ ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-32]!
74+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
75+ ; NONEON-NOSVE-NEXT: ldp x8, x9, [sp]
76+ ; NONEON-NOSVE-NEXT: stp x8, x9, [sp, #16]
77+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
78+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
7679; NONEON-NOSVE-NEXT: ret
7780 %res = shufflevector <8 x i8 > %op1 , <8 x i8 > %op2 , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 ,
7881 i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 >
@@ -181,9 +184,12 @@ define <8 x i16> @concat_v8i16(<4 x i16> %op1, <4 x i16> %op2) {
181184;
182185; NONEON-NOSVE-LABEL: concat_v8i16:
183186; NONEON-NOSVE: // %bb.0:
184- ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-16]!
185- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
186- ; NONEON-NOSVE-NEXT: ldr q0, [sp], #16
187+ ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-32]!
188+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
189+ ; NONEON-NOSVE-NEXT: ldp x8, x9, [sp]
190+ ; NONEON-NOSVE-NEXT: stp x8, x9, [sp, #16]
191+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
192+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
187193; NONEON-NOSVE-NEXT: ret
188194 %res = shufflevector <4 x i16 > %op1 , <4 x i16 > %op2 , <8 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 >
189195 ret <8 x i16 > %res
@@ -279,9 +285,14 @@ define <4 x i32> @concat_v4i32(<2 x i32> %op1, <2 x i32> %op2) {
279285;
280286; NONEON-NOSVE-LABEL: concat_v4i32:
281287; NONEON-NOSVE: // %bb.0:
282- ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-16]!
283- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
284- ; NONEON-NOSVE-NEXT: ldr q0, [sp], #16
288+ ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-32]!
289+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
290+ ; NONEON-NOSVE-NEXT: ldp w8, w9, [sp, #8]
291+ ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #24]
292+ ; NONEON-NOSVE-NEXT: ldp w8, w9, [sp]
293+ ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #16]
294+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
295+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
285296; NONEON-NOSVE-NEXT: ret
286297 %res = shufflevector <2 x i32 > %op1 , <2 x i32 > %op2 , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
287298 ret <4 x i32 > %res
@@ -441,9 +452,12 @@ define <8 x half> @concat_v8f16(<4 x half> %op1, <4 x half> %op2) {
441452;
442453; NONEON-NOSVE-LABEL: concat_v8f16:
443454; NONEON-NOSVE: // %bb.0:
444- ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-16]!
445- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
446- ; NONEON-NOSVE-NEXT: ldr q0, [sp], #16
455+ ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-32]!
456+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
457+ ; NONEON-NOSVE-NEXT: ldp x8, x9, [sp]
458+ ; NONEON-NOSVE-NEXT: stp x8, x9, [sp, #16]
459+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
460+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
447461; NONEON-NOSVE-NEXT: ret
448462 %res = shufflevector <4 x half > %op1 , <4 x half > %op2 , <8 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 >
449463 ret <8 x half > %res
@@ -539,9 +553,14 @@ define <4 x float> @concat_v4f32(<2 x float> %op1, <2 x float> %op2) {
539553;
540554; NONEON-NOSVE-LABEL: concat_v4f32:
541555; NONEON-NOSVE: // %bb.0:
542- ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-16]!
543- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
544- ; NONEON-NOSVE-NEXT: ldr q0, [sp], #16
556+ ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #-32]!
557+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
558+ ; NONEON-NOSVE-NEXT: ldp s0, s1, [sp, #8]
559+ ; NONEON-NOSVE-NEXT: stp s0, s1, [sp, #24]
560+ ; NONEON-NOSVE-NEXT: ldp s0, s1, [sp]
561+ ; NONEON-NOSVE-NEXT: stp s0, s1, [sp, #16]
562+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
563+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
545564; NONEON-NOSVE-NEXT: ret
546565 %res = shufflevector <2 x float > %op1 , <2 x float > %op2 , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
547566 ret <4 x float > %res
@@ -754,12 +773,15 @@ define void @concat_v32i8_4op(ptr %a, ptr %b) {
754773;
755774; NONEON-NOSVE-LABEL: concat_v32i8_4op:
756775; NONEON-NOSVE: // %bb.0:
776+ ; NONEON-NOSVE-NEXT: sub sp, sp, #32
777+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
757778; NONEON-NOSVE-NEXT: ldr d0, [x0]
758- ; NONEON-NOSVE-NEXT: str d0, [sp, #-16]!
759- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
760- ; NONEON-NOSVE-NEXT: ldr q0, [sp]
779+ ; NONEON-NOSVE-NEXT: str d0, [sp, #8]
780+ ; NONEON-NOSVE-NEXT: ldr x8, [sp, #8]
781+ ; NONEON-NOSVE-NEXT: str x8, [sp, #16]
782+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
761783; NONEON-NOSVE-NEXT: str q0, [x1]
762- ; NONEON-NOSVE-NEXT: add sp, sp, #16
784+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
763785; NONEON-NOSVE-NEXT: ret
764786 %op1 = load <8 x i8 >, ptr %a
765787 %shuffle = shufflevector <8 x i8 > %op1 , <8 x i8 > undef , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 ,
@@ -781,12 +803,15 @@ define void @concat_v16i16_4op(ptr %a, ptr %b) {
781803;
782804; NONEON-NOSVE-LABEL: concat_v16i16_4op:
783805; NONEON-NOSVE: // %bb.0:
806+ ; NONEON-NOSVE-NEXT: sub sp, sp, #32
807+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
784808; NONEON-NOSVE-NEXT: ldr d0, [x0]
785- ; NONEON-NOSVE-NEXT: str d0, [sp, #-16]!
786- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
787- ; NONEON-NOSVE-NEXT: ldr q0, [sp]
809+ ; NONEON-NOSVE-NEXT: str d0, [sp, #8]
810+ ; NONEON-NOSVE-NEXT: ldr x8, [sp, #8]
811+ ; NONEON-NOSVE-NEXT: str x8, [sp, #16]
812+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
788813; NONEON-NOSVE-NEXT: str q0, [x1]
789- ; NONEON-NOSVE-NEXT: add sp, sp, #16
814+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
790815; NONEON-NOSVE-NEXT: ret
791816 %op1 = load <4 x i16 >, ptr %a
792817 %shuffle = shufflevector <4 x i16 > %op1 , <4 x i16 > undef , <8 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 >
@@ -805,12 +830,15 @@ define void @concat_v8i32_4op(ptr %a, ptr %b) {
805830;
806831; NONEON-NOSVE-LABEL: concat_v8i32_4op:
807832; NONEON-NOSVE: // %bb.0:
833+ ; NONEON-NOSVE-NEXT: sub sp, sp, #32
834+ ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
808835; NONEON-NOSVE-NEXT: ldr d0, [x0]
809- ; NONEON-NOSVE-NEXT: str d0, [sp, #-16]!
810- ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
811- ; NONEON-NOSVE-NEXT: ldr q0, [sp]
836+ ; NONEON-NOSVE-NEXT: str d0, [sp, #8]
837+ ; NONEON-NOSVE-NEXT: ldp w8, w9, [sp, #8]
838+ ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #16]
839+ ; NONEON-NOSVE-NEXT: ldr q0, [sp, #16]
812840; NONEON-NOSVE-NEXT: str q0, [x1]
813- ; NONEON-NOSVE-NEXT: add sp, sp, #16
841+ ; NONEON-NOSVE-NEXT: add sp, sp, #32
814842; NONEON-NOSVE-NEXT: ret
815843 %op1 = load <2 x i32 >, ptr %a
816844 %shuffle = shufflevector <2 x i32 > %op1 , <2 x i32 > undef , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
0 commit comments