@@ -49,95 +49,26 @@ define <16 x i32> @test_insert_vector(<16 x i32> noundef %a, i32 noundef %idx, <
4949; CHECK: .p2align 4
5050; CHECK-NEXT: // %bb.0: // %entry
5151; CHECK-NEXT: nopb ; nopa ; nops ; jz r0, #.LBB1_2; nopv
52- ; CHECK-NEXT: nopx // Delay Slot 5
52+ ; CHECK-NEXT: nopa ; nopx // Delay Slot 5
5353; CHECK-NEXT: nop // Delay Slot 4
5454; CHECK-NEXT: nop // Delay Slot 3
55- ; CHECK-NEXT: mov r24, r16 // Delay Slot 2
56- ; CHECK-NEXT: mova r16, #0 // Delay Slot 1
55+ ; CHECK-NEXT: nop // Delay Slot 2
56+ ; CHECK-NEXT: vmov wl0, wl4 // Delay Slot 1
5757; CHECK-NEXT: // %bb.1: // %if.end
58- ; CHECK-NEXT: vextract.s32 r0, x2, r16
59- ; CHECK-NEXT: vextract.s32 r1, x4, r16
60- ; CHECK-NEXT: nop
61- ; CHECK-NEXT: mova r16, #1
62- ; CHECK-NEXT: vextract.s32 r2, x2, r16
63- ; CHECK-NEXT: vextract.s32 r3, x4, r16
64- ; CHECK-NEXT: nop
65- ; CHECK-NEXT: mova r16, #2
66- ; CHECK-NEXT: vextract.s32 r4, x2, r16
67- ; CHECK-NEXT: vextract.s32 r5, x4, r16
68- ; CHECK-NEXT: nop
69- ; CHECK-NEXT: mova r16, #3
70- ; CHECK-NEXT: vextract.s32 r6, x2, r16
71- ; CHECK-NEXT: vextract.s32 r7, x4, r16
72- ; CHECK-NEXT: nop
73- ; CHECK-NEXT: mova r16, #4
74- ; CHECK-NEXT: vextract.s32 r8, x2, r16
75- ; CHECK-NEXT: vextract.s32 r9, x4, r16
76- ; CHECK-NEXT: nop
77- ; CHECK-NEXT: mova r16, #5
78- ; CHECK-NEXT: vextract.s32 r10, x2, r16
79- ; CHECK-NEXT: vextract.s32 r11, x4, r16
80- ; CHECK-NEXT: nop
81- ; CHECK-NEXT: mova r16, #7
82- ; CHECK-NEXT: vextract.s32 r12, x2, r16
83- ; CHECK-NEXT: j #.LBB1_3
84- ; CHECK-NEXT: vextract.s32 r13, x4, r16 // Delay Slot 5
85- ; CHECK-NEXT: nop // Delay Slot 4
86- ; CHECK-NEXT: mova r16, #6 // Delay Slot 3
87- ; CHECK-NEXT: vextract.s32 r14, x2, r16 // Delay Slot 2
88- ; CHECK-NEXT: vextract.s32 r15, x4, r16 // Delay Slot 1
58+ ; CHECK-NEXT: nopb ; nopa ; nops ; ret lr ; nopm ; nopv
59+ ; CHECK-NEXT: nopx // Delay Slot 5
60+ ; CHECK-NEXT: vmov wh2, wl0 // Delay Slot 4
61+ ; CHECK-NEXT: nop // Delay Slot 3
62+ ; CHECK-NEXT: vmov x0, x2 // Delay Slot 2
63+ ; CHECK-NEXT: nop // Delay Slot 1
8964; CHECK-NEXT: .p2align 4
9065; CHECK-NEXT: .LBB1_2: // %if.then
91- ; CHECK-NEXT: nopa ; nopx ; vextract.s32 r0, x4, r16
92- ; CHECK-NEXT: vextract.s32 r1, x2, r16
93- ; CHECK-NEXT: nop
94- ; CHECK-NEXT: mova r16, #1
95- ; CHECK-NEXT: vextract.s32 r2, x4, r16
96- ; CHECK-NEXT: vextract.s32 r3, x2, r16
97- ; CHECK-NEXT: nop
98- ; CHECK-NEXT: mova r16, #2
99- ; CHECK-NEXT: vextract.s32 r4, x4, r16
100- ; CHECK-NEXT: vextract.s32 r5, x2, r16
101- ; CHECK-NEXT: nop
102- ; CHECK-NEXT: mova r16, #3
103- ; CHECK-NEXT: vextract.s32 r6, x4, r16
104- ; CHECK-NEXT: vextract.s32 r7, x2, r16
105- ; CHECK-NEXT: nop
106- ; CHECK-NEXT: mova r16, #4
107- ; CHECK-NEXT: vextract.s32 r8, x4, r16
108- ; CHECK-NEXT: vextract.s32 r9, x2, r16
109- ; CHECK-NEXT: nop
110- ; CHECK-NEXT: mova r16, #5
111- ; CHECK-NEXT: vextract.s32 r10, x4, r16
112- ; CHECK-NEXT: vextract.s32 r11, x2, r16
113- ; CHECK-NEXT: nop
114- ; CHECK-NEXT: mova r16, #7
115- ; CHECK-NEXT: vextract.s32 r12, x4, r16
116- ; CHECK-NEXT: vextract.s32 r13, x2, r16
117- ; CHECK-NEXT: nop
118- ; CHECK-NEXT: mova r16, #6
119- ; CHECK-NEXT: vextract.s32 r14, x4, r16
120- ; CHECK-NEXT: vextract.s32 r15, x2, r16
121- ; CHECK-NEXT: .p2align 4
122- ; CHECK-NEXT: .LBB1_3: // %cleanup
123- ; CHECK-NEXT: nopa ; nopb ; nopx ; vpush.lo.32 x0, r13, x0
124- ; CHECK-NEXT: vpush.lo.32 x0, r15, x0
125- ; CHECK-NEXT: vpush.lo.32 x0, r11, x0
126- ; CHECK-NEXT: vpush.lo.32 x0, r9, x0
127- ; CHECK-NEXT: vpush.lo.32 x0, r7, x0
128- ; CHECK-NEXT: vpush.lo.32 x0, r5, x0
129- ; CHECK-NEXT: vpush.lo.32 x0, r3, x0
130- ; CHECK-NEXT: vpush.lo.32 x0, r1, x0
131- ; CHECK-NEXT: vpush.lo.32 x0, r12, x0
132- ; CHECK-NEXT: vpush.lo.32 x0, r14, x0
133- ; CHECK-NEXT: vpush.lo.32 x0, r10, x0
134- ; CHECK-NEXT: vpush.lo.32 x0, r8, x0
13566; CHECK-NEXT: ret lr
136- ; CHECK-NEXT: vpush.lo.32 x0, r6, x0 // Delay Slot 5
137- ; CHECK-NEXT: vpush.lo.32 x0, r4, x0 // Delay Slot 4
138- ; CHECK-NEXT: vpush.lo.32 x0, r2, x0 // Delay Slot 3
139- ; CHECK-NEXT: vpush.lo.32 x0, r0, x0 // Delay Slot 2
140- ; CHECK-NEXT: mov r16, r24 // Delay Slot 1
67+ ; CHECK-NEXT: nop // Delay Slot 5
68+ ; CHECK-NEXT: nop // Delay Slot 4
69+ ; CHECK-NEXT: nop // Delay Slot 3
70+ ; CHECK-NEXT: vmov wh0, wl2 // Delay Slot 2
71+ ; CHECK-NEXT: nop // Delay Slot 1
14172entry:
14273 %shuffle = shufflevector <8 x i32 > %b , <8 x i32 > undef , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef , i32 undef >
14374 %cmp = icmp eq i32 %idx , 0
0 commit comments