442 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=GCN3 4---5 6name: trunc_sgpr_s32_to_s17legalized: true8regBankSelected: true9 10body: |11 bb.0:12 liveins: $sgpr013 ; GCN-LABEL: name: trunc_sgpr_s32_to_s114 ; GCN: liveins: $sgpr015 ; GCN-NEXT: {{ $}}16 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr017 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]]18 %0:sgpr(s32) = COPY $sgpr019 %1:sgpr(s1) = G_TRUNC %020 S_ENDPGM 0, implicit %121...22---23 24name: trunc_sgpr_s32_to_s1625legalized: true26regBankSelected: true27 28body: |29 bb.0:30 liveins: $sgpr031 ; GCN-LABEL: name: trunc_sgpr_s32_to_s1632 ; GCN: liveins: $sgpr033 ; GCN-NEXT: {{ $}}34 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr035 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]]36 %0:sgpr(s32) = COPY $sgpr037 %1:sgpr(s16) = G_TRUNC %038 S_ENDPGM 0, implicit %139...40---41 42name: trunc_sgpr_s64_to_s3243legalized: true44regBankSelected: true45 46body: |47 bb.0:48 liveins: $sgpr0_sgpr149 ; GCN-LABEL: name: trunc_sgpr_s64_to_s3250 ; GCN: liveins: $sgpr0_sgpr151 ; GCN-NEXT: {{ $}}52 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr153 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub054 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]55 %0:sgpr(s64) = COPY $sgpr0_sgpr156 %1:sgpr(s32) = G_TRUNC %057 S_ENDPGM 0, implicit %158...59---60 61name: trunc_sgpr_s64_to_s1662legalized: true63regBankSelected: true64 65body: |66 bb.0:67 liveins: $sgpr0_sgpr168 ; GCN-LABEL: name: trunc_sgpr_s64_to_s1669 ; GCN: liveins: $sgpr0_sgpr170 ; GCN-NEXT: {{ $}}71 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr172 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub073 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]74 %0:sgpr(s64) = COPY $sgpr0_sgpr175 %1:sgpr(s16) = G_TRUNC %076 S_ENDPGM 0, implicit %177...78---79 80name: trunc_sgpr_s64_to_s181legalized: true82regBankSelected: true83 84body: |85 bb.0:86 liveins: $sgpr0_sgpr187 ; GCN-LABEL: name: trunc_sgpr_s64_to_s188 ; GCN: liveins: $sgpr0_sgpr189 ; GCN-NEXT: {{ $}}90 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr191 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub092 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]93 %0:sgpr(s64) = COPY $sgpr0_sgpr194 %1:sgpr(s1) = G_TRUNC %095 S_ENDPGM 0, implicit %196...97---98 99name: trunc_sgpr_s96_to_s16100legalized: true101regBankSelected: true102 103body: |104 bb.0:105 liveins: $sgpr0_sgpr1_sgpr2106 ; GCN-LABEL: name: trunc_sgpr_s96_to_s16107 ; GCN: liveins: $sgpr0_sgpr1_sgpr2108 ; GCN-NEXT: {{ $}}109 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr2110 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0111 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]112 %0:sgpr(s96) = COPY $sgpr0_sgpr1_sgpr2113 %1:sgpr(s16) = G_TRUNC %0114 S_ENDPGM 0, implicit %1115...116---117 118name: trunc_sgpr_s96_to_s64119legalized: true120regBankSelected: true121 122body: |123 bb.0:124 liveins: $sgpr0_sgpr1_sgpr2125 ; GCN-LABEL: name: trunc_sgpr_s96_to_s64126 ; GCN: liveins: $sgpr0_sgpr1_sgpr2127 ; GCN-NEXT: {{ $}}128 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr2129 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY [[COPY]].sub0_sub1130 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]131 %0:sgpr(s96) = COPY $sgpr0_sgpr1_sgpr2132 %1:sgpr(s64) = G_TRUNC %0133 S_ENDPGM 0, implicit %1134...135---136 137name: trunc_sgpr_s128_to_s16138legalized: true139regBankSelected: true140 141body: |142 bb.0:143 liveins: $sgpr0_sgpr1_sgpr2_sgpr3144 ; GCN-LABEL: name: trunc_sgpr_s128_to_s16145 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3146 ; GCN-NEXT: {{ $}}147 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3148 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0149 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]150 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3151 %1:sgpr(s16) = G_TRUNC %0152 S_ENDPGM 0, implicit %1153...154---155 156name: trunc_sgpr_s128_to_s96157legalized: true158regBankSelected: true159 160body: |161 bb.0:162 liveins: $sgpr0_sgpr1_sgpr2_sgpr3163 ; GCN-LABEL: name: trunc_sgpr_s128_to_s96164 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3165 ; GCN-NEXT: {{ $}}166 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3167 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_96 = COPY [[COPY]].sub0_sub1_sub2168 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]169 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3170 %1:sgpr(s96) = G_TRUNC %0171 S_ENDPGM 0, implicit %1172...173---174 175name: trunc_sgpr_s256_to_s128176legalized: true177regBankSelected: true178 179body: |180 bb.0:181 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7182 ; GCN-LABEL: name: trunc_sgpr_s256_to_s128183 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7184 ; GCN-NEXT: {{ $}}185 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7186 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY [[COPY]].sub0_sub1_sub2_sub3187 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]188 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7189 %1:sgpr(s128) = G_TRUNC %0190 S_ENDPGM 0, implicit %1191...192---193 194name: trunc_sgpr_s512_to_s256195legalized: true196regBankSelected: true197 198body: |199 bb.0:200 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15201 ; GCN-LABEL: name: trunc_sgpr_s512_to_s256202 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15203 ; GCN-NEXT: {{ $}}204 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15205 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY [[COPY]].sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7206 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]207 %0:sgpr(s512) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15208 %1:sgpr(s256) = G_TRUNC %0209 S_ENDPGM 0, implicit %1210...211---212 213name: trunc_vgpr_s32_to_s1214legalized: true215regBankSelected: true216 217body: |218 bb.0:219 liveins: $vgpr0220 ; GCN-LABEL: name: trunc_vgpr_s32_to_s1221 ; GCN: liveins: $vgpr0222 ; GCN-NEXT: {{ $}}223 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0224 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]]225 %0:vgpr(s32) = COPY $vgpr0226 %1:vgpr(s1) = G_TRUNC %0227 S_ENDPGM 0, implicit %1228...229---230 231name: trunc_vgpr_s32_to_s16232legalized: true233regBankSelected: true234 235body: |236 bb.0:237 liveins: $vgpr0238 ; GCN-LABEL: name: trunc_vgpr_s32_to_s16239 ; GCN: liveins: $vgpr0240 ; GCN-NEXT: {{ $}}241 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0242 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]]243 %0:vgpr(s32) = COPY $vgpr0244 %1:vgpr(s16) = G_TRUNC %0245 S_ENDPGM 0, implicit %1246...247---248 249name: trunc_vgpr_s64_to_s32250legalized: true251regBankSelected: true252 253body: |254 bb.0:255 liveins: $vgpr0_vgpr1256 ; GCN-LABEL: name: trunc_vgpr_s64_to_s32257 ; GCN: liveins: $vgpr0_vgpr1258 ; GCN-NEXT: {{ $}}259 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1260 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0261 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]262 %0:vgpr(s64) = COPY $vgpr0_vgpr1263 %1:vgpr(s32) = G_TRUNC %0264 S_ENDPGM 0, implicit %1265...266---267 268name: trunc_vgpr_s64_to_s16269legalized: true270regBankSelected: true271 272body: |273 bb.0:274 liveins: $vgpr0_vgpr1275 ; GCN-LABEL: name: trunc_vgpr_s64_to_s16276 ; GCN: liveins: $vgpr0_vgpr1277 ; GCN-NEXT: {{ $}}278 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1279 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0280 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]281 %0:vgpr(s64) = COPY $vgpr0_vgpr1282 %1:vgpr(s16) = G_TRUNC %0283 S_ENDPGM 0, implicit %1284...285---286 287name: trunc_vgpr_s64_to_s1288legalized: true289regBankSelected: true290 291body: |292 bb.0:293 liveins: $vgpr0_vgpr1294 ; GCN-LABEL: name: trunc_vgpr_s64_to_s1295 ; GCN: liveins: $vgpr0_vgpr1296 ; GCN-NEXT: {{ $}}297 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1298 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0299 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]300 %0:vgpr(s64) = COPY $vgpr0_vgpr1301 %1:vgpr(s1) = G_TRUNC %0302 S_ENDPGM 0, implicit %1303...304---305 306name: trunc_vgpr_s96_to_s16307legalized: true308regBankSelected: true309 310body: |311 bb.0:312 liveins: $vgpr0_vgpr1_vgpr2313 ; GCN-LABEL: name: trunc_vgpr_s96_to_s16314 ; GCN: liveins: $vgpr0_vgpr1_vgpr2315 ; GCN-NEXT: {{ $}}316 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2317 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0318 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]319 %0:vgpr(s96) = COPY $vgpr0_vgpr1_vgpr2320 %1:vgpr(s16) = G_TRUNC %0321 S_ENDPGM 0, implicit %1322...323---324 325name: trunc_vgpr_s96_to_s64326legalized: true327regBankSelected: true328 329body: |330 bb.0:331 liveins: $vgpr0_vgpr1_vgpr2332 ; GCN-LABEL: name: trunc_vgpr_s96_to_s64333 ; GCN: liveins: $vgpr0_vgpr1_vgpr2334 ; GCN-NEXT: {{ $}}335 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2336 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[COPY]].sub0_sub1337 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]338 %0:vgpr(s96) = COPY $vgpr0_vgpr1_vgpr2339 %1:vgpr(s64) = G_TRUNC %0340 S_ENDPGM 0, implicit %1341...342---343 344name: trunc_vgpr_s128_to_s16345legalized: true346regBankSelected: true347 348body: |349 bb.0:350 liveins: $vgpr0_vgpr1_vgpr2_vgpr3351 ; GCN-LABEL: name: trunc_vgpr_s128_to_s16352 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3353 ; GCN-NEXT: {{ $}}354 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3355 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0356 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]357 %0:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3358 %1:vgpr(s16) = G_TRUNC %0359 S_ENDPGM 0, implicit %1360...361---362 363name: trunc_vgpr_s128_to_s96364legalized: true365regBankSelected: true366 367body: |368 bb.0:369 liveins: $vgpr0_vgpr1_vgpr2_vgpr3370 ; GCN-LABEL: name: trunc_vgpr_s128_to_s96371 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3372 ; GCN-NEXT: {{ $}}373 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3374 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY [[COPY]].sub0_sub1_sub2375 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]376 %0:vgpr(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3377 %1:vgpr(s96) = G_TRUNC %0378 S_ENDPGM 0, implicit %1379...380---381 382name: trunc_vgpr_s256_to_s128383legalized: true384regBankSelected: true385 386body: |387 bb.0:388 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7389 ; GCN-LABEL: name: trunc_vgpr_s256_to_s128390 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7391 ; GCN-NEXT: {{ $}}392 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7393 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY [[COPY]].sub0_sub1_sub2_sub3394 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]395 %0:vgpr(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7396 %1:vgpr(s128) = G_TRUNC %0397 S_ENDPGM 0, implicit %1398...399---400 401name: trunc_vgpr_s512_to_s256402legalized: true403regBankSelected: true404 405body: |406 bb.0:407 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15408 ; GCN-LABEL: name: trunc_vgpr_s512_to_s256409 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15410 ; GCN-NEXT: {{ $}}411 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15412 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_256 = COPY [[COPY]].sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7413 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]]414 %0:vgpr(s512) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15415 %1:vgpr(s256) = G_TRUNC %0416 S_ENDPGM 0, implicit %1417...418 419---420 421name: trunc_sgpr_s32_to_s1_use422legalized: true423regBankSelected: true424 425body: |426 bb.0:427 liveins: $sgpr0, $sgpr1428 ; GCN-LABEL: name: trunc_sgpr_s32_to_s1_use429 ; GCN: liveins: $sgpr0, $sgpr1430 ; GCN-NEXT: {{ $}}431 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0432 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1433 ; GCN-NEXT: $scc = COPY [[COPY]]434 ; GCN-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY]], [[COPY1]], implicit $scc435 ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]436 %0:sgpr(s32) = COPY $sgpr0437 %1:sgpr(s32) = COPY $sgpr1438 %2:sgpr(s1) = G_TRUNC %0439 %3:sgpr(s32) = G_SELECT %2, %0, %1440 S_ENDPGM 0, implicit %3441...442