212 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -run-pass=arm-low-overhead-loops %s -o - | FileCheck %s3--- |4 define hidden void @vector_spill_in_loop() {5 entry:6 ret void7 }8 9 define hidden void @vector_spill_load_outside() {10 entry:11 ret void12 }13...14---15name: vector_spill_in_loop16tracksRegLiveness: true17stack:18 - { id: 0, name: '', type: spill-slot, offset: -120, size: 16, alignment: 8,19 stack-id: default, callee-saved-register: '', callee-saved-restored: true,20 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }21body: |22 ; CHECK-LABEL: name: vector_spill_in_loop23 ; CHECK: bb.0:24 ; CHECK-NEXT: successors: %bb.1(0x80000000)25 ; CHECK-NEXT: liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r1226 ; CHECK-NEXT: {{ $}}27 ; CHECK-NEXT: $r6 = tMOVr $r2, 14 /* CC::al */, $noreg28 ; CHECK-NEXT: $r0 = tMOVr $r12, 14 /* CC::al */, $noreg29 ; CHECK-NEXT: $lr = MVE_DLSTP_16 renamable $r330 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: bb.1:32 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)33 ; CHECK-NEXT: liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r10, $r11, $r1234 ; CHECK-NEXT: {{ $}}35 ; CHECK-NEXT: renamable $r0, renamable $q6 = MVE_VLDRHU16_post killed renamable $r0, 16, 0, $noreg, $noreg36 ; CHECK-NEXT: renamable $q3 = MVE_VLDRHU16 renamable $r6, 0, 0, $noreg, $noreg37 ; CHECK-NEXT: renamable $q5 = MVE_VSHR_immu16 killed renamable $q3, 11, 0, $noreg, $noreg, undef renamable $q538 ; CHECK-NEXT: MVE_VSTRWU32 killed renamable $q5, $sp, 80, 0, $noreg, $noreg :: (store (s128) into %stack.0, align 8)39 ; CHECK-NEXT: dead renamable $q7 = MVE_VLDRWU32 $sp, 80, 0, $noreg, $noreg :: (load (s128) from %stack.0, align 8)40 ; CHECK-NEXT: dead renamable $vpr = MVE_VCMPi16r killed renamable $q6, renamable $r8, 1, 0, killed $noreg, $noreg41 ; CHECK-NEXT: $lr = MVE_LETP killed renamable $lr, %bb.142 ; CHECK-NEXT: {{ $}}43 ; CHECK-NEXT: bb.2:44 ; CHECK-NEXT: successors: %bb.3(0x04000000), %bb.0(0x7c000000)45 ; CHECK-NEXT: liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r1246 ; CHECK-NEXT: {{ $}}47 ; CHECK-NEXT: renamable $r0 = tLDRspi $sp, 1, 14 /* CC::al */, $noreg48 ; CHECK-NEXT: renamable $r10 = nuw t2ADDri killed renamable $r10, 1, 14 /* CC::al */, $noreg, $noreg49 ; CHECK-NEXT: renamable $r12 = t2ADDrs killed renamable $r12, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg50 ; CHECK-NEXT: renamable $r0 = tLDRspi $sp, 3, 14 /* CC::al */, $noreg51 ; CHECK-NEXT: renamable $r2 = t2ADDrs killed renamable $r2, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg52 ; CHECK-NEXT: renamable $r0 = tLDRspi $sp, 2, 14 /* CC::al */, $noreg53 ; CHECK-NEXT: tCMPhir renamable $r10, killed renamable $r0, 14 /* CC::al */, $noreg, implicit-def $cpsr54 ; CHECK-NEXT: tBcc %bb.0, 1 /* CC::ne */, killed $cpsr55 ; CHECK-NEXT: {{ $}}56 ; CHECK-NEXT: bb.3:57 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 24, 14 /* CC::al */, $noreg58 ; CHECK-NEXT: $sp = frame-destroy VLDMDIA_UPD $sp, 14 /* CC::al */, $noreg, def $d8, def $d9, def $d10, def $d11, def $d12, def $d13, def $d14, def $d1559 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg60 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc61 bb.0:62 successors: %bb.1(0x80000000)63 liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r1264 65 $r6 = tMOVr $r2, 14 /* CC::al */, $noreg66 $r0 = tMOVr $r12, 14 /* CC::al */, $noreg67 $r9 = tMOVr $r3, 14 /* CC::al */, $noreg68 renamable $lr = t2DoLoopStartTP renamable $r1, renamable $r369 70 bb.1:71 successors: %bb.1(0x7c000000), %bb.2(0x04000000)72 liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $r1273 74 renamable $vpr = MVE_VCTP16 renamable $r9, 0, $noreg, $noreg75 MVE_VPST 8, implicit $vpr76 renamable $r0, renamable $q6 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, renamable $vpr, $noreg77 renamable $q3 = MVE_VLDRHU16 renamable $r6, 0, 1, renamable $vpr, $noreg78 MVE_VPST 2, implicit $vpr79 renamable $q5 = MVE_VSHR_immu16 renamable $q3, 11, 1, renamable $vpr, $noreg, undef renamable $q580 renamable $r9 = nsw t2SUBri killed renamable $r9, 8, 14 /* CC::al */, $noreg, $noreg81 MVE_VSTRWU32 killed renamable $q5, $sp, 80, 0, $noreg, $noreg :: (store (s128) into %stack.0, align 8)82 MVE_VPST 8, implicit $vpr83 renamable $q7 = MVE_VLDRWU32 $sp, 80, 0, $noreg, $noreg :: (load (s128) from %stack.0, align 8)84 MVE_VPST 1, implicit $vpr85 renamable $vpr = MVE_VCMPi16r killed renamable $q6, renamable $r8, 1, 1, killed renamable $vpr, $noreg86 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.1, implicit-def dead $cpsr87 tB %bb.2, 14 /* CC::al */, $noreg88 89 bb.2:90 successors: %bb.3(0x04000000), %bb.0(0x7c000000)91 liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r1292 93 renamable $r0 = tLDRspi $sp, 1, 14 /* CC::al */, $noreg94 renamable $r10 = nuw t2ADDri killed renamable $r10, 1, 14 /* CC::al */, $noreg, $noreg95 renamable $r12 = t2ADDrs killed renamable $r12, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg96 renamable $r0 = tLDRspi $sp, 3, 14 /* CC::al */, $noreg97 renamable $r2 = t2ADDrs killed renamable $r2, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg98 renamable $r0 = tLDRspi $sp, 2, 14 /* CC::al */, $noreg99 tCMPhir renamable $r10, killed renamable $r0, 14 /* CC::al */, $noreg, implicit-def $cpsr100 tBcc %bb.0, 1 /* CC::ne */, killed $cpsr101 102 bb.3:103 $sp = frame-destroy tADDspi $sp, 24, 14 /* CC::al */, $noreg104 $sp = frame-destroy VLDMDIA_UPD $sp, 14 /* CC::al */, $noreg, def $d8, def $d9, def $d10, def $d11, def $d12, def $d13, def $d14, def $d15105 $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg106 $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc107...108---109name: vector_spill_load_outside110stack:111 - { id: 0, name: '', type: spill-slot, offset: -120, size: 16, alignment: 8,112 stack-id: default, callee-saved-register: '', callee-saved-restored: true,113 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }114tracksRegLiveness: true115body: |116 ; CHECK-LABEL: name: vector_spill_load_outside117 ; CHECK: bb.0:118 ; CHECK-NEXT: successors: %bb.1(0x80000000)119 ; CHECK-NEXT: liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r12120 ; CHECK-NEXT: {{ $}}121 ; CHECK-NEXT: $r6 = tMOVr $r2, 14 /* CC::al */, $noreg122 ; CHECK-NEXT: $r0 = tMOVr $r12, 14 /* CC::al */, $noreg123 ; CHECK-NEXT: $r9 = tMOVr $r3, 14 /* CC::al */, $noreg124 ; CHECK-NEXT: $lr = t2DLS renamable $r1125 ; CHECK-NEXT: {{ $}}126 ; CHECK-NEXT: bb.1:127 ; CHECK-NEXT: successors: %bb.1(0x7c000000), %bb.2(0x04000000)128 ; CHECK-NEXT: liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $r12129 ; CHECK-NEXT: {{ $}}130 ; CHECK-NEXT: renamable $vpr = MVE_VCTP16 renamable $r9, 0, $noreg, $noreg131 ; CHECK-NEXT: MVE_VPST 8, implicit $vpr132 ; CHECK-NEXT: renamable $r0, renamable $q6 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, renamable $vpr, $noreg133 ; CHECK-NEXT: renamable $q3 = MVE_VLDRHU16 renamable $r6, 0, 1, renamable $vpr, $noreg134 ; CHECK-NEXT: MVE_VPST 2, implicit $vpr135 ; CHECK-NEXT: renamable $q5 = MVE_VSHR_immu16 killed renamable $q3, 11, 1, renamable $vpr, $noreg, undef renamable $q5136 ; CHECK-NEXT: renamable $r9 = nsw t2SUBri killed renamable $r9, 8, 14 /* CC::al */, $noreg, $noreg137 ; CHECK-NEXT: MVE_VSTRWU32 killed renamable $q5, $sp, 80, 0, $noreg, $noreg :: (store (s128) into %stack.0, align 8)138 ; CHECK-NEXT: MVE_VPST 8, implicit $vpr139 ; CHECK-NEXT: dead renamable $q7 = MVE_VLDRWU32 $sp, 80, 0, $noreg, $noreg :: (load (s128) from %stack.0, align 8)140 ; CHECK-NEXT: MVE_VPST 1, implicit $vpr141 ; CHECK-NEXT: dead renamable $vpr = MVE_VCMPi16r killed renamable $q6, renamable $r8, 1, 1, killed renamable $vpr, $noreg142 ; CHECK-NEXT: $lr = t2LEUpdate killed renamable $lr, %bb.1143 ; CHECK-NEXT: {{ $}}144 ; CHECK-NEXT: bb.2:145 ; CHECK-NEXT: successors: %bb.3(0x04000000), %bb.0(0x7c000000)146 ; CHECK-NEXT: liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r12147 ; CHECK-NEXT: {{ $}}148 ; CHECK-NEXT: dead renamable $q7 = MVE_VLDRWU32 $sp, 80, 0, $noreg, $noreg :: (load (s128) from %stack.0, align 8)149 ; CHECK-NEXT: renamable $r0 = tLDRspi $sp, 1, 14 /* CC::al */, $noreg150 ; CHECK-NEXT: renamable $r10 = nuw t2ADDri killed renamable $r10, 1, 14 /* CC::al */, $noreg, $noreg151 ; CHECK-NEXT: renamable $r12 = t2ADDrs killed renamable $r12, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg152 ; CHECK-NEXT: renamable $r0 = tLDRspi $sp, 3, 14 /* CC::al */, $noreg153 ; CHECK-NEXT: renamable $r2 = t2ADDrs killed renamable $r2, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg154 ; CHECK-NEXT: renamable $r0 = tLDRspi $sp, 2, 14 /* CC::al */, $noreg155 ; CHECK-NEXT: tCMPhir renamable $r10, killed renamable $r0, 14 /* CC::al */, $noreg, implicit-def $cpsr156 ; CHECK-NEXT: tBcc %bb.0, 1 /* CC::ne */, killed $cpsr157 ; CHECK-NEXT: {{ $}}158 ; CHECK-NEXT: bb.3:159 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 24, 14 /* CC::al */, $noreg160 ; CHECK-NEXT: $sp = frame-destroy VLDMDIA_UPD $sp, 14 /* CC::al */, $noreg, def $d8, def $d9, def $d10, def $d11, def $d12, def $d13, def $d14, def $d15161 ; CHECK-NEXT: $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg162 ; CHECK-NEXT: $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc163 bb.0:164 successors: %bb.1(0x80000000)165 liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r12166 167 $r6 = tMOVr $r2, 14 /* CC::al */, $noreg168 $r0 = tMOVr $r12, 14 /* CC::al */, $noreg169 $r9 = tMOVr $r3, 14 /* CC::al */, $noreg170 renamable $lr = t2DoLoopStartTP renamable $r1, renamable $r3171 172 bb.1:173 successors: %bb.1(0x7c000000), %bb.2(0x04000000)174 liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $r12175 176 renamable $vpr = MVE_VCTP16 renamable $r9, 0, $noreg, $noreg177 MVE_VPST 8, implicit $vpr178 renamable $r0, renamable $q6 = MVE_VLDRHU16_post killed renamable $r0, 16, 1, renamable $vpr, $noreg179 renamable $q3 = MVE_VLDRHU16 renamable $r6, 0, 1, renamable $vpr, $noreg180 MVE_VPST 2, implicit $vpr181 renamable $q5 = MVE_VSHR_immu16 renamable $q3, 11, 1, renamable $vpr, $noreg, undef renamable $q5182 renamable $r9 = nsw t2SUBri killed renamable $r9, 8, 14 /* CC::al */, $noreg, $noreg183 MVE_VSTRWU32 killed renamable $q5, $sp, 80, 0, $noreg, $noreg :: (store (s128) into %stack.0, align 8)184 MVE_VPST 8, implicit $vpr185 renamable $q7 = MVE_VLDRWU32 $sp, 80, 0, $noreg, $noreg :: (load (s128) from %stack.0, align 8)186 MVE_VPST 1, implicit $vpr187 renamable $vpr = MVE_VCMPi16r killed renamable $q6, renamable $r8, 1, 1, killed renamable $vpr, $noreg188 renamable $lr = t2LoopEndDec killed renamable $lr, %bb.1, implicit-def dead $cpsr189 tB %bb.2, 14 /* CC::al */, $noreg190 191 bb.2:192 successors: %bb.3(0x04000000), %bb.0(0x7c000000)193 liveins: $q0, $r1, $r2, $r3, $r4, $r5, $r7, $r8, $r10, $r11, $r12194 195 renamable $q7 = MVE_VLDRWU32 $sp, 80, 0, $noreg, $noreg :: (load (s128) from %stack.0, align 8)196 renamable $r0 = tLDRspi $sp, 1, 14 /* CC::al */, $noreg197 renamable $r10 = nuw t2ADDri killed renamable $r10, 1, 14 /* CC::al */, $noreg, $noreg198 renamable $r12 = t2ADDrs killed renamable $r12, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg199 renamable $r0 = tLDRspi $sp, 3, 14 /* CC::al */, $noreg200 renamable $r2 = t2ADDrs killed renamable $r2, killed renamable $r0, 10, 14 /* CC::al */, $noreg, $noreg201 renamable $r0 = tLDRspi $sp, 2, 14 /* CC::al */, $noreg202 tCMPhir renamable $r10, killed renamable $r0, 14 /* CC::al */, $noreg, implicit-def $cpsr203 tBcc %bb.0, 1 /* CC::ne */, killed $cpsr204 205 bb.3:206 $sp = frame-destroy tADDspi $sp, 24, 14 /* CC::al */, $noreg207 $sp = frame-destroy VLDMDIA_UPD $sp, 14 /* CC::al */, $noreg, def $d8, def $d9, def $d10, def $d11, def $d12, def $d13, def $d14, def $d15208 $sp = frame-destroy tADDspi $sp, 1, 14 /* CC::al */, $noreg209 $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc210 211...212