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