1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve.fp -run-pass=arm-low-overhead-loops %s -o - --verify-machineinstrs | FileCheck %s
5 define void @combine_previous() {
10 define void @combine_middle() {
15 define void @combine_last() {
20 define void @combine_kill_flags() {
25 define void @no_combination_diff_reg_value() {
30 define void @no_combination_vcmp_already_merged() {
37 name: combine_previous
39 exposesReturnsTwice: false
41 regBankSelected: false
44 tracksRegLiveness: true
48 - { reg: '$r0', virtual-reg: '' }
49 - { reg: '$r1', virtual-reg: '' }
50 - { reg: '$r2', virtual-reg: '' }
54 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
55 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
56 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
57 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
58 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
59 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
61 debugValueSubstitutions: []
64 value: float 0xC7EFFFFFE0000000
66 isTargetSpecific: false
67 machineFunctionInfo: {}
69 ; CHECK-LABEL: name: combine_previous
71 ; CHECK-NEXT: successors: %bb.1(0x80000000)
72 ; CHECK-NEXT: liveins: $r0, $r1
74 ; CHECK-NEXT: renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, $noreg, undef renamable $q0
75 ; CHECK-NEXT: $lr = MVE_DLSTP_32 killed renamable $r1
77 ; CHECK-NEXT: bb.1 (align 4):
78 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)
79 ; CHECK-NEXT: liveins: $lr, $q0, $r0
81 ; CHECK-NEXT: renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg, $noreg
82 ; CHECK-NEXT: renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, $noreg, killed renamable $q0
83 ; CHECK-NEXT: MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
84 ; CHECK-NEXT: renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q1, 1, killed renamable $vpr, $noreg, killed renamable $q0
85 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.1
88 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
90 ; CHECK-NEXT: bb.3 (align 4):
91 ; CHECK-NEXT: CONSTPOOL_ENTRY 0, %const.0, 4
93 successors: %bb.6(0x80000000)
94 liveins: $r0, $r1, $r2
96 renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
97 renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, $noreg, undef renamable $q0
98 renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
99 renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
100 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
101 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
102 $lr = t2DoLoopStart renamable $lr
105 successors: %bb.6(0x7c000000), %bb.8(0x04000000)
106 liveins: $lr, $q0, $r0, $r1, $r2
108 renamable $lr = t2LoopDec killed renamable $lr, 1
109 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg, $noreg
110 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
111 MVE_VPST 8, implicit $vpr
112 renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr, $noreg
113 MVE_VPST 4, implicit $vpr
114 renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, renamable $q0
115 renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr, $noreg
116 MVE_VPST 8, implicit $vpr
117 renamable $q0 = MVE_VORR killed renamable $q1, renamable $q1, 1, killed renamable $vpr, $noreg, killed renamable $q0
118 t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
119 tB %bb.8, 14 /* CC::al */, $noreg
122 liveins: $r2, $r12, $q0
123 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
126 CONSTPOOL_ENTRY 0, %const.0, 4
132 exposesReturnsTwice: false
134 regBankSelected: false
137 tracksRegLiveness: true
141 - { reg: '$r0', virtual-reg: '' }
142 - { reg: '$r1', virtual-reg: '' }
143 - { reg: '$r2', virtual-reg: '' }
147 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
148 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
149 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
150 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
151 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
152 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
154 debugValueSubstitutions: []
157 value: float 0xC7EFFFFFE0000000
159 isTargetSpecific: false
160 machineFunctionInfo: {}
162 ; CHECK-LABEL: name: combine_middle
164 ; CHECK-NEXT: successors: %bb.1(0x80000000)
165 ; CHECK-NEXT: liveins: $q2, $r0, $r1
167 ; CHECK-NEXT: renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, $noreg, undef renamable $q0
168 ; CHECK-NEXT: $lr = MVE_DLSTP_32 killed renamable $r1
170 ; CHECK-NEXT: bb.1 (align 4):
171 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)
172 ; CHECK-NEXT: liveins: $lr, $q0, $q2, $r0
174 ; CHECK-NEXT: renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg, $noreg
175 ; CHECK-NEXT: renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, $noreg, killed renamable $q2
176 ; CHECK-NEXT: MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
177 ; CHECK-NEXT: renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, killed renamable $q2
178 ; CHECK-NEXT: MVE_VPST 8, implicit $vpr
179 ; CHECK-NEXT: dead renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, killed renamable $vpr, $noreg, killed renamable $q1
180 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.1
183 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
185 ; CHECK-NEXT: bb.3 (align 4):
186 ; CHECK-NEXT: CONSTPOOL_ENTRY 0, %const.0, 4
188 successors: %bb.6(0x80000000)
189 liveins: $r0, $r1, $r2
191 renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
192 renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, $noreg, undef renamable $q0
193 renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
194 renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
195 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
196 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
197 $lr = t2DoLoopStart renamable $lr
200 successors: %bb.6(0x7c000000), %bb.8(0x04000000)
201 liveins: $lr, $q0, $r0, $r1, $r2, $q2
203 renamable $lr = t2LoopDec killed renamable $lr, 1
204 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg, $noreg
205 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
206 MVE_VPST 2, implicit $vpr
207 renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr, $noreg
208 renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, killed renamable $q2
209 renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr, $noreg
210 MVE_VPST 8, implicit $vpr
211 renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, killed renamable $q2
212 MVE_VPST 8, implicit $vpr
213 renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, $noreg, renamable $q1
214 t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
215 tB %bb.8, 14 /* CC::al */, $noreg
218 liveins: $r2, $r12, $q0
219 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
222 CONSTPOOL_ENTRY 0, %const.0, 4
228 exposesReturnsTwice: false
230 regBankSelected: false
233 tracksRegLiveness: true
237 - { reg: '$r0', virtual-reg: '' }
238 - { reg: '$r1', virtual-reg: '' }
239 - { reg: '$r2', virtual-reg: '' }
243 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
244 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
245 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
246 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
247 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
248 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
250 debugValueSubstitutions: []
253 value: float 0xC7EFFFFFE0000000
255 isTargetSpecific: false
256 machineFunctionInfo: {}
258 ; CHECK-LABEL: name: combine_last
260 ; CHECK-NEXT: successors: %bb.1(0x80000000)
261 ; CHECK-NEXT: liveins: $q2, $r0, $r1
263 ; CHECK-NEXT: renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, $noreg, undef renamable $q0
264 ; CHECK-NEXT: $lr = MVE_DLSTP_32 killed renamable $r1
266 ; CHECK-NEXT: bb.1 (align 4):
267 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)
268 ; CHECK-NEXT: liveins: $lr, $q0, $q2, $r0
270 ; CHECK-NEXT: renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg, $noreg
271 ; CHECK-NEXT: MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
272 ; CHECK-NEXT: renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, killed renamable $vpr, $noreg, killed renamable $q2
273 ; CHECK-NEXT: MVE_VPTv4f32 8, renamable $q2, renamable $q1, 12, implicit-def $vpr
274 ; CHECK-NEXT: dead renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, killed renamable $vpr, $noreg, killed renamable $q1
275 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.1
278 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
280 ; CHECK-NEXT: bb.3 (align 4):
281 ; CHECK-NEXT: CONSTPOOL_ENTRY 0, %const.0, 4
283 successors: %bb.6(0x80000000)
284 liveins: $r0, $r1, $r2
286 renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
287 renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, $noreg, undef renamable $q0
288 renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
289 renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
290 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
291 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
292 $lr = t2DoLoopStart renamable $lr
295 successors: %bb.6(0x7c000000), %bb.8(0x04000000)
296 liveins: $lr, $q0, $r0, $r1, $r2, $q2
298 renamable $lr = t2LoopDec killed renamable $lr, 1
299 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg, $noreg
300 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
301 MVE_VPST 8, implicit $vpr
302 renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr, $noreg
303 MVE_VPST 2, implicit $vpr
304 renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr, $noreg
305 renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, killed renamable $q2
306 renamable $vpr = MVE_VCMPf32 renamable $q2, renamable $q1, 12, 1, killed renamable $vpr, $noreg
307 MVE_VPST 8, implicit $vpr
308 renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, $noreg, renamable $q1
309 t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
310 tB %bb.8, 14 /* CC::al */, $noreg
313 liveins: $r2, $r12, $q0
314 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
317 CONSTPOOL_ENTRY 0, %const.0, 4
321 name: combine_kill_flags
323 exposesReturnsTwice: false
325 regBankSelected: false
328 tracksRegLiveness: true
332 - { reg: '$r0', virtual-reg: '' }
333 - { reg: '$r1', virtual-reg: '' }
334 - { reg: '$r2', virtual-reg: '' }
338 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
339 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
340 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
341 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
342 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
343 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
345 debugValueSubstitutions: []
348 value: float 0xC7EFFFFFE0000000
350 isTargetSpecific: false
351 machineFunctionInfo: {}
353 ; CHECK-LABEL: name: combine_kill_flags
355 ; CHECK-NEXT: successors: %bb.1(0x80000000)
356 ; CHECK-NEXT: liveins: $q2, $r0, $r1
358 ; CHECK-NEXT: renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, $noreg, undef renamable $q0
359 ; CHECK-NEXT: $lr = MVE_DLSTP_32 killed renamable $r1
361 ; CHECK-NEXT: bb.1 (align 4):
362 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)
363 ; CHECK-NEXT: liveins: $lr, $q0, $q2, $r0
365 ; CHECK-NEXT: renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg, $noreg
366 ; CHECK-NEXT: renamable $q2 = MVE_VORR killed renamable $q2, renamable $q1, 0, $noreg, $noreg, killed renamable $q2
367 ; CHECK-NEXT: MVE_VPTv4f32 8, renamable $q0, killed renamable $q1, 12, implicit-def $vpr
368 ; CHECK-NEXT: renamable $q0 = MVE_VORR killed renamable $q0, killed renamable $q0, 1, killed renamable $vpr, $noreg, killed renamable $q0
369 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.1
372 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
374 ; CHECK-NEXT: bb.3 (align 4):
375 ; CHECK-NEXT: CONSTPOOL_ENTRY 0, %const.0, 4
377 successors: %bb.6(0x80000000)
378 liveins: $r0, $r1, $r2
380 renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
381 renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, $noreg, undef renamable $q0
382 renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
383 renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
384 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
385 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
386 $lr = t2DoLoopStart renamable $lr
389 successors: %bb.6(0x7c000000), %bb.8(0x04000000)
390 liveins: $lr, $q0, $r0, $r1, $r2, $q2
392 renamable $lr = t2LoopDec killed renamable $lr, 1
393 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg, $noreg
394 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
395 MVE_VPST 2, implicit $vpr
396 renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr, $noreg
397 renamable $vpr = MVE_VCMPf32 renamable $q0, renamable $q1, 12, 1, killed renamable $vpr, $noreg
398 renamable $q2 = MVE_VORR renamable $q2, killed renamable $q1, 0, $noreg, $noreg, killed renamable $q2
399 MVE_VPST 8, implicit $vpr
400 renamable $q0 = MVE_VORR renamable $q0, renamable $q0, 1, renamable $vpr, $noreg, killed renamable $q0
401 t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
402 tB %bb.8, 14 /* CC::al */, $noreg
405 liveins: $r2, $r12, $q0
406 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
409 CONSTPOOL_ENTRY 0, %const.0, 4
413 name: no_combination_diff_reg_value
415 exposesReturnsTwice: false
417 regBankSelected: false
420 tracksRegLiveness: true
424 - { reg: '$r0', virtual-reg: '' }
425 - { reg: '$r1', virtual-reg: '' }
426 - { reg: '$r2', virtual-reg: '' }
430 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
431 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
432 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
433 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
434 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
435 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
437 debugValueSubstitutions: []
440 value: float 0xC7EFFFFFE0000000
442 isTargetSpecific: false
443 machineFunctionInfo: {}
445 ; CHECK-LABEL: name: no_combination_diff_reg_value
447 ; CHECK-NEXT: successors: %bb.1(0x80000000)
448 ; CHECK-NEXT: liveins: $r0, $r1
450 ; CHECK-NEXT: renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, $noreg, undef renamable $q0
451 ; CHECK-NEXT: $lr = MVE_DLSTP_32 killed renamable $r1
453 ; CHECK-NEXT: bb.1 (align 4):
454 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)
455 ; CHECK-NEXT: liveins: $lr, $q0, $r0
457 ; CHECK-NEXT: renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg, $noreg
458 ; CHECK-NEXT: renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 0, $noreg, $noreg, killed renamable $q1
459 ; CHECK-NEXT: renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 0, killed $noreg, $noreg
460 ; CHECK-NEXT: renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, $noreg, killed renamable $q0
461 ; CHECK-NEXT: MVE_VPST 8, implicit $vpr
462 ; CHECK-NEXT: renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q1, 1, killed renamable $vpr, $noreg, killed renamable $q0
463 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.1
466 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
468 ; CHECK-NEXT: bb.3 (align 4):
469 ; CHECK-NEXT: CONSTPOOL_ENTRY 0, %const.0, 4
471 successors: %bb.6(0x80000000)
472 liveins: $r0, $r1, $r2
474 renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
475 renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, $noreg, undef renamable $q0
476 renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
477 renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
478 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
479 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
480 $lr = t2DoLoopStart renamable $lr
483 successors: %bb.6(0x7c000000), %bb.8(0x04000000)
484 liveins: $lr, $q0, $r0, $r1, $r2
486 renamable $lr = t2LoopDec killed renamable $lr, 1
487 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg, $noreg
488 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
489 MVE_VPST 8, implicit $vpr
490 renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr, $noreg
491 MVE_VPST 4, implicit $vpr
492 renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, $noreg, renamable $q1
493 renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr, $noreg
494 renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, $noreg, killed renamable $q0
495 MVE_VPST 8, implicit $vpr
496 renamable $q0 = MVE_VORR killed renamable $q1, renamable $q1, 1, killed renamable $vpr, $noreg, killed renamable $q0
497 t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
498 tB %bb.8, 14 /* CC::al */, $noreg
501 liveins: $r2, $r12, $q0
502 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
505 CONSTPOOL_ENTRY 0, %const.0, 4
509 name: no_combination_vcmp_already_merged
511 exposesReturnsTwice: false
513 regBankSelected: false
516 tracksRegLiveness: true
520 - { reg: '$r0', virtual-reg: '' }
521 - { reg: '$r1', virtual-reg: '' }
522 - { reg: '$r2', virtual-reg: '' }
526 - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
527 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
528 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
529 - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
530 stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
531 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
533 debugValueSubstitutions: []
536 value: float 0xC7EFFFFFE0000000
538 isTargetSpecific: false
539 machineFunctionInfo: {}
541 ; CHECK-LABEL: name: no_combination_vcmp_already_merged
543 ; CHECK-NEXT: successors: %bb.1(0x80000000)
544 ; CHECK-NEXT: liveins: $q2, $r0, $r1
546 ; CHECK-NEXT: renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, $noreg, undef renamable $q0
547 ; CHECK-NEXT: $lr = MVE_DLSTP_32 killed renamable $r1
549 ; CHECK-NEXT: bb.1 (align 4):
550 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)
551 ; CHECK-NEXT: liveins: $lr, $q0, $q2, $r0
553 ; CHECK-NEXT: renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg, $noreg
554 ; CHECK-NEXT: MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
555 ; CHECK-NEXT: renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, killed renamable $q2
556 ; CHECK-NEXT: MVE_VPST 8, implicit $vpr
557 ; CHECK-NEXT: dead renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, killed renamable $vpr, $noreg, killed renamable $q1
558 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.1
561 ; CHECK-NEXT: frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
563 ; CHECK-NEXT: bb.3 (align 4):
564 ; CHECK-NEXT: CONSTPOOL_ENTRY 0, %const.0, 4
566 successors: %bb.6(0x80000000)
567 liveins: $r0, $r1, $r2
569 renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
570 renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, $noreg, undef renamable $q0
571 renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
572 renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
573 renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
574 renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
575 $lr = t2DoLoopStart renamable $lr
578 successors: %bb.6(0x7c000000), %bb.8(0x04000000)
579 liveins: $lr, $q0, $r0, $r1, $r2, $q2
581 renamable $lr = t2LoopDec killed renamable $lr, 1
582 renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg, $noreg
583 renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
584 MVE_VPST 8, implicit $vpr
585 renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr, $noreg
586 MVE_VPST 4, implicit $vpr
587 renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr, $noreg
588 renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, $noreg, killed renamable $q2
589 MVE_VPST 8, implicit $vpr
590 renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, $noreg, renamable $q1
591 t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
592 tB %bb.8, 14 /* CC::al */, $noreg
595 liveins: $r2, $r12, $q0
596 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
599 CONSTPOOL_ENTRY 0, %const.0, 4