@@ -50,7 +50,7 @@ define void @extract_v32i8_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range(
5050; CHECK-LABEL: extract_v32i8_halves:
5151; CHECK: // %bb.0: // %entry
5252; CHECK-NEXT: ldr z0, [x0]
53- ; CHECK-NEXT: mov z1.d , z0.d
53+ ; CHECK-NEXT: movprfx z1, z0
5454; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
5555; CHECK-NEXT: str q1, [x1]
5656; CHECK-NEXT: str q0, [x2]
@@ -68,7 +68,7 @@ define void @extract_v32i8_half_unaligned(ptr %in, ptr %out) #0 vscale_range(2,2
6868; CHECK-LABEL: extract_v32i8_half_unaligned:
6969; CHECK: // %bb.0: // %entry
7070; CHECK-NEXT: ldr z0, [x0]
71- ; CHECK-NEXT: mov z1.d , z0.d
71+ ; CHECK-NEXT: movprfx z1, z0
7272; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
7373; CHECK-NEXT: ext v0.16b, v0.16b, v1.16b, #4
7474; CHECK-NEXT: str q0, [x1]
@@ -84,15 +84,16 @@ define void @extract_v32i8_quarters(ptr %in, ptr %out, ptr %out2, ptr %out3, ptr
8484; CHECK-LABEL: extract_v32i8_quarters:
8585; CHECK: // %bb.0: // %entry
8686; CHECK-NEXT: ldr z0, [x0]
87- ; CHECK-NEXT: mov z1.d, z0.d
88- ; CHECK-NEXT: mov z2.d, z0.d
87+ ; CHECK-NEXT: movprfx z1, z0
8988; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
89+ ; CHECK-NEXT: movprfx z2, z0
9090; CHECK-NEXT: ext z2.b, z2.b, z0.b, #24
91+ ; CHECK-NEXT: movprfx z3, z0
92+ ; CHECK-NEXT: ext z3.b, z3.b, z0.b, #8
9193; CHECK-NEXT: str d1, [x1]
9294; CHECK-NEXT: str d2, [x2]
9395; CHECK-NEXT: str d0, [x3]
94- ; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8
95- ; CHECK-NEXT: str d0, [x4]
96+ ; CHECK-NEXT: str d3, [x4]
9697; CHECK-NEXT: ret
9798entry:
9899 %b = load <32 x i8 >, ptr %in
@@ -126,7 +127,7 @@ define void @extract_v64i8_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range(
126127; CHECK: // %bb.0: // %entry
127128; CHECK-NEXT: ldr z0, [x0]
128129; CHECK-NEXT: ptrue p0.b, vl32
129- ; CHECK-NEXT: mov z1.d , z0.d
130+ ; CHECK-NEXT: movprfx z1, z0
130131; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
131132; CHECK-NEXT: st1b { z1.b }, p0, [x1]
132133; CHECK-NEXT: st1b { z0.b }, p0, [x2]
@@ -207,7 +208,7 @@ define void @extract_v16i16_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range
207208; CHECK-LABEL: extract_v16i16_halves:
208209; CHECK: // %bb.0: // %entry
209210; CHECK-NEXT: ldr z0, [x0]
210- ; CHECK-NEXT: mov z1.d , z0.d
211+ ; CHECK-NEXT: movprfx z1, z0
211212; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
212213; CHECK-NEXT: str q1, [x1]
213214; CHECK-NEXT: str q0, [x2]
@@ -240,7 +241,7 @@ define void @extract_v32i16_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range
240241; CHECK: // %bb.0: // %entry
241242; CHECK-NEXT: ldr z0, [x0]
242243; CHECK-NEXT: ptrue p0.h, vl16
243- ; CHECK-NEXT: mov z1.d , z0.d
244+ ; CHECK-NEXT: movprfx z1, z0
244245; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
245246; CHECK-NEXT: st1h { z1.h }, p0, [x1]
246247; CHECK-NEXT: st1h { z0.h }, p0, [x2]
@@ -322,7 +323,7 @@ define void @extract_v8i32_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range(
322323; CHECK-LABEL: extract_v8i32_halves:
323324; CHECK: // %bb.0: // %entry
324325; CHECK-NEXT: ldr z0, [x0]
325- ; CHECK-NEXT: mov z1.d , z0.d
326+ ; CHECK-NEXT: movprfx z1, z0
326327; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
327328; CHECK-NEXT: str q1, [x1]
328329; CHECK-NEXT: str q0, [x2]
@@ -355,7 +356,7 @@ define void @extract_v16i32_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range
355356; CHECK: // %bb.0: // %entry
356357; CHECK-NEXT: ldr z0, [x0]
357358; CHECK-NEXT: ptrue p0.s, vl8
358- ; CHECK-NEXT: mov z1.d , z0.d
359+ ; CHECK-NEXT: movprfx z1, z0
359360; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
360361; CHECK-NEXT: st1w { z1.s }, p0, [x1]
361362; CHECK-NEXT: st1w { z0.s }, p0, [x2]
@@ -426,7 +427,7 @@ define void @extract_v4i64_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range(
426427; CHECK-LABEL: extract_v4i64_halves:
427428; CHECK: // %bb.0: // %entry
428429; CHECK-NEXT: ldr z0, [x0]
429- ; CHECK-NEXT: mov z1.d , z0.d
430+ ; CHECK-NEXT: movprfx z1, z0
430431; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
431432; CHECK-NEXT: str q1, [x1]
432433; CHECK-NEXT: str q0, [x2]
@@ -459,7 +460,7 @@ define void @extract_v8i64_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_range(
459460; CHECK: // %bb.0: // %entry
460461; CHECK-NEXT: ldr z0, [x0]
461462; CHECK-NEXT: ptrue p0.d, vl4
462- ; CHECK-NEXT: mov z1.d , z0.d
463+ ; CHECK-NEXT: movprfx z1, z0
463464; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
464465; CHECK-NEXT: st1d { z1.d }, p0, [x1]
465466; CHECK-NEXT: st1d { z0.d }, p0, [x2]
@@ -553,7 +554,7 @@ define void @extract_v16half_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_rang
553554; CHECK-LABEL: extract_v16half_halves:
554555; CHECK: // %bb.0: // %entry
555556; CHECK-NEXT: ldr z0, [x0]
556- ; CHECK-NEXT: mov z1.d , z0.d
557+ ; CHECK-NEXT: movprfx z1, z0
557558; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
558559; CHECK-NEXT: str q1, [x1]
559560; CHECK-NEXT: str q0, [x2]
@@ -586,7 +587,7 @@ define void @extract_v32half_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_rang
586587; CHECK: // %bb.0: // %entry
587588; CHECK-NEXT: ldr z0, [x0]
588589; CHECK-NEXT: ptrue p0.h, vl16
589- ; CHECK-NEXT: mov z1.d , z0.d
590+ ; CHECK-NEXT: movprfx z1, z0
590591; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
591592; CHECK-NEXT: st1h { z1.h }, p0, [x1]
592593; CHECK-NEXT: st1h { z0.h }, p0, [x2]
@@ -668,7 +669,7 @@ define void @extract_v8float_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_rang
668669; CHECK-LABEL: extract_v8float_halves:
669670; CHECK: // %bb.0: // %entry
670671; CHECK-NEXT: ldr z0, [x0]
671- ; CHECK-NEXT: mov z1.d , z0.d
672+ ; CHECK-NEXT: movprfx z1, z0
672673; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
673674; CHECK-NEXT: str q1, [x1]
674675; CHECK-NEXT: str q0, [x2]
@@ -701,7 +702,7 @@ define void @extract_v16float_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_ran
701702; CHECK: // %bb.0: // %entry
702703; CHECK-NEXT: ldr z0, [x0]
703704; CHECK-NEXT: ptrue p0.s, vl8
704- ; CHECK-NEXT: mov z1.d , z0.d
705+ ; CHECK-NEXT: movprfx z1, z0
705706; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
706707; CHECK-NEXT: st1w { z1.s }, p0, [x1]
707708; CHECK-NEXT: st1w { z0.s }, p0, [x2]
@@ -772,7 +773,7 @@ define void @extract_v4double_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_ran
772773; CHECK-LABEL: extract_v4double_halves:
773774; CHECK: // %bb.0: // %entry
774775; CHECK-NEXT: ldr z0, [x0]
775- ; CHECK-NEXT: mov z1.d , z0.d
776+ ; CHECK-NEXT: movprfx z1, z0
776777; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
777778; CHECK-NEXT: str q1, [x1]
778779; CHECK-NEXT: str q0, [x2]
@@ -805,7 +806,7 @@ define void @extract_v8double_halves(ptr %in, ptr %out, ptr %out2) #0 vscale_ran
805806; CHECK: // %bb.0: // %entry
806807; CHECK-NEXT: ldr z0, [x0]
807808; CHECK-NEXT: ptrue p0.d, vl4
808- ; CHECK-NEXT: mov z1.d , z0.d
809+ ; CHECK-NEXT: movprfx z1, z0
809810; CHECK-NEXT: ext z1.b, z1.b, z0.b, #32
810811; CHECK-NEXT: st1d { z1.d }, p0, [x1]
811812; CHECK-NEXT: st1d { z0.d }, p0, [x2]
@@ -908,7 +909,7 @@ define void @extract_subvector_legalization_v8i32() vscale_range(2,2) #0 {
908909; CHECK-NEXT: add x8, x8, :lo12:.LCPI59_0
909910; CHECK-NEXT: ptrue p1.d
910911; CHECK-NEXT: ldr z0, [x8]
911- ; CHECK-NEXT: mov z1.d , z0.d
912+ ; CHECK-NEXT: movprfx z1, z0
912913; CHECK-NEXT: ext z1.b, z1.b, z0.b, #16
913914; CHECK-NEXT: cmeq v0.4s, v0.4s, #0
914915; CHECK-NEXT: cmeq v1.4s, v1.4s, #0
0 commit comments