718 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck %s3 4---5name: test_anyext_s32_to_s646body: |7 bb.0:8 liveins: $vgpr09 10 ; CHECK-LABEL: name: test_anyext_s32_to_s6411 ; CHECK: liveins: $vgpr012 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr014 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)15 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ANYEXT]](s64)16 %0:_(s32) = COPY $vgpr017 %1:_(s64) = G_ANYEXT %018 $vgpr0_vgpr1 = COPY %119...20 21---22name: test_anyext_s16_to_s6423body: |24 bb.0:25 liveins: $vgpr026 27 ; CHECK-LABEL: name: test_anyext_s16_to_s6428 ; CHECK: liveins: $vgpr029 ; CHECK-NEXT: {{ $}}30 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr031 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)32 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ANYEXT]](s64)33 %0:_(s32) = COPY $vgpr034 %1:_(s16) = G_TRUNC %035 %2:_(s64) = G_ANYEXT %136 $vgpr0_vgpr1 = COPY %237...38 39---40name: test_anyext_s16_to_s3241body: |42 bb.0:43 liveins: $vgpr044 45 ; CHECK-LABEL: name: test_anyext_s16_to_s3246 ; CHECK: liveins: $vgpr047 ; CHECK-NEXT: {{ $}}48 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr049 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)50 %0:_(s32) = COPY $vgpr051 %1:_(s16) = G_TRUNC %052 %2:_(s32) = G_ANYEXT %153 $vgpr0 = COPY %254...55 56---57name: test_anyext_s24_to_s3258body: |59 bb.0:60 liveins: $vgpr061 62 ; CHECK-LABEL: name: test_anyext_s24_to_s3263 ; CHECK: liveins: $vgpr064 ; CHECK-NEXT: {{ $}}65 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr066 ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)67 %0:_(s32) = COPY $vgpr068 %1:_(s24) = G_TRUNC %069 %2:_(s32) = G_ANYEXT %170 $vgpr0 = COPY %271...72 73---74name: test_anyext_s1_to_s3275body: |76 bb.0:77 78 ; CHECK-LABEL: name: test_anyext_s1_to_s3279 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 080 ; CHECK-NEXT: $vgpr0 = COPY [[C]](s32)81 %0:_(s1) = G_CONSTANT i1 082 %1:_(s32) = G_ANYEXT %083 $vgpr0 = COPY %184...85 86---87name: test_anyext_s1_to_s6488body: |89 bb.0:90 91 ; CHECK-LABEL: name: test_anyext_s1_to_s6492 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 093 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[C]](s64)94 %0:_(s1) = G_CONSTANT i1 095 %1:_(s64) = G_ANYEXT %096 $vgpr0_vgpr1 = COPY %197...98 99---100name: test_anyext_v2s16_to_v2s32101body: |102 bb.0:103 liveins: $vgpr0104 105 ; CHECK-LABEL: name: test_anyext_v2s16_to_v2s32106 ; CHECK: liveins: $vgpr0107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0109 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)110 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16111 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)112 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[BITCAST]](s32), [[LSHR]](s32)113 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)114 %0:_(<2 x s16>) = COPY $vgpr0115 %1:_(<2 x s32>) = G_ANYEXT %0116 $vgpr0_vgpr1 = COPY %1117...118 119---120name: test_anyext_v3s16_to_v3s32121body: |122 bb.0:123 liveins: $vgpr0_vgpr1124 125 ; CHECK-LABEL: name: test_anyext_v3s16_to_v3s32126 ; CHECK: liveins: $vgpr0_vgpr1127 ; CHECK-NEXT: {{ $}}128 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1129 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)130 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)131 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16132 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)133 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)134 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[BITCAST]](s32), [[LSHR]](s32), [[BITCAST1]](s32)135 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)136 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1137 %1:_(<3 x s16>) = G_EXTRACT %0, 0138 %2:_(<3 x s32>) = G_ANYEXT %1139 $vgpr0_vgpr1_vgpr2 = COPY %2140...141 142---143name: test_anyext_v4s16_to_v4s32144body: |145 bb.0:146 liveins: $vgpr0147 148 ; CHECK-LABEL: name: test_anyext_v4s16_to_v4s32149 ; CHECK: liveins: $vgpr0150 ; CHECK-NEXT: {{ $}}151 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF152 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<4 x s32>)153 %0:_(<4 x s16>) = G_IMPLICIT_DEF154 %1:_(<4 x s32>) = G_ANYEXT %0155 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1156...157 158---159name: test_anyext_v2s32_to_v2s64160body: |161 bb.0:162 liveins: $vgpr0_vgpr1163 164 ; CHECK-LABEL: name: test_anyext_v2s32_to_v2s64165 ; CHECK: liveins: $vgpr0_vgpr1166 ; CHECK-NEXT: {{ $}}167 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1168 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)169 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[UV]](s32)170 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[UV1]](s32)171 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[ANYEXT]](s64), [[ANYEXT1]](s64)172 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)173 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1174 %1:_(<2 x s64>) = G_ANYEXT %0175 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1176...177 178---179name: test_anyext_v3s32_to_v3s64180body: |181 bb.0:182 liveins: $vgpr0_vgpr1_vgpr2183 184 ; CHECK-LABEL: name: test_anyext_v3s32_to_v3s64185 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2186 ; CHECK-NEXT: {{ $}}187 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2188 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)189 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[UV]](s32)190 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[UV1]](s32)191 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[UV2]](s32)192 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[ANYEXT]](s64), [[ANYEXT1]](s64), [[ANYEXT2]](s64)193 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s64>)194 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2195 %1:_(<3 x s64>) = G_ANYEXT %0196 S_NOP 0, implicit %1197 198...199 200---201name: test_anyext_v4s32_to_v4s64202body: |203 bb.0:204 liveins: $vgpr0_vgpr1_vgpr2_vgpr3205 206 ; CHECK-LABEL: name: test_anyext_v4s32_to_v4s64207 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3208 ; CHECK-NEXT: {{ $}}209 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3210 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)211 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[UV]](s32)212 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[UV1]](s32)213 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[UV2]](s32)214 ; CHECK-NEXT: [[ANYEXT3:%[0-9]+]]:_(s64) = G_ANYEXT [[UV3]](s32)215 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[ANYEXT]](s64), [[ANYEXT1]](s64), [[ANYEXT2]](s64), [[ANYEXT3]](s64)216 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[BUILD_VECTOR]](<4 x s64>)217 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3218 %1:_(<4 x s64>) = G_ANYEXT %0219 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1220...221 222---223name: test_anyext_s8_to_s16224body: |225 bb.0:226 liveins: $vgpr0227 228 ; CHECK-LABEL: name: test_anyext_s8_to_s16229 ; CHECK: liveins: $vgpr0230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0232 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)233 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s16)234 %0:_(s32) = COPY $vgpr0235 %1:_(s8) = G_TRUNC %0236 %2:_(s16) = G_ANYEXT %1237 S_ENDPGM 0, implicit %2238...239 240---241name: test_anyext_s8_to_s24242body: |243 bb.0:244 liveins: $vgpr0245 246 ; CHECK-LABEL: name: test_anyext_s8_to_s24247 ; CHECK: liveins: $vgpr0248 ; CHECK-NEXT: {{ $}}249 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0250 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32)251 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s24)252 %0:_(s32) = COPY $vgpr0253 %1:_(s8) = G_TRUNC %0254 %2:_(s24) = G_ANYEXT %1255 S_ENDPGM 0, implicit %2256...257 258---259name: test_anyext_s7_to_s32260body: |261 bb.0:262 liveins: $vgpr0263 264 ; CHECK-LABEL: name: test_anyext_s7_to_s32265 ; CHECK: liveins: $vgpr0266 ; CHECK-NEXT: {{ $}}267 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0268 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s32)269 %0:_(s32) = COPY $vgpr0270 %1:_(s7) = G_TRUNC %0271 %2:_(s32) = G_ANYEXT %1272 S_ENDPGM 0, implicit %2273...274 275---276name: test_anyext_s8_to_s32277body: |278 bb.0:279 liveins: $vgpr0280 281 ; CHECK-LABEL: name: test_anyext_s8_to_s32282 ; CHECK: liveins: $vgpr0283 ; CHECK-NEXT: {{ $}}284 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0285 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s32)286 %0:_(s32) = COPY $vgpr0287 %1:_(s8) = G_TRUNC %0288 %2:_(s32) = G_ANYEXT %1289 S_ENDPGM 0, implicit %2290...291 292---293name: test_anyext_s32_to_s96294body: |295 bb.0:296 liveins: $vgpr0297 298 ; CHECK-LABEL: name: test_anyext_s32_to_s96299 ; CHECK: liveins: $vgpr0300 ; CHECK-NEXT: {{ $}}301 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0302 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF303 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)304 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF305 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64)306 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s96) = G_TRUNC [[MV1]](s192)307 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s96)308 %0:_(s32) = COPY $vgpr0309 %1:_(s96) = G_ANYEXT %0310 S_ENDPGM 0, implicit %1311...312 313---314name: test_anyext_s32_to_s128315body: |316 bb.0:317 liveins: $vgpr0318 319 ; CHECK-LABEL: name: test_anyext_s32_to_s128320 ; CHECK: liveins: $vgpr0321 ; CHECK-NEXT: {{ $}}322 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0323 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF324 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)325 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF326 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64)327 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s128)328 %0:_(s32) = COPY $vgpr0329 %1:_(s128) = G_ANYEXT %0330 S_ENDPGM 0, implicit %1331...332 333---334name: test_anyext_s32_to_s160335body: |336 bb.0:337 liveins: $vgpr0338 339 ; CHECK-LABEL: name: test_anyext_s32_to_s160340 ; CHECK: liveins: $vgpr0341 ; CHECK-NEXT: {{ $}}342 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0343 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF344 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)345 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF346 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s320) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)347 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s160) = G_TRUNC [[MV1]](s320)348 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s160)349 %0:_(s32) = COPY $vgpr0350 %1:_(s160) = G_ANYEXT %0351 S_ENDPGM 0, implicit %1352...353 354---355name: test_anyext_s32_to_s192356body: |357 bb.0:358 liveins: $vgpr0359 360 ; CHECK-LABEL: name: test_anyext_s32_to_s192361 ; CHECK: liveins: $vgpr0362 ; CHECK-NEXT: {{ $}}363 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0364 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF365 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)366 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF367 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64)368 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s192)369 %0:_(s32) = COPY $vgpr0370 %1:_(s192) = G_ANYEXT %0371 S_ENDPGM 0, implicit %1372...373 374---375name: test_anyext_s32_to_s224376body: |377 bb.0:378 liveins: $vgpr0379 380 ; CHECK-LABEL: name: test_anyext_s32_to_s224381 ; CHECK: liveins: $vgpr0382 ; CHECK-NEXT: {{ $}}383 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0384 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF385 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)386 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF387 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s448) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)388 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s224) = G_TRUNC [[MV1]](s448)389 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s224)390 %0:_(s32) = COPY $vgpr0391 %1:_(s224) = G_ANYEXT %0392 S_ENDPGM 0, implicit %1393...394 395---396name: test_anyext_s32_to_s256397body: |398 bb.0:399 liveins: $vgpr0400 401 ; CHECK-LABEL: name: test_anyext_s32_to_s256402 ; CHECK: liveins: $vgpr0403 ; CHECK-NEXT: {{ $}}404 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0405 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF406 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)407 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF408 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)409 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s256)410 %0:_(s32) = COPY $vgpr0411 %1:_(s256) = G_ANYEXT %0412 S_ENDPGM 0, implicit %1413...414 415---416name: test_anyext_s32_to_s512417body: |418 bb.0:419 liveins: $vgpr0420 421 ; CHECK-LABEL: name: test_anyext_s32_to_s512422 ; CHECK: liveins: $vgpr0423 ; CHECK-NEXT: {{ $}}424 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0425 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF426 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)427 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF428 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s512) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)429 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s512)430 %0:_(s32) = COPY $vgpr0431 %1:_(s512) = G_ANYEXT %0432 S_ENDPGM 0, implicit %1433...434 435---436name: test_anyext_s32_to_s992437body: |438 bb.0:439 liveins: $vgpr0440 441 ; CHECK-LABEL: name: test_anyext_s32_to_s992442 ; CHECK: liveins: $vgpr0443 ; CHECK-NEXT: {{ $}}444 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0445 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF446 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)447 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF448 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s448) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)449 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s224) = G_TRUNC [[MV1]](s448)450 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s224)451 %0:_(s32) = COPY $vgpr0452 %1:_(s224) = G_ANYEXT %0453 S_ENDPGM 0, implicit %1454...455 456---457name: test_anyext_s32_to_s1024458body: |459 bb.0:460 liveins: $vgpr0461 462 ; CHECK-LABEL: name: test_anyext_s32_to_s1024463 ; CHECK: liveins: $vgpr0464 ; CHECK-NEXT: {{ $}}465 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0466 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF467 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)468 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF469 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)470 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s1024)471 %0:_(s32) = COPY $vgpr0472 %1:_(s1024) = G_ANYEXT %0473 S_ENDPGM 0, implicit %1474...475 476---477name: test_anyext_s64_to_s128478body: |479 bb.0:480 liveins: $vgpr0_vgpr1481 482 ; CHECK-LABEL: name: test_anyext_s64_to_s128483 ; CHECK: liveins: $vgpr0_vgpr1484 ; CHECK-NEXT: {{ $}}485 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1486 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF487 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64)488 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s128)489 %0:_(s64) = COPY $vgpr0_vgpr1490 %1:_(s128) = G_ANYEXT %0491 S_ENDPGM 0, implicit %1492...493 494---495name: test_anyext_s64_to_s192496body: |497 bb.0:498 liveins: $vgpr0_vgpr1499 500 ; CHECK-LABEL: name: test_anyext_s64_to_s192501 ; CHECK: liveins: $vgpr0_vgpr1502 ; CHECK-NEXT: {{ $}}503 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1504 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF505 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64)506 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s192)507 %0:_(s64) = COPY $vgpr0_vgpr1508 %1:_(s192) = G_ANYEXT %0509 S_ENDPGM 0, implicit %1510...511 512---513name: test_anyext_s64_to_s256514body: |515 bb.0:516 liveins: $vgpr0_vgpr1517 518 ; CHECK-LABEL: name: test_anyext_s64_to_s256519 ; CHECK: liveins: $vgpr0_vgpr1520 ; CHECK-NEXT: {{ $}}521 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1522 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF523 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)524 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s256)525 %0:_(s64) = COPY $vgpr0_vgpr1526 %1:_(s256) = G_ANYEXT %0527 S_ENDPGM 0, implicit %1528...529 530---531name: test_anyext_s64_to_s512532body: |533 bb.0:534 liveins: $vgpr0_vgpr1535 536 ; CHECK-LABEL: name: test_anyext_s64_to_s512537 ; CHECK: liveins: $vgpr0_vgpr1538 ; CHECK-NEXT: {{ $}}539 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1540 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF541 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s512) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)542 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s512)543 %0:_(s64) = COPY $vgpr0_vgpr1544 %1:_(s512) = G_ANYEXT %0545 S_ENDPGM 0, implicit %1546...547 548---549name: test_anyext_s64_to_s1024550body: |551 bb.0:552 liveins: $vgpr0_vgpr1553 554 ; CHECK-LABEL: name: test_anyext_s64_to_s1024555 ; CHECK: liveins: $vgpr0_vgpr1556 ; CHECK-NEXT: {{ $}}557 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1558 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF559 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)560 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s1024)561 %0:_(s64) = COPY $vgpr0_vgpr1562 %1:_(s1024) = G_ANYEXT %0563 S_ENDPGM 0, implicit %1564...565 566---567name: test_anyext_s96_to_s128568body: |569 bb.0:570 liveins: $vgpr0_vgpr1_vgpr2571 572 ; CHECK-LABEL: name: test_anyext_s96_to_s128573 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2574 ; CHECK-NEXT: {{ $}}575 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2576 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s96)577 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF578 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)579 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[DEF]](s32)580 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[MV1]](s64)581 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV2]](s128)582 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2583 %1:_(s128) = G_ANYEXT %0584 S_ENDPGM 0, implicit %1585...586 587---588name: test_anyext_s128_to_s256589body: |590 bb.0:591 liveins: $vgpr0_vgpr1_vgpr2_vgpr3592 593 ; CHECK-LABEL: name: test_anyext_s128_to_s256594 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3595 ; CHECK-NEXT: {{ $}}596 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3597 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s128)598 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF599 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[UV]](s64), [[UV1]](s64), [[DEF]](s64), [[DEF]](s64)600 ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s256)601 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3602 %1:_(s256) = G_ANYEXT %0603 S_ENDPGM 0, implicit %1604...605 606---607name: test_anyext_s32_to_s88608body: |609 bb.0:610 liveins: $vgpr0611 612 ; CHECK-LABEL: name: test_anyext_s32_to_s88613 ; CHECK: liveins: $vgpr0614 ; CHECK-NEXT: {{ $}}615 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0616 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8617 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)618 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16619 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)620 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24621 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)622 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF623 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)624 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s16) = G_CONSTANT i16 255625 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C3]]626 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)627 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C3]]628 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 8629 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C4]](s16)630 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]631 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)632 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C3]]633 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR2]](s32)634 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[TRUNC3]], [[C4]](s16)635 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]]636 ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)637 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC4]], [[C3]]638 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C4]](s16)639 ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s16) = G_OR [[AND3]], [[SHL2]]640 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s16) = COPY [[OR2]](s16)641 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)642 ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)643 ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C1]](s32)644 ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL3]]645 ; CHECK-NEXT: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16)646 ; CHECK-NEXT: [[ZEXT3:%[0-9]+]]:_(s32) = G_ZEXT [[COPY1]](s16)647 ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[ZEXT3]], [[C1]](s32)648 ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL4]]649 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[OR3]](s32), [[OR4]](s32)650 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF651 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s704) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)652 ; CHECK-NEXT: [[TRUNC5:%[0-9]+]]:_(s88) = G_TRUNC [[MV1]](s704)653 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC5]](s88)654 %0:_(s32) = COPY $vgpr0655 %1:_(s88) = G_ANYEXT %0656 S_ENDPGM 0, implicit %1657...658 659# The instruction count blows up for this and takes too long to660# generate checks. This fails on a G_MERGE_VALUES to s4160661#662# ---663# name: test_anyext_s32_to_s65664# body: |665# bb.0:666# liveins: $vgpr0667 668# %0:_(s32) = COPY $vgpr0669# %1:_(s65) = G_ANYEXT %0670# S_ENDPGM 0, implicit %1671# ...672 673---674name: test_anyext_s2_to_s112675body: |676 bb.0:677 liveins: $vgpr0678 679 ; CHECK-LABEL: name: test_anyext_s2_to_s112680 ; CHECK: liveins: $vgpr0681 ; CHECK-NEXT: {{ $}}682 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0683 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16684 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)685 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535686 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]687 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)688 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]689 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0690 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C]](s32)691 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL1]]692 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)693 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF694 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s448) = G_MERGE_VALUES [[MV]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)695 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s112) = G_TRUNC [[MV1]](s448)696 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s112)697 %0:_(s32) = COPY $vgpr0698 %1:_(s2) = G_TRUNC %0699 %2:_(s112) = G_ANYEXT %1700 S_ENDPGM 0, implicit %2701...702 703---704name: test_anyext_s112_to_s128705body: |706 bb.0:707 liveins: $vgpr0_vgpr1_vgpr2_vgpr3708 ; CHECK-LABEL: name: test_anyext_s112_to_s128709 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3710 ; CHECK-NEXT: {{ $}}711 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3712 ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s128)713 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3714 %1:_(s112) = G_TRUNC %0715 %2:_(s128) = G_ANYEXT %1716 S_ENDPGM 0, implicit %2717...718