Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / LowOverheadLoops / vcmp-vpst-combination-across-blocks.mir
blobfb714f80f76f005bd703a6e2a102e65e378d2367
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
4 --- |
5   define void @combine_previous() {
6   while.end6:
7     ret void
8   }
10   define void @combine_middle() {
11   while.end6:
12     ret void
13   }
15   define void @combine_last() {
16   while.end6:
17     ret void
18   }
20   define void @combine_kill_flags() {
21   while.end6:
22     ret void
23   }
25   define void @no_combination_diff_reg_value() {
26   while.end6:
27     ret void
28   }
30   define void @no_combination_vcmp_already_merged() {
31   while.end6:
32     ret void
33   }
35 ...
36 ---
37 name:            combine_previous
38 alignment:       8
39 exposesReturnsTwice: false
40 legalized:       false
41 regBankSelected: false
42 selected:        false
43 failedISel:      false
44 tracksRegLiveness: true
45 hasWinCFI:       false
46 registers:       []
47 liveins:
48   - { reg: '$r0', virtual-reg: '' }
49   - { reg: '$r1', virtual-reg: '' }
50   - { reg: '$r2', virtual-reg: '' }
51 frameInfo:
52 fixedStack:      []
53 stack:
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: '' }
60 callSites:       []
61 debugValueSubstitutions: []
62 constants:
63   - id:              0
64     value:           float 0xC7EFFFFFE0000000
65     alignment:       4
66     isTargetSpecific: false
67 machineFunctionInfo: {}
68 body:             |
69   ; CHECK-LABEL: name: combine_previous
70   ; CHECK: bb.0:
71   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
72   ; CHECK-NEXT:   liveins: $r0, $r1
73   ; CHECK-NEXT: {{  $}}
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
76   ; CHECK-NEXT: {{  $}}
77   ; CHECK-NEXT: bb.1 (align 4):
78   ; CHECK-NEXT:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
79   ; CHECK-NEXT:   liveins: $lr, $q0, $r0
80   ; CHECK-NEXT: {{  $}}
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
86   ; CHECK-NEXT: {{  $}}
87   ; CHECK-NEXT: bb.2:
88   ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
89   ; CHECK-NEXT: {{  $}}
90   ; CHECK-NEXT: bb.3 (align 4):
91   ; CHECK-NEXT:   CONSTPOOL_ENTRY 0, %const.0, 4
92   bb.0:
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
104   bb.6 (align 4):
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
121   bb.8:
122     liveins: $r2, $r12, $q0
123     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
125   bb.9 (align 4):
126     CONSTPOOL_ENTRY 0, %const.0, 4
130 name:            combine_middle
131 alignment:       8
132 exposesReturnsTwice: false
133 legalized:       false
134 regBankSelected: false
135 selected:        false
136 failedISel:      false
137 tracksRegLiveness: true
138 hasWinCFI:       false
139 registers:       []
140 liveins:
141   - { reg: '$r0', virtual-reg: '' }
142   - { reg: '$r1', virtual-reg: '' }
143   - { reg: '$r2', virtual-reg: '' }
144 frameInfo:
145 fixedStack:      []
146 stack:
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: '' }
153 callSites:       []
154 debugValueSubstitutions: []
155 constants:
156   - id:              0
157     value:           float 0xC7EFFFFFE0000000
158     alignment:       4
159     isTargetSpecific: false
160 machineFunctionInfo: {}
161 body:             |
162   ; CHECK-LABEL: name: combine_middle
163   ; CHECK: bb.0:
164   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
165   ; CHECK-NEXT:   liveins: $q2, $r0, $r1
166   ; CHECK-NEXT: {{  $}}
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
169   ; CHECK-NEXT: {{  $}}
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
173   ; CHECK-NEXT: {{  $}}
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
181   ; CHECK-NEXT: {{  $}}
182   ; CHECK-NEXT: bb.2:
183   ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
184   ; CHECK-NEXT: {{  $}}
185   ; CHECK-NEXT: bb.3 (align 4):
186   ; CHECK-NEXT:   CONSTPOOL_ENTRY 0, %const.0, 4
187   bb.0:
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
199   bb.6 (align 4):
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
217   bb.8:
218     liveins: $r2, $r12, $q0
219     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
221   bb.9 (align 4):
222     CONSTPOOL_ENTRY 0, %const.0, 4
226 name:            combine_last
227 alignment:       8
228 exposesReturnsTwice: false
229 legalized:       false
230 regBankSelected: false
231 selected:        false
232 failedISel:      false
233 tracksRegLiveness: true
234 hasWinCFI:       false
235 registers:       []
236 liveins:
237   - { reg: '$r0', virtual-reg: '' }
238   - { reg: '$r1', virtual-reg: '' }
239   - { reg: '$r2', virtual-reg: '' }
240 frameInfo:
241 fixedStack:      []
242 stack:
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: '' }
249 callSites:       []
250 debugValueSubstitutions: []
251 constants:
252   - id:              0
253     value:           float 0xC7EFFFFFE0000000
254     alignment:       4
255     isTargetSpecific: false
256 machineFunctionInfo: {}
257 body:             |
258   ; CHECK-LABEL: name: combine_last
259   ; CHECK: bb.0:
260   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
261   ; CHECK-NEXT:   liveins: $q2, $r0, $r1
262   ; CHECK-NEXT: {{  $}}
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
265   ; CHECK-NEXT: {{  $}}
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
269   ; CHECK-NEXT: {{  $}}
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
276   ; CHECK-NEXT: {{  $}}
277   ; CHECK-NEXT: bb.2:
278   ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
279   ; CHECK-NEXT: {{  $}}
280   ; CHECK-NEXT: bb.3 (align 4):
281   ; CHECK-NEXT:   CONSTPOOL_ENTRY 0, %const.0, 4
282   bb.0:
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
294   bb.6 (align 4):
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
312   bb.8:
313     liveins: $r2, $r12, $q0
314     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
316   bb.9 (align 4):
317     CONSTPOOL_ENTRY 0, %const.0, 4
321 name:            combine_kill_flags
322 alignment:       8
323 exposesReturnsTwice: false
324 legalized:       false
325 regBankSelected: false
326 selected:        false
327 failedISel:      false
328 tracksRegLiveness: true
329 hasWinCFI:       false
330 registers:       []
331 liveins:
332   - { reg: '$r0', virtual-reg: '' }
333   - { reg: '$r1', virtual-reg: '' }
334   - { reg: '$r2', virtual-reg: '' }
335 frameInfo:
336 fixedStack:      []
337 stack:
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: '' }
344 callSites:       []
345 debugValueSubstitutions: []
346 constants:
347   - id:              0
348     value:           float 0xC7EFFFFFE0000000
349     alignment:       4
350     isTargetSpecific: false
351 machineFunctionInfo: {}
352 body:             |
353   ; CHECK-LABEL: name: combine_kill_flags
354   ; CHECK: bb.0:
355   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
356   ; CHECK-NEXT:   liveins: $q2, $r0, $r1
357   ; CHECK-NEXT: {{  $}}
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
360   ; CHECK-NEXT: {{  $}}
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
364   ; CHECK-NEXT: {{  $}}
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
370   ; CHECK-NEXT: {{  $}}
371   ; CHECK-NEXT: bb.2:
372   ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
373   ; CHECK-NEXT: {{  $}}
374   ; CHECK-NEXT: bb.3 (align 4):
375   ; CHECK-NEXT:   CONSTPOOL_ENTRY 0, %const.0, 4
376   bb.0:
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
388   bb.6 (align 4):
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
404   bb.8:
405     liveins: $r2, $r12, $q0
406     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
408   bb.9 (align 4):
409     CONSTPOOL_ENTRY 0, %const.0, 4
413 name:            no_combination_diff_reg_value
414 alignment:       8
415 exposesReturnsTwice: false
416 legalized:       false
417 regBankSelected: false
418 selected:        false
419 failedISel:      false
420 tracksRegLiveness: true
421 hasWinCFI:       false
422 registers:       []
423 liveins:
424   - { reg: '$r0', virtual-reg: '' }
425   - { reg: '$r1', virtual-reg: '' }
426   - { reg: '$r2', virtual-reg: '' }
427 frameInfo:
428 fixedStack:      []
429 stack:
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: '' }
436 callSites:       []
437 debugValueSubstitutions: []
438 constants:
439   - id:              0
440     value:           float 0xC7EFFFFFE0000000
441     alignment:       4
442     isTargetSpecific: false
443 machineFunctionInfo: {}
444 body:             |
445   ; CHECK-LABEL: name: no_combination_diff_reg_value
446   ; CHECK: bb.0:
447   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
448   ; CHECK-NEXT:   liveins: $r0, $r1
449   ; CHECK-NEXT: {{  $}}
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
452   ; CHECK-NEXT: {{  $}}
453   ; CHECK-NEXT: bb.1 (align 4):
454   ; CHECK-NEXT:   successors: %bb.1(0x7c000000), %bb.2(0x04000000)
455   ; CHECK-NEXT:   liveins: $lr, $q0, $r0
456   ; CHECK-NEXT: {{  $}}
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
464   ; CHECK-NEXT: {{  $}}
465   ; CHECK-NEXT: bb.2:
466   ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
467   ; CHECK-NEXT: {{  $}}
468   ; CHECK-NEXT: bb.3 (align 4):
469   ; CHECK-NEXT:   CONSTPOOL_ENTRY 0, %const.0, 4
470   bb.0:
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
482   bb.6 (align 4):
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
500   bb.8:
501     liveins: $r2, $r12, $q0
502     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
504   bb.9 (align 4):
505     CONSTPOOL_ENTRY 0, %const.0, 4
509 name:            no_combination_vcmp_already_merged
510 alignment:       8
511 exposesReturnsTwice: false
512 legalized:       false
513 regBankSelected: false
514 selected:        false
515 failedISel:      false
516 tracksRegLiveness: true
517 hasWinCFI:       false
518 registers:       []
519 liveins:
520   - { reg: '$r0', virtual-reg: '' }
521   - { reg: '$r1', virtual-reg: '' }
522   - { reg: '$r2', virtual-reg: '' }
523 frameInfo:
524 fixedStack:      []
525 stack:
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: '' }
532 callSites:       []
533 debugValueSubstitutions: []
534 constants:
535   - id:              0
536     value:           float 0xC7EFFFFFE0000000
537     alignment:       4
538     isTargetSpecific: false
539 machineFunctionInfo: {}
540 body:             |
541   ; CHECK-LABEL: name: no_combination_vcmp_already_merged
542   ; CHECK: bb.0:
543   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
544   ; CHECK-NEXT:   liveins: $q2, $r0, $r1
545   ; CHECK-NEXT: {{  $}}
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
548   ; CHECK-NEXT: {{  $}}
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
552   ; CHECK-NEXT: {{  $}}
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
559   ; CHECK-NEXT: {{  $}}
560   ; CHECK-NEXT: bb.2:
561   ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
562   ; CHECK-NEXT: {{  $}}
563   ; CHECK-NEXT: bb.3 (align 4):
564   ; CHECK-NEXT:   CONSTPOOL_ENTRY 0, %const.0, 4
565   bb.0:
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
577   bb.6 (align 4):
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
594   bb.8:
595     liveins: $r2, $r12, $q0
596     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc
598   bb.9 (align 4):
599     CONSTPOOL_ENTRY 0, %const.0, 4