@@ -48,100 +48,27 @@ define <16 x i32> @test_insert_vector(<16 x i32> noundef %a, i32 noundef %idx, <
4848; CHECK-LABEL: test_insert_vector:
4949; CHECK: .p2align 4
5050; CHECK-NEXT: // %bb.0: // %entry
51- ; CHECK-NEXT: nopa ; nopb ; jz r0, #.LBB1_2
52- ; CHECK-NEXT: mov r24, r16 // Delay Slot 5
53- ; CHECK-NEXT: mov r25, r17 // Delay Slot 4
54- ; CHECK-NEXT: mov r26, r18 // Delay Slot 3
55- ; CHECK-NEXT: mov r27, r19 // Delay Slot 2
56- ; CHECK-NEXT: mova r16, #0 // Delay Slot 1
51+ ; CHECK-NEXT: nopb ; nopa ; nops ; jz r0, #.LBB1_2; nopv
52+ ; CHECK-NEXT: nopa ; nopx // Delay Slot 5
53+ ; CHECK-NEXT: nop // Delay Slot 4
54+ ; CHECK-NEXT: nop // Delay Slot 3
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: nopx ; vextract.s32 r0, x2, r16
59- ; CHECK-NEXT: nop
60- ; CHECK-NEXT: mova r16, #1
61- ; CHECK-NEXT: mova r17, #5
62- ; CHECK-NEXT: mova r19, #6
63- ; CHECK-NEXT: mova r18, #0
64- ; CHECK-NEXT: vextract.s32 r1, x2, r16
65- ; CHECK-NEXT: vextract.s32 r8, x4, r18
66- ; CHECK-NEXT: movx r16, #2
67- ; CHECK-NEXT: mova r18, #1
68- ; CHECK-NEXT: vextract.s32 r5, x2, r17
69- ; CHECK-NEXT: vextract.s32 r6, x2, r19
70- ; CHECK-NEXT: vextract.s32 r13, x4, r17
71- ; CHECK-NEXT: vextract.s32 r15, x4, r19
72- ; CHECK-NEXT: vextract.s32 r2, x2, r16
73- ; CHECK-NEXT: vextract.s32 r9, x4, r18
74- ; CHECK-NEXT: movx r16, #3
75- ; CHECK-NEXT: mova r18, #2
76- ; CHECK-NEXT: vextract.s32 r10, x4, r18
77- ; CHECK-NEXT: vextract.s32 r3, x2, r16
78- ; CHECK-NEXT: nop
79- ; CHECK-NEXT: mova r16, #4
80- ; CHECK-NEXT: vextract.s32 r4, x2, r16
81- ; CHECK-NEXT: movx r18, #3
82- ; CHECK-NEXT: mova r16, #7
83- ; CHECK-NEXT: vextract.s32 r11, x4, r18
84- ; CHECK-NEXT: j #.LBB1_3
85- ; CHECK-NEXT: mova r18, #4 // Delay Slot 5
86- ; CHECK-NEXT: vextract.s32 r7, x2, r16 // Delay Slot 4
87- ; CHECK-NEXT: vextract.s32 r12, x4, r18 // Delay Slot 3
88- ; CHECK-NEXT: vextract.s32 r14, x4, r16 // Delay Slot 2
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
8963; CHECK-NEXT: nop // Delay Slot 1
9064; CHECK-NEXT: .p2align 4
9165; CHECK-NEXT: .LBB1_2: // %if.then
92- ; CHECK-NEXT: nopb ; nopa ; nops ; nopx ; vextract.s32 r0, x4, r16; nopv
93- ; CHECK-NEXT: nop
94- ; CHECK-NEXT: mova r16, #1
95- ; CHECK-NEXT: mova r17, #5
96- ; CHECK-NEXT: mova r19, #6
97- ; CHECK-NEXT: mova r18, #0
98- ; CHECK-NEXT: vextract.s32 r1, x4, r16
99- ; CHECK-NEXT: vextract.s32 r8, x2, r18
100- ; CHECK-NEXT: movx r16, #2
101- ; CHECK-NEXT: mova r18, #1
102- ; CHECK-NEXT: vextract.s32 r5, x4, r17
103- ; CHECK-NEXT: vextract.s32 r6, x4, r19
104- ; CHECK-NEXT: vextract.s32 r13, x2, r17
105- ; CHECK-NEXT: vextract.s32 r15, x2, r19
106- ; CHECK-NEXT: vextract.s32 r2, x4, r16
107- ; CHECK-NEXT: vextract.s32 r9, x2, r18
108- ; CHECK-NEXT: movx r16, #3
109- ; CHECK-NEXT: mova r18, #2
110- ; CHECK-NEXT: vextract.s32 r3, x4, r16
111- ; CHECK-NEXT: vextract.s32 r10, x2, r18
112- ; CHECK-NEXT: movx r16, #4
113- ; CHECK-NEXT: mova r18, #3
114- ; CHECK-NEXT: vextract.s32 r4, x4, r16
115- ; CHECK-NEXT: vextract.s32 r11, x2, r18
116- ; CHECK-NEXT: movx r16, #7
117- ; CHECK-NEXT: mova r18, #4
118- ; CHECK-NEXT: vextract.s32 r7, x4, r16
119- ; CHECK-NEXT: vextract.s32 r12, x2, r18
120- ; CHECK-NEXT: vextract.s32 r14, x2, r16
121- ; CHECK-NEXT: nop
122- ; CHECK-NEXT: .p2align 4
123- ; CHECK-NEXT: .LBB1_3: // %cleanup
124- ; CHECK-NEXT: nopb ; nopa ; nops ; nopx ; mov r19, r27; nopv
125- ; CHECK-NEXT: mov r18, r26
126- ; CHECK-NEXT: mov r17, r25
127- ; CHECK-NEXT: vpush.lo.32 x0, r14, x0
128- ; CHECK-NEXT: vpush.lo.32 x0, r15, x0
129- ; CHECK-NEXT: vpush.lo.32 x0, r13, x0
130- ; CHECK-NEXT: vpush.lo.32 x0, r12, x0
131- ; CHECK-NEXT: vpush.lo.32 x0, r11, x0
132- ; CHECK-NEXT: vpush.lo.32 x0, r10, x0
133- ; CHECK-NEXT: vpush.lo.32 x0, r9, x0
134- ; CHECK-NEXT: vpush.lo.32 x0, r8, x0
135- ; CHECK-NEXT: vpush.lo.32 x0, r7, x0
136- ; CHECK-NEXT: vpush.lo.32 x0, r6, x0
137- ; CHECK-NEXT: vpush.lo.32 x0, r5, x0
138- ; CHECK-NEXT: vpush.lo.32 x0, r4, x0
13966; CHECK-NEXT: ret lr
140- ; CHECK-NEXT: vpush.lo.32 x0, r3, x0 // Delay Slot 5
141- ; CHECK-NEXT: vpush.lo.32 x0, r2, x0 // Delay Slot 4
142- ; CHECK-NEXT: vpush.lo.32 x0, r1, x0 // Delay Slot 3
143- ; CHECK-NEXT: vpush.lo.32 x0, r0, x0 // Delay Slot 2
144- ; 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
14572entry:
14673 %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 >
14774 %cmp = icmp eq i32 %idx , 0
0 commit comments