1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -run-pass=arm-low-overhead-loops %s -o - --verify-machineinstrs | FileCheck %s
3
4--- |
5  define void @combine_previous() {
6  while.end6:
7    ret void
8  }
9
10  define void @combine_middle() {
11  while.end6:
12    ret void
13  }
14
15  define void @combine_last() {
16  while.end6:
17    ret void
18  }
19
20  define void @combine_kill_flags() {
21  while.end6:
22    ret void
23  }
24
25  define void @no_combination_diff_reg_value() {
26  while.end6:
27    ret void
28  }
29
30  define void @no_combination_vcmp_already_merged() {
31  while.end6:
32    ret void
33  }
34
35...
36---
37name:            combine_previous
38alignment:       8
39exposesReturnsTwice: false
40legalized:       false
41regBankSelected: false
42selected:        false
43failedISel:      false
44tracksRegLiveness: true
45hasWinCFI:       false
46registers:       []
47liveins:
48  - { reg: '$r0', virtual-reg: '' }
49  - { reg: '$r1', virtual-reg: '' }
50  - { reg: '$r2', virtual-reg: '' }
51frameInfo:
52fixedStack:      []
53stack:
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: '' }
60callSites:       []
61debugValueSubstitutions: []
62constants:
63  - id:              0
64    value:           float 0xC7EFFFFFE0000000
65    alignment:       4
66    isTargetSpecific: false
67machineFunctionInfo: {}
68body:             |
69  ; CHECK-LABEL: name: combine_previous
70  ; CHECK: bb.0:
71  ; CHECK:   successors: %bb.1(0x80000000)
72  ; CHECK:   liveins: $r0, $r1
73  ; CHECK:   renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, undef renamable $q0
74  ; CHECK:   $lr = MVE_DLSTP_32 killed renamable $r1
75  ; CHECK: bb.1 (align 4):
76  ; CHECK:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
77  ; CHECK:   liveins: $lr, $q0, $r0
78  ; CHECK:   renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg
79  ; CHECK:   renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, killed renamable $q0
80  ; CHECK:   MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
81  ; CHECK:   renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q1, 1, killed renamable $vpr, killed renamable $q0
82  ; CHECK:   $lr = MVE_LETP killed renamable $lr, %bb.1
83  ; CHECK: bb.2:
84  ; CHECK:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
85  ; CHECK: bb.3 (align 4):
86  ; CHECK:   CONSTPOOL_ENTRY 0, %const.0, 4
87  bb.0:
88    successors: %bb.6(0x80000000)
89    liveins: $r0, $r1, $r2
90
91    renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
92    renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, undef renamable $q0
93    renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
94    renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
95    renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
96    renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
97    $lr = t2DoLoopStart renamable $lr
98
99  bb.6 (align 4):
100    successors: %bb.6(0x7c000000), %bb.8(0x04000000)
101    liveins: $lr, $q0, $r0, $r1, $r2
102
103    renamable $lr = t2LoopDec killed renamable $lr, 1
104    renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
105    renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
106    MVE_VPST 8, implicit $vpr
107    renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr
108    MVE_VPST 4, implicit $vpr
109    renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, renamable $q0
110    renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr
111    MVE_VPST 8, implicit $vpr
112    renamable $q0 = MVE_VORR killed renamable $q1, renamable $q1, 1, killed renamable $vpr, killed renamable $q0
113    t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
114    tB %bb.8, 14 /* CC::al */, $noreg
115
116  bb.8:
117    liveins: $r2, $r12, $q0
118    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
119
120  bb.9 (align 4):
121    CONSTPOOL_ENTRY 0, %const.0, 4
122
123...
124---
125name:            combine_middle
126alignment:       8
127exposesReturnsTwice: false
128legalized:       false
129regBankSelected: false
130selected:        false
131failedISel:      false
132tracksRegLiveness: true
133hasWinCFI:       false
134registers:       []
135liveins:
136  - { reg: '$r0', virtual-reg: '' }
137  - { reg: '$r1', virtual-reg: '' }
138  - { reg: '$r2', virtual-reg: '' }
139frameInfo:
140fixedStack:      []
141stack:
142  - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
143      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
144      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
145  - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
146      stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
147      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
148callSites:       []
149debugValueSubstitutions: []
150constants:
151  - id:              0
152    value:           float 0xC7EFFFFFE0000000
153    alignment:       4
154    isTargetSpecific: false
155machineFunctionInfo: {}
156body:             |
157  ; CHECK-LABEL: name: combine_middle
158  ; CHECK: bb.0:
159  ; CHECK:   successors: %bb.1(0x80000000)
160  ; CHECK:   liveins: $q2, $r0, $r1
161  ; CHECK:   renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, undef renamable $q0
162  ; CHECK:   $lr = MVE_DLSTP_32 killed renamable $r1
163  ; CHECK: bb.1 (align 4):
164  ; CHECK:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
165  ; CHECK:   liveins: $lr, $q0, $q2, $r0
166  ; CHECK:   renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg
167  ; CHECK:   renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, killed renamable $q2
168  ; CHECK:   MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
169  ; CHECK:   renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, killed renamable $q2
170  ; CHECK:   MVE_VPST 8, implicit $vpr
171  ; CHECK:   dead renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, killed renamable $vpr, killed renamable $q1
172  ; CHECK:   $lr = MVE_LETP killed renamable $lr, %bb.1
173  ; CHECK: bb.2:
174  ; CHECK:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
175  ; CHECK: bb.3 (align 4):
176  ; CHECK:   CONSTPOOL_ENTRY 0, %const.0, 4
177  bb.0:
178    successors: %bb.6(0x80000000)
179    liveins: $r0, $r1, $r2
180
181    renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
182    renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, undef renamable $q0
183    renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
184    renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
185    renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
186    renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
187    $lr = t2DoLoopStart renamable $lr
188
189  bb.6 (align 4):
190    successors: %bb.6(0x7c000000), %bb.8(0x04000000)
191    liveins: $lr, $q0, $r0, $r1, $r2, $q2
192
193    renamable $lr = t2LoopDec killed renamable $lr, 1
194    renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
195    renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
196    MVE_VPST 2, implicit $vpr
197    renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr
198    renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, killed renamable $q2
199    renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr
200    MVE_VPST 8, implicit $vpr
201    renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, killed renamable $q2
202    MVE_VPST 8, implicit $vpr
203    renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, renamable $q1
204    t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
205    tB %bb.8, 14 /* CC::al */, $noreg
206
207  bb.8:
208    liveins: $r2, $r12, $q0
209    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
210
211  bb.9 (align 4):
212    CONSTPOOL_ENTRY 0, %const.0, 4
213
214...
215---
216name:            combine_last
217alignment:       8
218exposesReturnsTwice: false
219legalized:       false
220regBankSelected: false
221selected:        false
222failedISel:      false
223tracksRegLiveness: true
224hasWinCFI:       false
225registers:       []
226liveins:
227  - { reg: '$r0', virtual-reg: '' }
228  - { reg: '$r1', virtual-reg: '' }
229  - { reg: '$r2', virtual-reg: '' }
230frameInfo:
231fixedStack:      []
232stack:
233  - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
234      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
235      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
236  - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
237      stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
238      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
239callSites:       []
240debugValueSubstitutions: []
241constants:
242  - id:              0
243    value:           float 0xC7EFFFFFE0000000
244    alignment:       4
245    isTargetSpecific: false
246machineFunctionInfo: {}
247body:             |
248  ; CHECK-LABEL: name: combine_last
249  ; CHECK: bb.0:
250  ; CHECK:   successors: %bb.1(0x80000000)
251  ; CHECK:   liveins: $q2, $r0, $r1
252  ; CHECK:   renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, undef renamable $q0
253  ; CHECK:   $lr = MVE_DLSTP_32 killed renamable $r1
254  ; CHECK: bb.1 (align 4):
255  ; CHECK:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
256  ; CHECK:   liveins: $lr, $q0, $q2, $r0
257  ; CHECK:   renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg
258  ; CHECK:   MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
259  ; CHECK:   renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, killed renamable $vpr, killed renamable $q2
260  ; CHECK:   MVE_VPTv4f32 8, renamable $q2, renamable $q1, 12, implicit-def $vpr
261  ; CHECK:   dead renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, killed renamable $vpr, killed renamable $q1
262  ; CHECK:   $lr = MVE_LETP killed renamable $lr, %bb.1
263  ; CHECK: bb.2:
264  ; CHECK:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
265  ; CHECK: bb.3 (align 4):
266  ; CHECK:   CONSTPOOL_ENTRY 0, %const.0, 4
267  bb.0:
268    successors: %bb.6(0x80000000)
269    liveins: $r0, $r1, $r2
270
271    renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
272    renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, undef renamable $q0
273    renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
274    renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
275    renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
276    renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
277    $lr = t2DoLoopStart renamable $lr
278
279  bb.6 (align 4):
280    successors: %bb.6(0x7c000000), %bb.8(0x04000000)
281    liveins: $lr, $q0, $r0, $r1, $r2, $q2
282
283    renamable $lr = t2LoopDec killed renamable $lr, 1
284    renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
285    renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
286    MVE_VPST 8, implicit $vpr
287    renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr
288    MVE_VPST 2, implicit $vpr
289    renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr
290    renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, killed renamable $q2
291    renamable $vpr = MVE_VCMPf32 renamable $q2, renamable $q1, 12, 1, killed renamable $vpr
292    MVE_VPST 8, implicit $vpr
293    renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, renamable $q1
294    t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
295    tB %bb.8, 14 /* CC::al */, $noreg
296
297  bb.8:
298    liveins: $r2, $r12, $q0
299    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
300
301  bb.9 (align 4):
302    CONSTPOOL_ENTRY 0, %const.0, 4
303
304...
305---
306name:            combine_kill_flags
307alignment:       8
308exposesReturnsTwice: false
309legalized:       false
310regBankSelected: false
311selected:        false
312failedISel:      false
313tracksRegLiveness: true
314hasWinCFI:       false
315registers:       []
316liveins:
317  - { reg: '$r0', virtual-reg: '' }
318  - { reg: '$r1', virtual-reg: '' }
319  - { reg: '$r2', virtual-reg: '' }
320frameInfo:
321fixedStack:      []
322stack:
323  - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
324      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
325      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
326  - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
327      stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
328      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
329callSites:       []
330debugValueSubstitutions: []
331constants:
332  - id:              0
333    value:           float 0xC7EFFFFFE0000000
334    alignment:       4
335    isTargetSpecific: false
336machineFunctionInfo: {}
337body:             |
338  ; CHECK-LABEL: name: combine_kill_flags
339  ; CHECK: bb.0:
340  ; CHECK:   successors: %bb.1(0x80000000)
341  ; CHECK:   liveins: $q2, $r0, $r1
342  ; CHECK:   renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, undef renamable $q0
343  ; CHECK:   $lr = MVE_DLSTP_32 killed renamable $r1
344  ; CHECK: bb.1 (align 4):
345  ; CHECK:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
346  ; CHECK:   liveins: $lr, $q0, $q2, $r0
347  ; CHECK:   renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg
348  ; CHECK:   renamable $q2 = MVE_VORR killed renamable $q2, renamable $q1, 0, $noreg, killed renamable $q2
349  ; CHECK:   MVE_VPTv4f32 8, renamable $q0, killed renamable $q1, 12, implicit-def $vpr
350  ; CHECK:   renamable $q0 = MVE_VORR killed renamable $q0, killed renamable $q0, 1, killed renamable $vpr, killed renamable $q0
351  ; CHECK:   $lr = MVE_LETP killed renamable $lr, %bb.1
352  ; CHECK: bb.2:
353  ; CHECK:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
354  ; CHECK: bb.3 (align 4):
355  ; CHECK:   CONSTPOOL_ENTRY 0, %const.0, 4
356  bb.0:
357    successors: %bb.6(0x80000000)
358    liveins: $r0, $r1, $r2
359
360    renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
361    renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, undef renamable $q0
362    renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
363    renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
364    renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
365    renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
366    $lr = t2DoLoopStart renamable $lr
367
368  bb.6 (align 4):
369    successors: %bb.6(0x7c000000), %bb.8(0x04000000)
370    liveins: $lr, $q0, $r0, $r1, $r2, $q2
371
372    renamable $lr = t2LoopDec killed renamable $lr, 1
373    renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
374    renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
375    MVE_VPST 2, implicit $vpr
376    renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr
377    renamable $vpr = MVE_VCMPf32 renamable $q0, renamable $q1, 12, 1, killed renamable $vpr
378    renamable $q2 = MVE_VORR renamable $q2, killed renamable $q1, 0, $noreg, killed renamable $q2
379    MVE_VPST 8, implicit $vpr
380    renamable $q0 = MVE_VORR renamable $q0, renamable $q0, 1, renamable $vpr, killed renamable $q0
381    t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
382    tB %bb.8, 14 /* CC::al */, $noreg
383
384  bb.8:
385    liveins: $r2, $r12, $q0
386    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
387
388  bb.9 (align 4):
389    CONSTPOOL_ENTRY 0, %const.0, 4
390
391...
392---
393name:            no_combination_diff_reg_value
394alignment:       8
395exposesReturnsTwice: false
396legalized:       false
397regBankSelected: false
398selected:        false
399failedISel:      false
400tracksRegLiveness: true
401hasWinCFI:       false
402registers:       []
403liveins:
404  - { reg: '$r0', virtual-reg: '' }
405  - { reg: '$r1', virtual-reg: '' }
406  - { reg: '$r2', virtual-reg: '' }
407frameInfo:
408fixedStack:      []
409stack:
410  - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
411      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
412      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
413  - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
414      stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
415      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
416callSites:       []
417debugValueSubstitutions: []
418constants:
419  - id:              0
420    value:           float 0xC7EFFFFFE0000000
421    alignment:       4
422    isTargetSpecific: false
423machineFunctionInfo: {}
424body:             |
425  ; CHECK-LABEL: name: no_combination_diff_reg_value
426  ; CHECK: bb.0:
427  ; CHECK:   successors: %bb.1(0x80000000)
428  ; CHECK:   liveins: $r0, $r1
429  ; CHECK:   renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, undef renamable $q0
430  ; CHECK:   $lr = MVE_DLSTP_32 killed renamable $r1
431  ; CHECK: bb.1 (align 4):
432  ; CHECK:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
433  ; CHECK:   liveins: $lr, $q0, $r0
434  ; CHECK:   renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg
435  ; CHECK:   renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 0, $noreg, killed renamable $q1
436  ; CHECK:   renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 0, killed $noreg
437  ; CHECK:   renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, killed renamable $q0
438  ; CHECK:   MVE_VPST 8, implicit $vpr
439  ; CHECK:   renamable $q0 = MVE_VORR killed renamable $q1, killed renamable $q1, 1, killed renamable $vpr, killed renamable $q0
440  ; CHECK:   $lr = MVE_LETP killed renamable $lr, %bb.1
441  ; CHECK: bb.2:
442  ; CHECK:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
443  ; CHECK: bb.3 (align 4):
444  ; CHECK:   CONSTPOOL_ENTRY 0, %const.0, 4
445  bb.0:
446    successors: %bb.6(0x80000000)
447    liveins: $r0, $r1, $r2
448
449    renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
450    renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, undef renamable $q0
451    renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
452    renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
453    renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
454    renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
455    $lr = t2DoLoopStart renamable $lr
456
457  bb.6 (align 4):
458    successors: %bb.6(0x7c000000), %bb.8(0x04000000)
459    liveins: $lr, $q0, $r0, $r1, $r2
460
461    renamable $lr = t2LoopDec killed renamable $lr, 1
462    renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
463    renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
464    MVE_VPST 8, implicit $vpr
465    renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr
466    MVE_VPST 4, implicit $vpr
467    renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, renamable $q1
468    renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr
469    renamable $q0 = MVE_VORR renamable $q1, renamable $q1, 0, $noreg, killed renamable $q0
470    MVE_VPST 8, implicit $vpr
471    renamable $q0 = MVE_VORR killed renamable $q1, renamable $q1, 1, killed renamable $vpr, killed renamable $q0
472    t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
473    tB %bb.8, 14 /* CC::al */, $noreg
474
475  bb.8:
476    liveins: $r2, $r12, $q0
477    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
478
479  bb.9 (align 4):
480    CONSTPOOL_ENTRY 0, %const.0, 4
481
482...
483---
484name:            no_combination_vcmp_already_merged
485alignment:       8
486exposesReturnsTwice: false
487legalized:       false
488regBankSelected: false
489selected:        false
490failedISel:      false
491tracksRegLiveness: true
492hasWinCFI:       false
493registers:       []
494liveins:
495  - { reg: '$r0', virtual-reg: '' }
496  - { reg: '$r1', virtual-reg: '' }
497  - { reg: '$r2', virtual-reg: '' }
498frameInfo:
499fixedStack:      []
500stack:
501  - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
502      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
503      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
504  - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
505      stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
506      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
507callSites:       []
508debugValueSubstitutions: []
509constants:
510  - id:              0
511    value:           float 0xC7EFFFFFE0000000
512    alignment:       4
513    isTargetSpecific: false
514machineFunctionInfo: {}
515body:             |
516  ; CHECK-LABEL: name: no_combination_vcmp_already_merged
517  ; CHECK: bb.0:
518  ; CHECK:   successors: %bb.1(0x80000000)
519  ; CHECK:   liveins: $q2, $r0, $r1
520  ; CHECK:   renamable $q0 = MVE_VDUP32 renamable $r1, 0, $noreg, undef renamable $q0
521  ; CHECK:   $lr = MVE_DLSTP_32 killed renamable $r1
522  ; CHECK: bb.1 (align 4):
523  ; CHECK:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
524  ; CHECK:   liveins: $lr, $q0, $q2, $r0
525  ; CHECK:   renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 0, $noreg
526  ; CHECK:   MVE_VPTv4f32 8, renamable $q1, renamable $q0, 12, implicit-def $vpr
527  ; CHECK:   renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, killed renamable $q2
528  ; CHECK:   MVE_VPST 8, implicit $vpr
529  ; CHECK:   dead renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, killed renamable $vpr, killed renamable $q1
530  ; CHECK:   $lr = MVE_LETP killed renamable $lr, %bb.1
531  ; CHECK: bb.2:
532  ; CHECK:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
533  ; CHECK: bb.3 (align 4):
534  ; CHECK:   CONSTPOOL_ENTRY 0, %const.0, 4
535  bb.0:
536    successors: %bb.6(0x80000000)
537    liveins: $r0, $r1, $r2
538
539    renamable $r3, dead $cpsr = nuw nsw tADDi3 renamable $r1, 3, 14 /* CC::al */, $noreg
540    renamable $q0 = MVE_VDUP32 killed renamable $r1, 0, $noreg, undef renamable $q0
541    renamable $r3 = t2ANDri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
542    renamable $lr = t2SUBri killed renamable $r3, 4, 14 /* CC::al */, $noreg, $noreg
543    renamable $r3, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
544    renamable $lr = nuw nsw t2ADDrs killed renamable $r3, killed renamable $lr, 19, 14 /* CC::al */, $noreg, $noreg
545    $lr = t2DoLoopStart renamable $lr
546
547  bb.6 (align 4):
548    successors: %bb.6(0x7c000000), %bb.8(0x04000000)
549    liveins: $lr, $q0, $r0, $r1, $r2, $q2
550
551    renamable $lr = t2LoopDec killed renamable $lr, 1
552    renamable $vpr = MVE_VCTP32 renamable $r1, 0, $noreg
553    renamable $r1, dead $cpsr = tSUBi8 killed renamable $r1, 4, 14 /* CC::al */, $noreg
554    MVE_VPST 8, implicit $vpr
555    renamable $r0, renamable $q1 = MVE_VLDRWU32_post killed renamable $r0, 16, 1, renamable $vpr
556    MVE_VPST 4, implicit $vpr
557    renamable $vpr = MVE_VCMPf32 renamable $q1, renamable $q0, 12, 1, killed renamable $vpr
558    renamable $q2 = MVE_VORR renamable $q1, renamable $q1, 1, renamable $vpr, killed renamable $q2
559    MVE_VPST 8, implicit $vpr
560    renamable $q1 = MVE_VORR killed renamable $q1, renamable $q0, 1, renamable $vpr, renamable $q1
561    t2LoopEnd renamable $lr, %bb.6, implicit-def dead $cpsr
562    tB %bb.8, 14 /* CC::al */, $noreg
563
564  bb.8:
565    liveins: $r2, $r12, $q0
566    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
567
568  bb.9 (align 4):
569    CONSTPOOL_ENTRY 0, %const.0, 4
570
571...
572