391 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3 4---5name: sext_inreg_s32_7_sextload_from_16tracksRegLiveness: true7body: |8 bb.0:9 liveins: $vgpr0_vgpr1, $vgpr2_vgpr310 11 ; GCN-LABEL: name: sext_inreg_s32_7_sextload_from_112 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr313 ; GCN-NEXT: {{ $}}14 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr115 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)16 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SEXTLOAD]], 717 ; GCN-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)18 %0:_(p1) = COPY $vgpr0_vgpr119 %1:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)20 %2:_(s32) = G_SEXT_INREG %1, 721 $vgpr0 = COPY %222 23...24 25---26name: sext_inreg_s32_8_sextload_from_127tracksRegLiveness: true28body: |29 bb.0:30 liveins: $vgpr0_vgpr1, $vgpr2_vgpr331 32 ; GCN-LABEL: name: sext_inreg_s32_8_sextload_from_133 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr334 ; GCN-NEXT: {{ $}}35 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr136 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)37 ; GCN-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)38 %0:_(p1) = COPY $vgpr0_vgpr139 %1:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)40 %2:_(s32) = G_SEXT_INREG %1, 841 $vgpr0 = COPY %242 43...44 45---46name: sext_inreg_s32_9_sextload_from_147tracksRegLiveness: true48body: |49 bb.0:50 liveins: $vgpr0_vgpr1, $vgpr2_vgpr351 52 ; GCN-LABEL: name: sext_inreg_s32_9_sextload_from_153 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr354 ; GCN-NEXT: {{ $}}55 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr156 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)57 ; GCN-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)58 %0:_(p1) = COPY $vgpr0_vgpr159 %1:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)60 %2:_(s32) = G_SEXT_INREG %1, 961 $vgpr0 = COPY %262 63...64 65---66name: sext_inreg_s32_7_sext_from_s867tracksRegLiveness: true68body: |69 bb.0:70 liveins: $vgpr0_vgpr1, $vgpr2_vgpr371 72 ; GCN-LABEL: name: sext_inreg_s32_7_sext_from_s873 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr374 ; GCN-NEXT: {{ $}}75 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr176 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)77 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SEXTLOAD]], 778 ; GCN-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)79 %0:_(p1) = COPY $vgpr0_vgpr180 %1:_(s8) = G_LOAD %0 :: (load (s8), addrspace 1)81 %2:_(s32) = G_SEXT %182 %3:_(s32) = G_SEXT_INREG %2, 783 $vgpr0 = COPY %384 85...86 87---88name: sext_inreg_s32_8_sext_from_s889tracksRegLiveness: true90body: |91 bb.0:92 liveins: $vgpr0_vgpr1, $vgpr2_vgpr393 94 ; GCN-LABEL: name: sext_inreg_s32_8_sext_from_s895 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr396 ; GCN-NEXT: {{ $}}97 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr198 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)99 ; GCN-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)100 %0:_(p1) = COPY $vgpr0_vgpr1101 %1:_(s8) = G_LOAD %0 :: (load (s8), addrspace 1)102 %2:_(s32) = G_SEXT %1103 %3:_(s32) = G_SEXT_INREG %2, 8104 $vgpr0 = COPY %3105 106...107 108---109name: sext_inreg_s32_8_sext_from_s9110tracksRegLiveness: true111body: |112 bb.0:113 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3114 115 ; GCN-LABEL: name: sext_inreg_s32_8_sext_from_s9116 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3117 ; GCN-NEXT: {{ $}}118 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1119 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)120 ; GCN-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)121 %0:_(p1) = COPY $vgpr0_vgpr1122 %1:_(s8) = G_LOAD %0 :: (load (s8), addrspace 1)123 %2:_(s32) = G_SEXT %1124 %3:_(s32) = G_SEXT_INREG %2, 9125 $vgpr0 = COPY %3126 127...128 129---130name: sext_inreg_v2s32_7_sext_from_v2s8131tracksRegLiveness: true132body: |133 bb.0:134 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3135 136 ; GCN-LABEL: name: sext_inreg_v2s32_7_sext_from_v2s8137 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3138 ; GCN-NEXT: {{ $}}139 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1140 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s8>) = G_LOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)141 ; GCN-NEXT: [[SEXT:%[0-9]+]]:_(<2 x s32>) = G_SEXT [[LOAD]](<2 x s8>)142 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<2 x s32>) = G_SEXT_INREG [[SEXT]], 7143 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[SEXT_INREG]](<2 x s32>)144 %0:_(p1) = COPY $vgpr0_vgpr1145 %1:_(<2 x s8>) = G_LOAD %0 :: (load (<2 x s8>), addrspace 1)146 %2:_(<2 x s32>) = G_SEXT %1147 %3:_(<2 x s32>) = G_SEXT_INREG %2, 7148 $vgpr0_vgpr1 = COPY %3149 150...151 152---153name: sext_inreg_v2s32_8_sext_from_v2s8154tracksRegLiveness: true155body: |156 bb.0:157 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3158 159 ; GCN-LABEL: name: sext_inreg_v2s32_8_sext_from_v2s8160 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3161 ; GCN-NEXT: {{ $}}162 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1163 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s8>) = G_LOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)164 ; GCN-NEXT: [[SEXT:%[0-9]+]]:_(<2 x s32>) = G_SEXT [[LOAD]](<2 x s8>)165 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](<2 x s32>)166 %0:_(p1) = COPY $vgpr0_vgpr1167 %1:_(<2 x s8>) = G_LOAD %0 :: (load (<2 x s8>), addrspace 1)168 %2:_(<2 x s32>) = G_SEXT %1169 %3:_(<2 x s32>) = G_SEXT_INREG %2, 8170 $vgpr0_vgpr1 = COPY %3171 172...173 174---175name: sext_inreg_v2s32_9_sext_from_v2s8176tracksRegLiveness: true177body: |178 bb.0:179 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3180 181 ; GCN-LABEL: name: sext_inreg_v2s32_9_sext_from_v2s8182 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3183 ; GCN-NEXT: {{ $}}184 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1185 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s8>) = G_LOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)186 ; GCN-NEXT: [[SEXT:%[0-9]+]]:_(<2 x s32>) = G_SEXT [[LOAD]](<2 x s8>)187 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](<2 x s32>)188 %0:_(p1) = COPY $vgpr0_vgpr1189 %1:_(<2 x s8>) = G_LOAD %0 :: (load (<2 x s8>), addrspace 1)190 %2:_(<2 x s32>) = G_SEXT %1191 %3:_(<2 x s32>) = G_SEXT_INREG %2, 9192 $vgpr0_vgpr1 = COPY %3193 194...195 196---197name: sext_inreg_s32_7_zextload_from_1198tracksRegLiveness: true199body: |200 bb.0:201 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3202 203 ; GCN-LABEL: name: sext_inreg_s32_7_zextload_from_1204 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3205 ; GCN-NEXT: {{ $}}206 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1207 ; GCN-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)208 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ZEXTLOAD]], 7209 ; GCN-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)210 %0:_(p1) = COPY $vgpr0_vgpr1211 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)212 %2:_(s32) = G_SEXT_INREG %1, 7213 $vgpr0 = COPY %2214 215...216 217---218name: sext_inreg_s32_8_zextload_from_1219tracksRegLiveness: true220body: |221 bb.0:222 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3223 224 ; GCN-LABEL: name: sext_inreg_s32_8_zextload_from_1225 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3226 ; GCN-NEXT: {{ $}}227 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1228 ; GCN-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)229 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ZEXTLOAD]], 8230 ; GCN-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)231 %0:_(p1) = COPY $vgpr0_vgpr1232 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)233 %2:_(s32) = G_SEXT_INREG %1, 8234 $vgpr0 = COPY %2235 236...237 238---239name: sext_inreg_s32_9_zextload_from_1240tracksRegLiveness: true241body: |242 bb.0:243 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3244 245 ; GCN-LABEL: name: sext_inreg_s32_9_zextload_from_1246 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3247 ; GCN-NEXT: {{ $}}248 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1249 ; GCN-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)250 ; GCN-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)251 %0:_(p1) = COPY $vgpr0_vgpr1252 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)253 %2:_(s32) = G_SEXT_INREG %1, 9254 $vgpr0 = COPY %2255 256...257 258---259name: sext_inreg_s32_select_sextload_from_1260tracksRegLiveness: true261body: |262 bb.0:263 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5264 265 ; GCN-LABEL: name: sext_inreg_s32_select_sextload_from_1266 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5267 ; GCN-NEXT: {{ $}}268 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1269 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr3270 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr4271 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr5272 ; GCN-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]273 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)274 ; GCN-NEXT: [[SEXTLOAD1:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY1]](p1) :: (load (s8), addrspace 1)275 ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SEXTLOAD]], [[SEXTLOAD1]]276 ; GCN-NEXT: $vgpr0 = COPY [[SELECT]](s32)277 %0:_(p1) = COPY $vgpr0_vgpr1278 %1:_(p1) = COPY $vgpr2_vgpr3279 %2:_(s32) = COPY $vgpr4280 %3:_(s32) = COPY $vgpr5281 %4:_(s1) = G_ICMP intpred(eq), %2, %3282 %5:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)283 %6:_(s32) = G_SEXTLOAD %1 :: (load (s8), addrspace 1)284 %7:_(s32) = G_SELECT %4, %5, %6285 %8:_(s32) = G_SEXT_INREG %7, 8286 $vgpr0 = COPY %8287 288...289 290---291name: sext_inreg_s32_select_sextload_from_1_fail_lhs292tracksRegLiveness: true293body: |294 bb.0:295 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5296 297 ; GCN-LABEL: name: sext_inreg_s32_select_sextload_from_1_fail_lhs298 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5299 ; GCN-NEXT: {{ $}}300 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1301 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr3302 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr4303 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr5304 ; GCN-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]305 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)306 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY1]](p1) :: (load (s8), addrspace 1)307 ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[LOAD]], [[SEXTLOAD]]308 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SELECT]], 8309 ; GCN-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)310 %0:_(p1) = COPY $vgpr0_vgpr1311 %1:_(p1) = COPY $vgpr2_vgpr3312 %2:_(s32) = COPY $vgpr4313 %3:_(s32) = COPY $vgpr5314 %4:_(s1) = G_ICMP intpred(eq), %2, %3315 %5:_(s32) = G_LOAD %0 :: (load (s32), addrspace 1)316 %6:_(s32) = G_SEXTLOAD %1 :: (load (s8), addrspace 1)317 %7:_(s32) = G_SELECT %4, %5, %6318 %8:_(s32) = G_SEXT_INREG %7, 8319 $vgpr0 = COPY %8320 321...322 323---324name: sext_inreg_s32_select_sextload_from_1_fail_rhs325tracksRegLiveness: true326body: |327 bb.0:328 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5329 330 ; GCN-LABEL: name: sext_inreg_s32_select_sextload_from_1_fail_rhs331 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4, $vgpr5332 ; GCN-NEXT: {{ $}}333 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1334 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr3335 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr4336 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr5337 ; GCN-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]]338 ; GCN-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)339 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY1]](p1) :: (load (s32), addrspace 1)340 ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SEXTLOAD]], [[LOAD]]341 ; GCN-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[SELECT]], 8342 ; GCN-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)343 %0:_(p1) = COPY $vgpr0_vgpr1344 %1:_(p1) = COPY $vgpr2_vgpr3345 %2:_(s32) = COPY $vgpr4346 %3:_(s32) = COPY $vgpr5347 %4:_(s1) = G_ICMP intpred(eq), %2, %3348 %5:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)349 %6:_(s32) = G_LOAD %1 :: (load (s32), addrspace 1)350 %7:_(s32) = G_SELECT %4, %5, %6351 %8:_(s32) = G_SEXT_INREG %7, 8352 $vgpr0 = COPY %8353 354...355---356name: assert_sext_s8357tracksRegLiveness: true358body: |359 bb.0:360 liveins: $vgpr0361 ; GCN-LABEL: name: assert_sext_s8362 ; GCN: liveins: $vgpr0363 ; GCN-NEXT: {{ $}}364 ; GCN-NEXT: %copy:_(s32) = COPY $vgpr0365 ; GCN-NEXT: %assert_sext:_(s32) = G_ASSERT_SEXT %copy, 8366 ; GCN-NEXT: $vgpr0 = COPY %assert_sext(s32)367 %copy:_(s32) = COPY $vgpr0368 %assert_sext:_(s32) = G_ASSERT_SEXT %copy, 8369 %sext_inreg:_(s32) = G_SEXT_INREG %assert_sext, 8370 $vgpr0 = COPY %sext_inreg371 372...373---374name: sext_inreg_s7_assert_sext_s8375tracksRegLiveness: true376body: |377 bb.0:378 liveins: $vgpr0379 ; GCN-LABEL: name: sext_inreg_s7_assert_sext_s8380 ; GCN: liveins: $vgpr0381 ; GCN-NEXT: {{ $}}382 ; GCN-NEXT: %copy:_(s32) = COPY $vgpr0383 ; GCN-NEXT: %assert_sext:_(s32) = G_ASSERT_SEXT %copy, 8384 ; GCN-NEXT: %sext_inreg:_(s32) = G_SEXT_INREG %assert_sext, 7385 ; GCN-NEXT: $vgpr0 = COPY %sext_inreg(s32)386 %copy:_(s32) = COPY $vgpr0387 %assert_sext:_(s32) = G_ASSERT_SEXT %copy, 8388 %sext_inreg:_(s32) = G_SEXT_INREG %assert_sext, 7389 $vgpr0 = COPY %sext_inreg390...391