1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -global-isel -march=amdgcn -mcpu=fiji -run-pass=regbankselect -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s 3# RUN: llc -global-isel -march=amdgcn -mcpu=gfx900 -run-pass=regbankselect -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s 4# RUN: llc -global-isel -march=amdgcn -mcpu=gfx1010 -run-pass=regbankselect -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s 5--- 6name: constant_load_i8_align8 7legalized: true 8 9body: | 10 bb.0: 11 liveins: $sgpr0_sgpr1 12 ; GFX8-LABEL: name: constant_load_i8_align8 13 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 14 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4) 15 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 16 ; GFX9-LABEL: name: constant_load_i8_align8 17 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 18 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4) 19 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 20 ; GFX10-LABEL: name: constant_load_i8_align8 21 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 22 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4) 23 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 24 %0:_(p1) = COPY $sgpr0_sgpr1 25 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 8, addrspace 4) 26 S_ENDPGM 0, implicit %1 27... 28--- 29name: constant_load_i8_align4 30legalized: true 31 32body: | 33 bb.0: 34 liveins: $sgpr0_sgpr1 35 ; GFX8-LABEL: name: constant_load_i8_align4 36 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 37 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 38 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 39 ; GFX9-LABEL: name: constant_load_i8_align4 40 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 41 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 42 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 43 ; GFX10-LABEL: name: constant_load_i8_align4 44 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 45 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 46 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 47 %0:_(p1) = COPY $sgpr0_sgpr1 48 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 4, addrspace 4) 49 S_ENDPGM 0, implicit %1 50... 51--- 52name: constant_load_i16_align4 53legalized: true 54 55body: | 56 bb.0: 57 liveins: $sgpr0_sgpr1 58 ; GFX8-LABEL: name: constant_load_i16_align4 59 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 60 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 61 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 62 ; GFX9-LABEL: name: constant_load_i16_align4 63 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 64 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 65 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 66 ; GFX10-LABEL: name: constant_load_i16_align4 67 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 68 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 69 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 70 %0:_(p1) = COPY $sgpr0_sgpr1 71 %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 4, addrspace 4) 72 S_ENDPGM 0, implicit %1 73... 74--- 75name: constant_sextload_i8_align4 76legalized: true 77 78body: | 79 bb.0: 80 liveins: $sgpr0_sgpr1 81 ; GFX8-LABEL: name: constant_sextload_i8_align4 82 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 83 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 84 ; GFX8: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8 85 ; GFX8: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 86 ; GFX9-LABEL: name: constant_sextload_i8_align4 87 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 88 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 89 ; GFX9: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8 90 ; GFX9: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 91 ; GFX10-LABEL: name: constant_sextload_i8_align4 92 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 93 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 94 ; GFX10: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8 95 ; GFX10: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 96 %0:_(p1) = COPY $sgpr0_sgpr1 97 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 4) 98 S_ENDPGM 0, implicit %1 99... 100--- 101name: constant_sextload_i16_align4 102legalized: true 103 104body: | 105 bb.0: 106 liveins: $sgpr0_sgpr1 107 ; GFX8-LABEL: name: constant_sextload_i16_align4 108 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 109 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 110 ; GFX8: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16 111 ; GFX8: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 112 ; GFX9-LABEL: name: constant_sextload_i16_align4 113 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 114 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 115 ; GFX9: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16 116 ; GFX9: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 117 ; GFX10-LABEL: name: constant_sextload_i16_align4 118 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 119 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 120 ; GFX10: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16 121 ; GFX10: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 122 %0:_(p1) = COPY $sgpr0_sgpr1 123 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 4) 124 S_ENDPGM 0, implicit %1 125... 126 127--- 128name: constant_zextload_i8_align4 129legalized: true 130 131body: | 132 bb.0: 133 liveins: $sgpr0_sgpr1 134 ; GFX8-LABEL: name: constant_zextload_i8_align4 135 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 136 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 137 ; GFX8: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255 138 ; GFX8: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 139 ; GFX8: S_ENDPGM 0, implicit [[AND]](s32) 140 ; GFX9-LABEL: name: constant_zextload_i8_align4 141 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 142 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 143 ; GFX9: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255 144 ; GFX9: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 145 ; GFX9: S_ENDPGM 0, implicit [[AND]](s32) 146 ; GFX10-LABEL: name: constant_zextload_i8_align4 147 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 148 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 149 ; GFX10: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255 150 ; GFX10: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 151 ; GFX10: S_ENDPGM 0, implicit [[AND]](s32) 152 %0:_(p1) = COPY $sgpr0_sgpr1 153 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 4) 154 S_ENDPGM 0, implicit %1 155... 156--- 157name: constant_zextload_i16_align4 158legalized: true 159 160body: | 161 bb.0: 162 liveins: $sgpr0_sgpr1 163 ; GFX8-LABEL: name: constant_zextload_i16_align4 164 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 165 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 166 ; GFX8: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535 167 ; GFX8: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 168 ; GFX8: S_ENDPGM 0, implicit [[AND]](s32) 169 ; GFX9-LABEL: name: constant_zextload_i16_align4 170 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 171 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 172 ; GFX9: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535 173 ; GFX9: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 174 ; GFX9: S_ENDPGM 0, implicit [[AND]](s32) 175 ; GFX10-LABEL: name: constant_zextload_i16_align4 176 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 177 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4) 178 ; GFX10: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535 179 ; GFX10: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 180 ; GFX10: S_ENDPGM 0, implicit [[AND]](s32) 181 %0:_(p1) = COPY $sgpr0_sgpr1 182 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 4) 183 S_ENDPGM 0, implicit %1 184... 185--- 186name: global_load_i8_align4 187legalized: true 188 189body: | 190 bb.0: 191 liveins: $sgpr0_sgpr1 192 ; GFX8-LABEL: name: global_load_i8_align4 193 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 194 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 195 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 196 ; GFX9-LABEL: name: global_load_i8_align4 197 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 198 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 199 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 200 ; GFX10-LABEL: name: global_load_i8_align4 201 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 202 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 203 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 204 %0:_(p1) = COPY $sgpr0_sgpr1 205 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 4, addrspace 1) 206 S_ENDPGM 0, implicit %1 207... 208--- 209name: global_load_i16_align4 210legalized: true 211 212body: | 213 bb.0: 214 liveins: $sgpr0_sgpr1 215 ; GFX8-LABEL: name: global_load_i16_align4 216 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 217 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 218 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 219 ; GFX9-LABEL: name: global_load_i16_align4 220 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 221 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 222 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 223 ; GFX10-LABEL: name: global_load_i16_align4 224 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 225 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 226 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 227 %0:_(p1) = COPY $sgpr0_sgpr1 228 %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 4, addrspace 1) 229 S_ENDPGM 0, implicit %1 230... 231--- 232name: global_sextload_i8_alig4 233legalized: true 234 235body: | 236 bb.0: 237 liveins: $sgpr0_sgpr1 238 ; GFX8-LABEL: name: global_sextload_i8_alig4 239 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 240 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 241 ; GFX8: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8 242 ; GFX8: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 243 ; GFX9-LABEL: name: global_sextload_i8_alig4 244 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 245 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 246 ; GFX9: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8 247 ; GFX9: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 248 ; GFX10-LABEL: name: global_sextload_i8_alig4 249 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 250 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 251 ; GFX10: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8 252 ; GFX10: S_ENDPGM 0, implicit [[SEXT_INREG]](s32) 253 %0:_(p1) = COPY $sgpr0_sgpr1 254 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 1) 255 S_ENDPGM 0, implicit %1 256... 257--- 258name: global_zextload_i16_align4 259legalized: true 260 261body: | 262 bb.0: 263 liveins: $sgpr0_sgpr1 264 ; GFX8-LABEL: name: global_zextload_i16_align4 265 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 266 ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 267 ; GFX8: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535 268 ; GFX8: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 269 ; GFX8: S_ENDPGM 0, implicit [[AND]](s32) 270 ; GFX9-LABEL: name: global_zextload_i16_align4 271 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 272 ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 273 ; GFX9: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535 274 ; GFX9: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 275 ; GFX9: S_ENDPGM 0, implicit [[AND]](s32) 276 ; GFX10-LABEL: name: global_zextload_i16_align4 277 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 278 ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1) 279 ; GFX10: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535 280 ; GFX10: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]] 281 ; GFX10: S_ENDPGM 0, implicit [[AND]](s32) 282 %0:_(p1) = COPY $sgpr0_sgpr1 283 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 1) 284 S_ENDPGM 0, implicit %1 285... 286# Some negative test cases 287--- 288name: constant_load_i8_align2 289legalized: true 290body: | 291 bb.0: 292 liveins: $sgpr0_sgpr1 293 ; GFX8-LABEL: name: constant_load_i8_align2 294 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 295 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 296 ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 297 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 298 ; GFX9-LABEL: name: constant_load_i8_align2 299 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 300 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 301 ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 302 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 303 ; GFX10-LABEL: name: constant_load_i8_align2 304 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 305 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 306 ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 307 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 308 %0:_(p1) = COPY $sgpr0_sgpr1 309 %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 2, addrspace 4) 310 S_ENDPGM 0, implicit %1 311... 312--- 313name: constant_load_i16_align2 314legalized: true 315 316body: | 317 bb.0: 318 liveins: $sgpr0_sgpr1 319 ; GFX8-LABEL: name: constant_load_i16_align2 320 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 321 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 322 ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 323 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 324 ; GFX9-LABEL: name: constant_load_i16_align2 325 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 326 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 327 ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 328 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 329 ; GFX10-LABEL: name: constant_load_i16_align2 330 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 331 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 332 ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 333 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 334 %0:_(p1) = COPY $sgpr0_sgpr1 335 %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 2, addrspace 4) 336 S_ENDPGM 0, implicit %1 337... 338--- 339name: constant_sextload_i8_align2 340legalized: true 341 342body: | 343 bb.0: 344 liveins: $sgpr0_sgpr1 345 ; GFX8-LABEL: name: constant_sextload_i8_align2 346 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 347 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 348 ; GFX8: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 349 ; GFX8: S_ENDPGM 0, implicit [[SEXTLOAD]](s32) 350 ; GFX9-LABEL: name: constant_sextload_i8_align2 351 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 352 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 353 ; GFX9: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 354 ; GFX9: S_ENDPGM 0, implicit [[SEXTLOAD]](s32) 355 ; GFX10-LABEL: name: constant_sextload_i8_align2 356 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 357 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 358 ; GFX10: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 359 ; GFX10: S_ENDPGM 0, implicit [[SEXTLOAD]](s32) 360 %0:_(p1) = COPY $sgpr0_sgpr1 361 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 2, addrspace 4) 362 S_ENDPGM 0, implicit %1 363... 364--- 365name: constant_sextload_i16_align2 366legalized: true 367 368body: | 369 bb.0: 370 liveins: $sgpr0_sgpr1 371 ; GFX8-LABEL: name: constant_sextload_i16_align2 372 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 373 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 374 ; GFX8: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 375 ; GFX8: S_ENDPGM 0, implicit [[SEXTLOAD]](s32) 376 ; GFX9-LABEL: name: constant_sextload_i16_align2 377 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 378 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 379 ; GFX9: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 380 ; GFX9: S_ENDPGM 0, implicit [[SEXTLOAD]](s32) 381 ; GFX10-LABEL: name: constant_sextload_i16_align2 382 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 383 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 384 ; GFX10: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 385 ; GFX10: S_ENDPGM 0, implicit [[SEXTLOAD]](s32) 386 %0:_(p1) = COPY $sgpr0_sgpr1 387 %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s16), align 2, addrspace 4) 388 S_ENDPGM 0, implicit %1 389... 390--- 391name: constant_zextload_i8_align2 392legalized: true 393 394body: | 395 bb.0: 396 liveins: $sgpr0_sgpr1 397 ; GFX8-LABEL: name: constant_zextload_i8_align2 398 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 399 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 400 ; GFX8: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 401 ; GFX8: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32) 402 ; GFX9-LABEL: name: constant_zextload_i8_align2 403 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 404 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 405 ; GFX9: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 406 ; GFX9: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32) 407 ; GFX10-LABEL: name: constant_zextload_i8_align2 408 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 409 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 410 ; GFX10: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4) 411 ; GFX10: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32) 412 %0:_(p1) = COPY $sgpr0_sgpr1 413 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s8), align 2, addrspace 4) 414 S_ENDPGM 0, implicit %1 415... 416--- 417name: constant_zextload_i16_align2 418legalized: true 419 420body: | 421 bb.0: 422 liveins: $sgpr0_sgpr1 423 ; GFX8-LABEL: name: constant_zextload_i16_align2 424 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 425 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 426 ; GFX8: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 427 ; GFX8: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32) 428 ; GFX9-LABEL: name: constant_zextload_i16_align2 429 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 430 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 431 ; GFX9: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 432 ; GFX9: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32) 433 ; GFX10-LABEL: name: constant_zextload_i16_align2 434 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 435 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 436 ; GFX10: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4) 437 ; GFX10: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32) 438 %0:_(p1) = COPY $sgpr0_sgpr1 439 %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 2, addrspace 4) 440 S_ENDPGM 0, implicit %1 441... 442--- 443name: local_load_i8_align4 444legalized: true 445 446body: | 447 bb.0: 448 liveins: $sgpr0_sgpr1 449 ; GFX8-LABEL: name: local_load_i8_align4 450 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 451 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 452 ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 3) 453 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 454 ; GFX9-LABEL: name: local_load_i8_align4 455 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 456 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 457 ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 3) 458 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 459 ; GFX10-LABEL: name: local_load_i8_align4 460 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 461 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 462 ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 3) 463 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 464 %0:_(p1) = COPY $sgpr0_sgpr1 465 %1:_(s32) = G_LOAD %0 :: (load (s8), align 4, addrspace 3) 466 S_ENDPGM 0, implicit %1 467... 468--- 469name: private_load_i8_align4 470legalized: true 471 472body: | 473 bb.0: 474 liveins: $sgpr0_sgpr1 475 ; GFX8-LABEL: name: private_load_i8_align4 476 ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 477 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 478 ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5) 479 ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32) 480 ; GFX9-LABEL: name: private_load_i8_align4 481 ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 482 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 483 ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5) 484 ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32) 485 ; GFX10-LABEL: name: private_load_i8_align4 486 ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 487 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1) 488 ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5) 489 ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32) 490 %0:_(p1) = COPY $sgpr0_sgpr1 491 %1:_(s32) = G_LOAD %0 :: (load (s8), align 4, addrspace 5) 492 S_ENDPGM 0, implicit %1 493... 494