242 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -run-pass=si-fold-operands -verify-machineinstrs -o - %s | FileCheck --check-prefix=GFX90A %s3 4# Should fold only the aligned agpr copies with their uses.5 6---7name: aligned_agpr_648tracksRegLiveness: true9body: |10 bb.0:11 liveins: $vgpr0_vgpr112 ; GFX90A-LABEL: name: aligned_agpr_6413 ; GFX90A: liveins: $vgpr0_vgpr114 ; GFX90A-NEXT: {{ $}}15 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr116 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_64_align2 = IMPLICIT_DEF17 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]], 0, 0, implicit $exec18 %0:vreg_64_align2 = COPY $vgpr0_vgpr119 %1:areg_64_align2 = IMPLICIT_DEF20 %2:areg_64_align2 = COPY killed %121 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec22...23 24---25name: unaligned_agpr_6426tracksRegLiveness: true27body: |28 bb.0:29 liveins: $vgpr0_vgpr130 ; GFX90A-LABEL: name: unaligned_agpr_6431 ; GFX90A: liveins: $vgpr0_vgpr132 ; GFX90A-NEXT: {{ $}}33 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr134 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_64_align2 = IMPLICIT_DEF35 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]], 0, 0, implicit $exec36 %0:vreg_64_align2 = COPY $vgpr0_vgpr137 %1:areg_64 = IMPLICIT_DEF38 %2:areg_64_align2 = COPY killed %139 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec40...41 42---43name: aligned_agpr_96_sub0_subg144tracksRegLiveness: true45body: |46 bb.0:47 liveins: $vgpr0_vgpr148 ; GFX90A-LABEL: name: aligned_agpr_96_sub0_subg149 ; GFX90A: liveins: $vgpr0_vgpr150 ; GFX90A-NEXT: {{ $}}51 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr152 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_96_align2 = IMPLICIT_DEF53 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub0_sub1, 0, 0, implicit $exec54 %0:vreg_64_align2 = COPY $vgpr0_vgpr155 %1:areg_96_align2 = IMPLICIT_DEF56 %2:areg_64_align2 = COPY killed %1.sub0_sub1:areg_96_align257 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec58...59 60---61name: unaligned_agpr_96_sub1_sub262tracksRegLiveness: true63body: |64 bb.0:65 liveins: $vgpr0_vgpr166 ; GFX90A-LABEL: name: unaligned_agpr_96_sub1_sub267 ; GFX90A: liveins: $vgpr0_vgpr168 ; GFX90A-NEXT: {{ $}}69 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr170 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_96_align2 = IMPLICIT_DEF71 ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY killed [[DEF]].sub1_sub272 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec73 %0:vreg_64_align2 = COPY $vgpr0_vgpr174 %1:areg_96_align2 = IMPLICIT_DEF75 %2:areg_64_align2 = COPY killed %1.sub1_sub2:areg_96_align276 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec77...78 79---80name: aligned_agpr_9681tracksRegLiveness: true82body: |83 bb.0:84 liveins: $vgpr0_vgpr185 ; GFX90A-LABEL: name: aligned_agpr_9686 ; GFX90A: liveins: $vgpr0_vgpr187 ; GFX90A-NEXT: {{ $}}88 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr189 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_96_align2 = IMPLICIT_DEF90 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]], 0, 0, implicit $exec91 %0:vreg_64_align2 = COPY $vgpr0_vgpr192 %1:areg_96_align2 = IMPLICIT_DEF93 %2:areg_96_align2 = COPY killed %194 GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec95...96 97---98name: unaligned_agpr_9699tracksRegLiveness: true100body: |101 bb.0:102 liveins: $vgpr0_vgpr1103 ; GFX90A-LABEL: name: unaligned_agpr_96104 ; GFX90A: liveins: $vgpr0_vgpr1105 ; GFX90A-NEXT: {{ $}}106 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1107 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_96_align2 = IMPLICIT_DEF108 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]], 0, 0, implicit $exec109 %0:vreg_64_align2 = COPY $vgpr0_vgpr1110 %1:areg_96 = IMPLICIT_DEF111 %2:areg_96_align2 = COPY killed %1112 GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec113...114 115---116name: aligned_agpr_128_sub0_sub1117tracksRegLiveness: true118body: |119 bb.0:120 liveins: $vgpr0_vgpr1121 ; GFX90A-LABEL: name: aligned_agpr_128_sub0_sub1122 ; GFX90A: liveins: $vgpr0_vgpr1123 ; GFX90A-NEXT: {{ $}}124 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1125 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF126 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub0_sub1, 0, 0, implicit $exec127 %0:vreg_64_align2 = COPY $vgpr0_vgpr1128 %1:areg_128_align2 = IMPLICIT_DEF129 %2:areg_64_align2 = COPY killed %1.sub0_sub1:areg_128_align2130 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec131...132 133---134name: aligned_agpr_128_sub2_sub3135tracksRegLiveness: true136body: |137 bb.0:138 liveins: $vgpr0_vgpr1139 ; GFX90A-LABEL: name: aligned_agpr_128_sub2_sub3140 ; GFX90A: liveins: $vgpr0_vgpr1141 ; GFX90A-NEXT: {{ $}}142 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1143 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF144 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[DEF]].sub2_sub3, 0, 0, implicit $exec145 %0:vreg_64_align2 = COPY $vgpr0_vgpr1146 %1:areg_128_align2 = IMPLICIT_DEF147 %2:areg_64_align2 = COPY killed %1.sub2_sub3:areg_128_align2148 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec149...150 151---152name: unaligned_agpr_128_sub1_sub2153tracksRegLiveness: true154body: |155 bb.0:156 liveins: $vgpr0_vgpr1157 ; GFX90A-LABEL: name: unaligned_agpr_128_sub1_sub2158 ; GFX90A: liveins: $vgpr0_vgpr1159 ; GFX90A-NEXT: {{ $}}160 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1161 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF162 ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY killed [[DEF]].sub1_sub2163 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec164 %0:vreg_64_align2 = COPY $vgpr0_vgpr1165 %1:areg_128_align2 = IMPLICIT_DEF166 %2:areg_64_align2 = COPY killed %1.sub1_sub2:areg_128_align2167 GLOBAL_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec168...169 170---171name: aligned_agpr_128_sub0_sub1_sub2172tracksRegLiveness: true173body: |174 bb.0:175 liveins: $vgpr0_vgpr1176 ; GFX90A-LABEL: name: aligned_agpr_128_sub0_sub1_sub2177 ; GFX90A: liveins: $vgpr0_vgpr1178 ; GFX90A-NEXT: {{ $}}179 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1180 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF181 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[DEF]].sub0_sub1_sub2, 0, 0, implicit $exec182 %0:vreg_64_align2 = COPY $vgpr0_vgpr1183 %1:areg_128_align2 = IMPLICIT_DEF184 %2:areg_96_align2 = COPY killed %1.sub0_sub1_sub2:areg_128_align2185 GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec186...187 188---189name: unaligned_agpr_128_sub1_sub2_sub3190tracksRegLiveness: true191body: |192 bb.0:193 liveins: $vgpr0_vgpr1194 ; GFX90A-LABEL: name: unaligned_agpr_128_sub1_sub2_sub3195 ; GFX90A: liveins: $vgpr0_vgpr1196 ; GFX90A-NEXT: {{ $}}197 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1198 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF199 ; GFX90A-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY killed [[DEF]].sub1_sub2_sub3200 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec201 %0:vreg_64_align2 = COPY $vgpr0_vgpr1202 %1:areg_128_align2 = IMPLICIT_DEF203 %2:areg_96_align2 = COPY killed %1.sub1_sub2_sub3:areg_128_align2204 GLOBAL_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec205...206 207---208name: aligned_agpr_128209tracksRegLiveness: true210body: |211 bb.0:212 liveins: $vgpr0_vgpr1213 ; GFX90A-LABEL: name: aligned_agpr_128214 ; GFX90A: liveins: $vgpr0_vgpr1215 ; GFX90A-NEXT: {{ $}}216 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1217 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF218 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX4 [[COPY]], [[DEF]], 0, 0, implicit $exec219 %0:vreg_64_align2 = COPY $vgpr0_vgpr1220 %1:areg_128_align2 = IMPLICIT_DEF221 %2:areg_128_align2 = COPY killed %1222 GLOBAL_STORE_DWORDX4 %0, %2, 0, 0, implicit $exec223...224 225---226name: unaligned_agpr_128227tracksRegLiveness: true228body: |229 bb.0:230 liveins: $vgpr0_vgpr1231 ; GFX90A-LABEL: name: unaligned_agpr_128232 ; GFX90A: liveins: $vgpr0_vgpr1233 ; GFX90A-NEXT: {{ $}}234 ; GFX90A-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1235 ; GFX90A-NEXT: [[DEF:%[0-9]+]]:areg_128_align2 = IMPLICIT_DEF236 ; GFX90A-NEXT: GLOBAL_STORE_DWORDX4 [[COPY]], [[DEF]], 0, 0, implicit $exec237 %0:vreg_64_align2 = COPY $vgpr0_vgpr1238 %1:areg_128 = IMPLICIT_DEF239 %2:areg_128_align2 = COPY killed %1240 GLOBAL_STORE_DWORDX4 %0, %2, 0, 0, implicit $exec241...242