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 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-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 95 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 103 104 bb.6 (align 4): 105 successors: %bb.6(0x7c000000), %bb.8(0x04000000) 106 liveins: $lr, $q0, $r0, $r1, $r2 107 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 120 121 bb.8: 122 liveins: $r2, $r12, $q0 123 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 124 125 bb.9 (align 4): 126 CONSTPOOL_ENTRY 0, %const.0, 4 127 128... 129--- 130name: combine_middle 131alignment: 8 132exposesReturnsTwice: false 133legalized: false 134regBankSelected: false 135selected: false 136failedISel: false 137tracksRegLiveness: true 138hasWinCFI: false 139registers: [] 140liveins: 141 - { reg: '$r0', virtual-reg: '' } 142 - { reg: '$r1', virtual-reg: '' } 143 - { reg: '$r2', virtual-reg: '' } 144frameInfo: 145fixedStack: [] 146stack: 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: '' } 153callSites: [] 154debugValueSubstitutions: [] 155constants: 156 - id: 0 157 value: float 0xC7EFFFFFE0000000 158 alignment: 4 159 isTargetSpecific: false 160machineFunctionInfo: {} 161body: | 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 190 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 198 199 bb.6 (align 4): 200 successors: %bb.6(0x7c000000), %bb.8(0x04000000) 201 liveins: $lr, $q0, $r0, $r1, $r2, $q2 202 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 216 217 bb.8: 218 liveins: $r2, $r12, $q0 219 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 220 221 bb.9 (align 4): 222 CONSTPOOL_ENTRY 0, %const.0, 4 223 224... 225--- 226name: combine_last 227alignment: 8 228exposesReturnsTwice: false 229legalized: false 230regBankSelected: false 231selected: false 232failedISel: false 233tracksRegLiveness: true 234hasWinCFI: false 235registers: [] 236liveins: 237 - { reg: '$r0', virtual-reg: '' } 238 - { reg: '$r1', virtual-reg: '' } 239 - { reg: '$r2', virtual-reg: '' } 240frameInfo: 241fixedStack: [] 242stack: 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: '' } 249callSites: [] 250debugValueSubstitutions: [] 251constants: 252 - id: 0 253 value: float 0xC7EFFFFFE0000000 254 alignment: 4 255 isTargetSpecific: false 256machineFunctionInfo: {} 257body: | 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 285 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 293 294 bb.6 (align 4): 295 successors: %bb.6(0x7c000000), %bb.8(0x04000000) 296 liveins: $lr, $q0, $r0, $r1, $r2, $q2 297 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 311 312 bb.8: 313 liveins: $r2, $r12, $q0 314 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 315 316 bb.9 (align 4): 317 CONSTPOOL_ENTRY 0, %const.0, 4 318 319... 320--- 321name: combine_kill_flags 322alignment: 8 323exposesReturnsTwice: false 324legalized: false 325regBankSelected: false 326selected: false 327failedISel: false 328tracksRegLiveness: true 329hasWinCFI: false 330registers: [] 331liveins: 332 - { reg: '$r0', virtual-reg: '' } 333 - { reg: '$r1', virtual-reg: '' } 334 - { reg: '$r2', virtual-reg: '' } 335frameInfo: 336fixedStack: [] 337stack: 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: '' } 344callSites: [] 345debugValueSubstitutions: [] 346constants: 347 - id: 0 348 value: float 0xC7EFFFFFE0000000 349 alignment: 4 350 isTargetSpecific: false 351machineFunctionInfo: {} 352body: | 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 379 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 387 388 bb.6 (align 4): 389 successors: %bb.6(0x7c000000), %bb.8(0x04000000) 390 liveins: $lr, $q0, $r0, $r1, $r2, $q2 391 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 403 404 bb.8: 405 liveins: $r2, $r12, $q0 406 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 407 408 bb.9 (align 4): 409 CONSTPOOL_ENTRY 0, %const.0, 4 410 411... 412--- 413name: no_combination_diff_reg_value 414alignment: 8 415exposesReturnsTwice: false 416legalized: false 417regBankSelected: false 418selected: false 419failedISel: false 420tracksRegLiveness: true 421hasWinCFI: false 422registers: [] 423liveins: 424 - { reg: '$r0', virtual-reg: '' } 425 - { reg: '$r1', virtual-reg: '' } 426 - { reg: '$r2', virtual-reg: '' } 427frameInfo: 428fixedStack: [] 429stack: 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: '' } 436callSites: [] 437debugValueSubstitutions: [] 438constants: 439 - id: 0 440 value: float 0xC7EFFFFFE0000000 441 alignment: 4 442 isTargetSpecific: false 443machineFunctionInfo: {} 444body: | 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 473 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 481 482 bb.6 (align 4): 483 successors: %bb.6(0x7c000000), %bb.8(0x04000000) 484 liveins: $lr, $q0, $r0, $r1, $r2 485 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 499 500 bb.8: 501 liveins: $r2, $r12, $q0 502 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 503 504 bb.9 (align 4): 505 CONSTPOOL_ENTRY 0, %const.0, 4 506 507... 508--- 509name: no_combination_vcmp_already_merged 510alignment: 8 511exposesReturnsTwice: false 512legalized: false 513regBankSelected: false 514selected: false 515failedISel: false 516tracksRegLiveness: true 517hasWinCFI: false 518registers: [] 519liveins: 520 - { reg: '$r0', virtual-reg: '' } 521 - { reg: '$r1', virtual-reg: '' } 522 - { reg: '$r2', virtual-reg: '' } 523frameInfo: 524fixedStack: [] 525stack: 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: '' } 532callSites: [] 533debugValueSubstitutions: [] 534constants: 535 - id: 0 536 value: float 0xC7EFFFFFE0000000 537 alignment: 4 538 isTargetSpecific: false 539machineFunctionInfo: {} 540body: | 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 568 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 576 577 bb.6 (align 4): 578 successors: %bb.6(0x7c000000), %bb.8(0x04000000) 579 liveins: $lr, $q0, $r0, $r1, $r2, $q2 580 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 593 594 bb.8: 595 liveins: $r2, $r12, $q0 596 frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r7, def $pc 597 598 bb.9 (align 4): 599 CONSTPOOL_ENTRY 0, %const.0, 4 600 601... 602