647 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -global-isel -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s3# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s4# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s5 6---7name: constant_load_i8_align88legalized: true9 10body: |11 bb.0:12 liveins: $sgpr0_sgpr113 ; GFX8-LABEL: name: constant_load_i8_align814 ; GFX8: liveins: $sgpr0_sgpr115 ; GFX8-NEXT: {{ $}}16 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr117 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4)18 ; GFX8-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)19 ;20 ; GFX9-LABEL: name: constant_load_i8_align821 ; GFX9: liveins: $sgpr0_sgpr122 ; GFX9-NEXT: {{ $}}23 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr124 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4)25 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)26 ;27 ; GFX10-LABEL: name: constant_load_i8_align828 ; GFX10: liveins: $sgpr0_sgpr129 ; GFX10-NEXT: {{ $}}30 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr131 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4)32 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)33 %0:_(p1) = COPY $sgpr0_sgpr134 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 8, addrspace 4)35 S_ENDPGM 0, implicit %136...37---38name: constant_load_i8_align439legalized: true40 41body: |42 bb.0:43 liveins: $sgpr0_sgpr144 ; GFX8-LABEL: name: constant_load_i8_align445 ; GFX8: liveins: $sgpr0_sgpr146 ; GFX8-NEXT: {{ $}}47 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr148 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)49 ; GFX8-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)50 ;51 ; GFX9-LABEL: name: constant_load_i8_align452 ; GFX9: liveins: $sgpr0_sgpr153 ; GFX9-NEXT: {{ $}}54 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr155 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)56 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)57 ;58 ; GFX10-LABEL: name: constant_load_i8_align459 ; GFX10: liveins: $sgpr0_sgpr160 ; GFX10-NEXT: {{ $}}61 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr162 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)63 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)64 %0:_(p1) = COPY $sgpr0_sgpr165 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 4, addrspace 4)66 S_ENDPGM 0, implicit %167...68---69name: constant_load_i16_align470legalized: true71 72body: |73 bb.0:74 liveins: $sgpr0_sgpr175 ; GFX8-LABEL: name: constant_load_i16_align476 ; GFX8: liveins: $sgpr0_sgpr177 ; GFX8-NEXT: {{ $}}78 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr179 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)80 ; GFX8-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)81 ;82 ; GFX9-LABEL: name: constant_load_i16_align483 ; GFX9: liveins: $sgpr0_sgpr184 ; GFX9-NEXT: {{ $}}85 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr186 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)87 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)88 ;89 ; GFX10-LABEL: name: constant_load_i16_align490 ; GFX10: liveins: $sgpr0_sgpr191 ; GFX10-NEXT: {{ $}}92 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr193 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)94 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)95 %0:_(p1) = COPY $sgpr0_sgpr196 %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 4, addrspace 4)97 S_ENDPGM 0, implicit %198...99---100name: constant_sextload_i8_align4101legalized: true102 103body: |104 bb.0:105 liveins: $sgpr0_sgpr1106 ; GFX8-LABEL: name: constant_sextload_i8_align4107 ; GFX8: liveins: $sgpr0_sgpr1108 ; GFX8-NEXT: {{ $}}109 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1110 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)111 ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8112 ; GFX8-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)113 ;114 ; GFX9-LABEL: name: constant_sextload_i8_align4115 ; GFX9: liveins: $sgpr0_sgpr1116 ; GFX9-NEXT: {{ $}}117 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1118 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)119 ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8120 ; GFX9-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)121 ;122 ; GFX10-LABEL: name: constant_sextload_i8_align4123 ; GFX10: liveins: $sgpr0_sgpr1124 ; GFX10-NEXT: {{ $}}125 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1126 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)127 ; GFX10-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8128 ; GFX10-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)129 %0:_(p1) = COPY $sgpr0_sgpr1130 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 4)131 S_ENDPGM 0, implicit %1132...133---134name: constant_sextload_i16_align4135legalized: true136 137body: |138 bb.0:139 liveins: $sgpr0_sgpr1140 ; GFX8-LABEL: name: constant_sextload_i16_align4141 ; GFX8: liveins: $sgpr0_sgpr1142 ; GFX8-NEXT: {{ $}}143 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1144 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)145 ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16146 ; GFX8-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)147 ;148 ; GFX9-LABEL: name: constant_sextload_i16_align4149 ; GFX9: liveins: $sgpr0_sgpr1150 ; GFX9-NEXT: {{ $}}151 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1152 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)153 ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16154 ; GFX9-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)155 ;156 ; GFX10-LABEL: name: constant_sextload_i16_align4157 ; GFX10: liveins: $sgpr0_sgpr1158 ; GFX10-NEXT: {{ $}}159 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1160 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)161 ; GFX10-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16162 ; GFX10-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)163 %0:_(p1) = COPY $sgpr0_sgpr1164 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 4)165 S_ENDPGM 0, implicit %1166...167 168---169name: constant_zextload_i8_align4170legalized: true171 172body: |173 bb.0:174 liveins: $sgpr0_sgpr1175 ; GFX8-LABEL: name: constant_zextload_i8_align4176 ; GFX8: liveins: $sgpr0_sgpr1177 ; GFX8-NEXT: {{ $}}178 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1179 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)180 ; GFX8-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255181 ; GFX8-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]182 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AND]](s32)183 ;184 ; GFX9-LABEL: name: constant_zextload_i8_align4185 ; GFX9: liveins: $sgpr0_sgpr1186 ; GFX9-NEXT: {{ $}}187 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1188 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)189 ; GFX9-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255190 ; GFX9-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]191 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AND]](s32)192 ;193 ; GFX10-LABEL: name: constant_zextload_i8_align4194 ; GFX10: liveins: $sgpr0_sgpr1195 ; GFX10-NEXT: {{ $}}196 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1197 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)198 ; GFX10-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255199 ; GFX10-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]200 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AND]](s32)201 %0:_(p1) = COPY $sgpr0_sgpr1202 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 4)203 S_ENDPGM 0, implicit %1204...205---206name: constant_zextload_i16_align4207legalized: true208 209body: |210 bb.0:211 liveins: $sgpr0_sgpr1212 ; GFX8-LABEL: name: constant_zextload_i16_align4213 ; GFX8: liveins: $sgpr0_sgpr1214 ; GFX8-NEXT: {{ $}}215 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1216 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)217 ; GFX8-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535218 ; GFX8-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]219 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AND]](s32)220 ;221 ; GFX9-LABEL: name: constant_zextload_i16_align4222 ; GFX9: liveins: $sgpr0_sgpr1223 ; GFX9-NEXT: {{ $}}224 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1225 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)226 ; GFX9-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535227 ; GFX9-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]228 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AND]](s32)229 ;230 ; GFX10-LABEL: name: constant_zextload_i16_align4231 ; GFX10: liveins: $sgpr0_sgpr1232 ; GFX10-NEXT: {{ $}}233 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1234 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)235 ; GFX10-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535236 ; GFX10-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]237 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AND]](s32)238 %0:_(p1) = COPY $sgpr0_sgpr1239 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 4)240 S_ENDPGM 0, implicit %1241...242---243name: global_load_i8_align4244legalized: true245 246body: |247 bb.0:248 liveins: $sgpr0_sgpr1249 ; GFX8-LABEL: name: global_load_i8_align4250 ; GFX8: liveins: $sgpr0_sgpr1251 ; GFX8-NEXT: {{ $}}252 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1253 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)254 ; GFX8-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)255 ;256 ; GFX9-LABEL: name: global_load_i8_align4257 ; GFX9: liveins: $sgpr0_sgpr1258 ; GFX9-NEXT: {{ $}}259 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1260 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)261 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)262 ;263 ; GFX10-LABEL: name: global_load_i8_align4264 ; GFX10: liveins: $sgpr0_sgpr1265 ; GFX10-NEXT: {{ $}}266 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1267 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)268 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)269 %0:_(p1) = COPY $sgpr0_sgpr1270 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 4, addrspace 1)271 S_ENDPGM 0, implicit %1272...273---274name: global_load_i16_align4275legalized: true276 277body: |278 bb.0:279 liveins: $sgpr0_sgpr1280 ; GFX8-LABEL: name: global_load_i16_align4281 ; GFX8: liveins: $sgpr0_sgpr1282 ; GFX8-NEXT: {{ $}}283 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1284 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)285 ; GFX8-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)286 ;287 ; GFX9-LABEL: name: global_load_i16_align4288 ; GFX9: liveins: $sgpr0_sgpr1289 ; GFX9-NEXT: {{ $}}290 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1291 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)292 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)293 ;294 ; GFX10-LABEL: name: global_load_i16_align4295 ; GFX10: liveins: $sgpr0_sgpr1296 ; GFX10-NEXT: {{ $}}297 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1298 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)299 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)300 %0:_(p1) = COPY $sgpr0_sgpr1301 %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 4, addrspace 1)302 S_ENDPGM 0, implicit %1303...304---305name: global_sextload_i8_alig4306legalized: true307 308body: |309 bb.0:310 liveins: $sgpr0_sgpr1311 ; GFX8-LABEL: name: global_sextload_i8_alig4312 ; GFX8: liveins: $sgpr0_sgpr1313 ; GFX8-NEXT: {{ $}}314 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1315 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)316 ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8317 ; GFX8-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)318 ;319 ; GFX9-LABEL: name: global_sextload_i8_alig4320 ; GFX9: liveins: $sgpr0_sgpr1321 ; GFX9-NEXT: {{ $}}322 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1323 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)324 ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8325 ; GFX9-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)326 ;327 ; GFX10-LABEL: name: global_sextload_i8_alig4328 ; GFX10: liveins: $sgpr0_sgpr1329 ; GFX10-NEXT: {{ $}}330 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1331 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)332 ; GFX10-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8333 ; GFX10-NEXT: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)334 %0:_(p1) = COPY $sgpr0_sgpr1335 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 1)336 S_ENDPGM 0, implicit %1337...338---339name: global_zextload_i16_align4340legalized: true341 342body: |343 bb.0:344 liveins: $sgpr0_sgpr1345 ; GFX8-LABEL: name: global_zextload_i16_align4346 ; GFX8: liveins: $sgpr0_sgpr1347 ; GFX8-NEXT: {{ $}}348 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1349 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)350 ; GFX8-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535351 ; GFX8-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]352 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AND]](s32)353 ;354 ; GFX9-LABEL: name: global_zextload_i16_align4355 ; GFX9: liveins: $sgpr0_sgpr1356 ; GFX9-NEXT: {{ $}}357 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1358 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)359 ; GFX9-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535360 ; GFX9-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]361 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AND]](s32)362 ;363 ; GFX10-LABEL: name: global_zextload_i16_align4364 ; GFX10: liveins: $sgpr0_sgpr1365 ; GFX10-NEXT: {{ $}}366 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1367 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)368 ; GFX10-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535369 ; GFX10-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]370 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AND]](s32)371 %0:_(p1) = COPY $sgpr0_sgpr1372 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 1)373 S_ENDPGM 0, implicit %1374...375# Some negative test cases376---377name: constant_load_i8_align2378legalized: true379body: |380 bb.0:381 liveins: $sgpr0_sgpr1382 ; GFX8-LABEL: name: constant_load_i8_align2383 ; GFX8: liveins: $sgpr0_sgpr1384 ; GFX8-NEXT: {{ $}}385 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1386 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)387 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]388 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)389 ;390 ; GFX9-LABEL: name: constant_load_i8_align2391 ; GFX9: liveins: $sgpr0_sgpr1392 ; GFX9-NEXT: {{ $}}393 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1394 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)395 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]396 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)397 ;398 ; GFX10-LABEL: name: constant_load_i8_align2399 ; GFX10: liveins: $sgpr0_sgpr1400 ; GFX10-NEXT: {{ $}}401 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1402 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)403 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]404 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)405 %0:_(p1) = COPY $sgpr0_sgpr1406 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 2, addrspace 4)407 S_ENDPGM 0, implicit %1408...409---410name: constant_load_i16_align2411legalized: true412 413body: |414 bb.0:415 liveins: $sgpr0_sgpr1416 ; GFX8-LABEL: name: constant_load_i16_align2417 ; GFX8: liveins: $sgpr0_sgpr1418 ; GFX8-NEXT: {{ $}}419 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1420 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)421 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]422 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)423 ;424 ; GFX9-LABEL: name: constant_load_i16_align2425 ; GFX9: liveins: $sgpr0_sgpr1426 ; GFX9-NEXT: {{ $}}427 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1428 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)429 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]430 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)431 ;432 ; GFX10-LABEL: name: constant_load_i16_align2433 ; GFX10: liveins: $sgpr0_sgpr1434 ; GFX10-NEXT: {{ $}}435 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1436 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)437 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]438 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)439 %0:_(p1) = COPY $sgpr0_sgpr1440 %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 2, addrspace 4)441 S_ENDPGM 0, implicit %1442...443---444name: constant_sextload_i8_align2445legalized: true446 447body: |448 bb.0:449 liveins: $sgpr0_sgpr1450 ; GFX8-LABEL: name: constant_sextload_i8_align2451 ; GFX8: liveins: $sgpr0_sgpr1452 ; GFX8-NEXT: {{ $}}453 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1454 ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)455 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[SEXTLOAD]]456 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)457 ;458 ; GFX9-LABEL: name: constant_sextload_i8_align2459 ; GFX9: liveins: $sgpr0_sgpr1460 ; GFX9-NEXT: {{ $}}461 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1462 ; GFX9-NEXT: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)463 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[SEXTLOAD]]464 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)465 ;466 ; GFX10-LABEL: name: constant_sextload_i8_align2467 ; GFX10: liveins: $sgpr0_sgpr1468 ; GFX10-NEXT: {{ $}}469 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1470 ; GFX10-NEXT: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)471 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[SEXTLOAD]]472 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)473 %0:_(p1) = COPY $sgpr0_sgpr1474 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 2, addrspace 4)475 S_ENDPGM 0, implicit %1476...477---478name: constant_sextload_i16_align2479legalized: true480 481body: |482 bb.0:483 liveins: $sgpr0_sgpr1484 ; GFX8-LABEL: name: constant_sextload_i16_align2485 ; GFX8: liveins: $sgpr0_sgpr1486 ; GFX8-NEXT: {{ $}}487 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1488 ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)489 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[SEXTLOAD]]490 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)491 ;492 ; GFX9-LABEL: name: constant_sextload_i16_align2493 ; GFX9: liveins: $sgpr0_sgpr1494 ; GFX9-NEXT: {{ $}}495 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1496 ; GFX9-NEXT: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)497 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[SEXTLOAD]]498 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)499 ;500 ; GFX10-LABEL: name: constant_sextload_i16_align2501 ; GFX10: liveins: $sgpr0_sgpr1502 ; GFX10-NEXT: {{ $}}503 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1504 ; GFX10-NEXT: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)505 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[SEXTLOAD]]506 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)507 %0:_(p1) = COPY $sgpr0_sgpr1508 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s16), align 2, addrspace 4)509 S_ENDPGM 0, implicit %1510...511---512name: constant_zextload_i8_align2513legalized: true514 515body: |516 bb.0:517 liveins: $sgpr0_sgpr1518 ; GFX8-LABEL: name: constant_zextload_i8_align2519 ; GFX8: liveins: $sgpr0_sgpr1520 ; GFX8-NEXT: {{ $}}521 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1522 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)523 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[ZEXTLOAD]]524 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)525 ;526 ; GFX9-LABEL: name: constant_zextload_i8_align2527 ; GFX9: liveins: $sgpr0_sgpr1528 ; GFX9-NEXT: {{ $}}529 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1530 ; GFX9-NEXT: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)531 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[ZEXTLOAD]]532 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)533 ;534 ; GFX10-LABEL: name: constant_zextload_i8_align2535 ; GFX10: liveins: $sgpr0_sgpr1536 ; GFX10-NEXT: {{ $}}537 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1538 ; GFX10-NEXT: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY]](p1) :: (invariant load (s8), align 2, addrspace 4)539 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[ZEXTLOAD]]540 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)541 %0:_(p1) = COPY $sgpr0_sgpr1542 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s8), align 2, addrspace 4)543 S_ENDPGM 0, implicit %1544...545---546name: constant_zextload_i16_align2547legalized: true548 549body: |550 bb.0:551 liveins: $sgpr0_sgpr1552 ; GFX8-LABEL: name: constant_zextload_i16_align2553 ; GFX8: liveins: $sgpr0_sgpr1554 ; GFX8-NEXT: {{ $}}555 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1556 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)557 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[ZEXTLOAD]]558 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)559 ;560 ; GFX9-LABEL: name: constant_zextload_i16_align2561 ; GFX9: liveins: $sgpr0_sgpr1562 ; GFX9-NEXT: {{ $}}563 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1564 ; GFX9-NEXT: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)565 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[ZEXTLOAD]]566 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)567 ;568 ; GFX10-LABEL: name: constant_zextload_i16_align2569 ; GFX10: liveins: $sgpr0_sgpr1570 ; GFX10-NEXT: {{ $}}571 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1572 ; GFX10-NEXT: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY]](p1) :: (invariant load (s16), addrspace 4)573 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[ZEXTLOAD]]574 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)575 %0:_(p1) = COPY $sgpr0_sgpr1576 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 2, addrspace 4)577 S_ENDPGM 0, implicit %1578...579---580name: local_load_i8_align4581legalized: true582 583body: |584 bb.0:585 liveins: $sgpr0_sgpr1586 ; GFX8-LABEL: name: local_load_i8_align4587 ; GFX8: liveins: $sgpr0_sgpr1588 ; GFX8-NEXT: {{ $}}589 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1590 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (load (s8), align 4, addrspace 3)591 ; GFX8-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]592 ; GFX8-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)593 ;594 ; GFX9-LABEL: name: local_load_i8_align4595 ; GFX9: liveins: $sgpr0_sgpr1596 ; GFX9-NEXT: {{ $}}597 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1598 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (load (s8), align 4, addrspace 3)599 ; GFX9-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]600 ; GFX9-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)601 ;602 ; GFX10-LABEL: name: local_load_i8_align4603 ; GFX10: liveins: $sgpr0_sgpr1604 ; GFX10-NEXT: {{ $}}605 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1606 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY]](p1) :: (load (s8), align 4, addrspace 3)607 ; GFX10-NEXT: [[AMDGPU_READANYLANE:%[0-9]+]]:sgpr(s32) = G_AMDGPU_READANYLANE [[LOAD]]608 ; GFX10-NEXT: S_ENDPGM 0, implicit [[AMDGPU_READANYLANE]](s32)609 %0:_(p1) = COPY $sgpr0_sgpr1610 %1:_(s32) = G_LOAD %0 :: (load (s8), align 4, addrspace 3)611 S_ENDPGM 0, implicit %1612...613---614name: private_load_i8_align4615legalized: true616 617body: |618 bb.0:619 liveins: $sgpr0_sgpr1620 ; GFX8-LABEL: name: private_load_i8_align4621 ; GFX8: liveins: $sgpr0_sgpr1622 ; GFX8-NEXT: {{ $}}623 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1624 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)625 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5)626 ; GFX8-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)627 ;628 ; GFX9-LABEL: name: private_load_i8_align4629 ; GFX9: liveins: $sgpr0_sgpr1630 ; GFX9-NEXT: {{ $}}631 ; GFX9-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1632 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)633 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5)634 ; GFX9-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)635 ;636 ; GFX10-LABEL: name: private_load_i8_align4637 ; GFX10: liveins: $sgpr0_sgpr1638 ; GFX10-NEXT: {{ $}}639 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1640 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)641 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5)642 ; GFX10-NEXT: S_ENDPGM 0, implicit [[LOAD]](s32)643 %0:_(p1) = COPY $sgpr0_sgpr1644 %1:_(s32) = G_LOAD %0 :: (load (s8), align 4, addrspace 5)645 S_ENDPGM 0, implicit %1646...647