241 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx90a -start-before=greedy,0 -stop-after=virtregrewriter,2 -verify-machineinstrs -o - %s | FileCheck --check-prefixes=GCN,GFX90A %s2 3# RUN: llc -enable-new-pm -mtriple=amdgcn -mcpu=gfx90a -passes='greedy<sgpr>,virt-reg-rewriter<no-clear-vregs>,stack-slot-coloring,si-lower-sgpr-spills,si-pre-allocate-wwm-regs,greedy<wwm>,si-lower-wwm-copies,virt-reg-rewriter<no-clear-vregs>,amdgpu-reserve-wwm-regs,greedy<vgpr>,amdgpu-nsa-reassign,virt-reg-rewriter' -o - %s | FileCheck --check-prefixes=GCN,GFX90A %s4# Using the unaligned vector tuples are OK as long as they aren't used5# in a real instruction.6 7---8# GCN-LABEL: name: alloc_vgpr_649# GFX90A: $vgpr4_vgpr5 = GLOBAL_LOAD10name: alloc_vgpr_6411tracksRegLiveness: true12liveins:13 - { reg: '$vgpr0_vgpr1' }14 - { reg: '$vgpr2' }15body: |16 bb.0:17 liveins: $vgpr0_vgpr1, $vgpr218 19 %0:vreg_64_align2 = COPY $vgpr0_vgpr120 %1:vgpr_32 = COPY $vgpr221 %2:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %0, 0, 0, implicit $exec22 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec23 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec24...25 26---27# GCN-LABEL: name: alloc_vgpr_9628# GFX90A: $vgpr4_vgpr5_vgpr6 = GLOBAL_LOAD29name: alloc_vgpr_9630tracksRegLiveness: true31liveins:32 - { reg: '$vgpr0_vgpr1' }33 - { reg: '$vgpr2' }34body: |35 bb.0:36 liveins: $vgpr0_vgpr1, $vgpr237 38 %0:vreg_64_align2 = COPY $vgpr0_vgpr139 %1:vgpr_32 = COPY $vgpr240 %2:vreg_96_align2 = GLOBAL_LOAD_DWORDX3 %0, 0, 0, implicit $exec41 GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec42 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec43...44 45---46# GCN-LABEL: name: alloc_vgpr_12847# GFX90A: $vgpr4_vgpr5_vgpr6_vgpr7 = GLOBAL_LOAD48name: alloc_vgpr_12849tracksRegLiveness: true50liveins:51 - { reg: '$vgpr0_vgpr1' }52 - { reg: '$vgpr2' }53body: |54 bb.0:55 liveins: $vgpr0_vgpr1, $vgpr256 57 %0:vreg_64_align2 = COPY $vgpr0_vgpr158 %1:vgpr_32 = COPY $vgpr259 %2:vreg_128_align2 = GLOBAL_LOAD_DWORDX4 %0, 0, 0, implicit $exec60 GLOBAL_STORE_DWORDX4 %0, %2, 0, 0, implicit $exec61 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec62...63 64---65# GCN-LABEL: name: alloc_vgpr_16066# GFX90A: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8 = IMAGE_LOAD67name: alloc_vgpr_16068tracksRegLiveness: true69liveins:70 - { reg: '$vgpr0_vgpr1' }71 - { reg: '$vgpr2' }72body: |73 bb.0:74 liveins: $vgpr0_vgpr1, $vgpr275 76 %0:vreg_64_align2 = COPY $vgpr0_vgpr177 %1:vgpr_32 = COPY $vgpr278 %2:vreg_160_align2 = IMAGE_LOAD_V5_V1 %0.sub0, undef %3:sgpr_256, 0, 0, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)79 GLOBAL_STORE_DWORDX4 %0, %2.sub0_sub1_sub2_sub3, 0, 0, implicit $exec80 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec81...82 83---84# GCN-LABEL: name: alloc_vgpr_25685# GFX90A: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 = COPY86name: alloc_vgpr_25687tracksRegLiveness: true88liveins:89 - { reg: '$vgpr0_vgpr1' }90 - { reg: '$vgpr2' }91body: |92 bb.0:93 liveins: $vgpr0_vgpr1, $vgpr294 95 %0:vreg_64_align2 = COPY $vgpr0_vgpr196 %1:vgpr_32 = COPY $vgpr297 %3:sgpr_256 = IMPLICIT_DEF98 %2:vreg_256_align2 = COPY %3:sgpr_25699 %4:vreg_128_align2 = IMAGE_SAMPLE_C_CL_O_V4_V8 %2, %3:sgpr_256, undef %5:sgpr_128, 0, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)100 GLOBAL_STORE_DWORDX4 %0, %2.sub0_sub1_sub2_sub3, 0, 0, implicit $exec101 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec102...103 104---105# GCN-LABEL: name: alloc_vgpr_512106# GFX90A: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19 = IMPLICIT_DEF107name: alloc_vgpr_512108tracksRegLiveness: true109liveins:110 - { reg: '$vgpr0_vgpr1' }111 - { reg: '$vgpr2' }112body: |113 bb.0:114 liveins: $vgpr0_vgpr1, $vgpr2115 116 %0:vreg_64_align2 = COPY $vgpr0_vgpr1117 %1:vgpr_32 = COPY $vgpr2118 %2:vreg_512_align2 = IMPLICIT_DEF119 GLOBAL_STORE_DWORDX4 %0, %2.sub0_sub1_sub2_sub3, 0, 0, implicit $exec120 GLOBAL_STORE_DWORDX4 %0, %2.sub4_sub5_sub6_sub7, 0, 0, implicit $exec121 GLOBAL_STORE_DWORDX4 %0, %2.sub8_sub9_sub10_sub11, 0, 0, implicit $exec122 GLOBAL_STORE_DWORDX4 %0, %2.sub12_sub13_sub14_sub15, 0, 0, implicit $exec123 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec124...125 126---127# GCN-LABEL: name: alloc_vgpr_1024128# GFX90A: $vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31_vgpr32_vgpr33_vgpr34_vgpr35 = IMPLICIT_DEF129name: alloc_vgpr_1024130tracksRegLiveness: true131liveins:132 - { reg: '$vgpr0_vgpr1' }133 - { reg: '$vgpr2' }134body: |135 bb.0:136 liveins: $vgpr0_vgpr1, $vgpr2137 138 %0:vreg_64_align2 = COPY $vgpr0_vgpr1139 %1:vgpr_32 = COPY $vgpr2140 %2:vreg_1024_align2 = IMPLICIT_DEF141 GLOBAL_STORE_DWORDX4 %0, %2.sub0_sub1_sub2_sub3, 0, 0, implicit $exec142 GLOBAL_STORE_DWORDX4 %0, %2.sub4_sub5_sub6_sub7, 0, 0, implicit $exec143 GLOBAL_STORE_DWORDX4 %0, %2.sub8_sub9_sub10_sub11, 0, 0, implicit $exec144 GLOBAL_STORE_DWORDX4 %0, %2.sub12_sub13_sub14_sub15, 0, 0, implicit $exec145 GLOBAL_STORE_DWORDX4 %0, %2.sub16_sub17_sub18_sub19, 0, 0, implicit $exec146 GLOBAL_STORE_DWORDX4 %0, %2.sub20_sub21_sub22_sub23, 0, 0, implicit $exec147 GLOBAL_STORE_DWORDX4 %0, %2.sub24_sub25_sub26_sub27, 0, 0, implicit $exec148 GLOBAL_STORE_DWORDX4 %0, %2.sub28_sub29_sub30_sub31, 0, 0, implicit $exec149 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec150...151 152---153# GCN-LABEL: name: alloc_agpr_64154# GFX90A: $agpr1_agpr2 = IMPLICIT_DEF155name: alloc_agpr_64156tracksRegLiveness: true157liveins:158 - { reg: '$vgpr0_vgpr1' }159 - { reg: '$agpr0' }160body: |161 bb.0:162 liveins: $vgpr0_vgpr1, $agpr0163 164 %0:vreg_64_align2 = COPY $vgpr0_vgpr1165 %3:areg_64 = IMPLICIT_DEF166 %2:vreg_64_align2 = COPY %3:areg_64167 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec168 %1:vgpr_32 = COPY $agpr0169 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec170...171 172---173# GCN-LABEL: name: alloc_agpr_128174# GFX90A: $agpr1_agpr2_agpr3_agpr4 = IMPLICIT_DEF175name: alloc_agpr_128176tracksRegLiveness: true177liveins:178 - { reg: '$vgpr0_vgpr1' }179 - { reg: '$agpr0' }180body: |181 bb.0:182 liveins: $vgpr0_vgpr1, $agpr0183 184 %0:vreg_64_align2 = COPY $vgpr0_vgpr1185 %3:areg_128 = IMPLICIT_DEF186 %2:vreg_128_align2 = COPY %3:areg_128187 GLOBAL_STORE_DWORDX4 %0, %2, 0, 0, implicit $exec188 %1:vgpr_32 = COPY $agpr0189 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec190...191 192---193# GCN-LABEL: name: alloc_agpr_512194# GFX90A: $agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16 = IMPLICIT_DEF195name: alloc_agpr_512196tracksRegLiveness: true197liveins:198 - { reg: '$vgpr0_vgpr1' }199 - { reg: '$agpr0' }200body: |201 bb.0:202 liveins: $vgpr0_vgpr1, $agpr0203 204 %0:vreg_64_align2 = COPY $vgpr0_vgpr1205 %3:areg_512 = IMPLICIT_DEF206 %2:vreg_512_align2 = COPY %3:areg_512207 GLOBAL_STORE_DWORDX4 %0, %2.sub0_sub1_sub2_sub3, 0, 0, implicit $exec208 GLOBAL_STORE_DWORDX4 %0, %2.sub4_sub5_sub6_sub7, 0, 0, implicit $exec209 GLOBAL_STORE_DWORDX4 %0, %2.sub8_sub9_sub10_sub11, 0, 0, implicit $exec210 GLOBAL_STORE_DWORDX4 %0, %2.sub12_sub13_sub14_sub15, 0, 0, implicit $exec211 %1:vgpr_32 = COPY $agpr0212 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec213...214 215---216# GCN-LABEL: name: alloc_agpr_1024217# GFX90A: $agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31_agpr32 = IMPLICIT_DEF218name: alloc_agpr_1024219tracksRegLiveness: true220liveins:221 - { reg: '$vgpr0_vgpr1' }222 - { reg: '$agpr0' }223body: |224 bb.0:225 liveins: $vgpr0_vgpr1, $agpr0226 227 %0:vreg_64_align2 = COPY $vgpr0_vgpr1228 %3:areg_1024 = IMPLICIT_DEF229 %2:vreg_1024_align2 = COPY %3:areg_1024230 GLOBAL_STORE_DWORDX4 %0, %2.sub0_sub1_sub2_sub3, 0, 0, implicit $exec231 GLOBAL_STORE_DWORDX4 %0, %2.sub4_sub5_sub6_sub7, 0, 0, implicit $exec232 GLOBAL_STORE_DWORDX4 %0, %2.sub8_sub9_sub10_sub11, 0, 0, implicit $exec233 GLOBAL_STORE_DWORDX4 %0, %2.sub12_sub13_sub14_sub15, 0, 0, implicit $exec234 GLOBAL_STORE_DWORDX4 %0, %2.sub16_sub17_sub18_sub19, 0, 0, implicit $exec235 GLOBAL_STORE_DWORDX4 %0, %2.sub20_sub21_sub22_sub23, 0, 0, implicit $exec236 GLOBAL_STORE_DWORDX4 %0, %2.sub24_sub25_sub26_sub27, 0, 0, implicit $exec237 GLOBAL_STORE_DWORDX4 %0, %2.sub28_sub29_sub30_sub31, 0, 0, implicit $exec238 %1:vgpr_32 = COPY $agpr0239 GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec240...241