brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.2 KiB · cb652db Raw
679 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs --stress-regalloc=2 -start-before=greedy -stop-after=virtregrewriter -o - %s | FileCheck -check-prefix=GCN %s3 4---5name:            test_remat_s_mov_b326tracksRegLiveness: true7body:             |8  bb.0:9    ; GCN-LABEL: name: test_remat_s_mov_b3210    ; GCN: renamable $sgpr0 = S_MOV_B32 111    ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 212    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr013    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr114    ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 315    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr016    ; GCN-NEXT: S_ENDPGM 017    %0:sreg_32 = S_MOV_B32 118    %1:sreg_32 = S_MOV_B32 219    %2:sreg_32 = S_MOV_B32 320    S_NOP 0, implicit %021    S_NOP 0, implicit %122    S_NOP 0, implicit %223    S_ENDPGM 024...25---26name:            test_no_remat_s_mov_b32_impuse_exec27tracksRegLiveness: true28machineFunctionInfo:29  stackPtrOffsetReg:  $sgpr3230body:             |31  bb.0:32    ; GCN-LABEL: name: test_no_remat_s_mov_b32_impuse_exec33    ; GCN: $exec = IMPLICIT_DEF34    ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 1, implicit $exec35    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.1, addrspace 5)36    ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 2, implicit $exec37    ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 3, implicit $exec38    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.0, addrspace 5)39    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.1, addrspace 5)40    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr041    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr142    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.0, addrspace 5)43    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr044    ; GCN-NEXT: S_ENDPGM 045    $exec = IMPLICIT_DEF46    %0:sreg_32 = S_MOV_B32 1, implicit $exec47    %1:sreg_32 = S_MOV_B32 2, implicit $exec48    %2:sreg_32 = S_MOV_B32 3, implicit $exec49    S_NOP 0, implicit %050    S_NOP 0, implicit %151    S_NOP 0, implicit %252    S_ENDPGM 053...54# The liverange of %0 covers a point of rematerialization, source value is55# available.56---57name:            test_remat_s_mov_b32_vreg_src_long_lr58tracksRegLiveness: true59machineFunctionInfo:60  stackPtrOffsetReg:  $sgpr3261body:             |62  bb.0:63    ; GCN-LABEL: name: test_remat_s_mov_b32_vreg_src_long_lr64    ; GCN: renamable $sgpr0 = IMPLICIT_DEF65    ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 renamable $sgpr066    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr167    ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 renamable $sgpr068    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr169    ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 renamable $sgpr070    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr171    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr072    ; GCN-NEXT: S_ENDPGM 073    %0:sreg_32 = IMPLICIT_DEF74    %1:sreg_32 = S_MOV_B32 %0:sreg_3275    %2:sreg_32 = S_MOV_B32 %0:sreg_3276    %3:sreg_32 = S_MOV_B32 %0:sreg_3277    S_NOP 0, implicit %178    S_NOP 0, implicit %279    S_NOP 0, implicit %380    S_NOP 0, implicit %081    S_ENDPGM 082...83# The liverange of %0 does not cover a point of rematerialization, source value is84# unavailable and we do not want to artificially extend the liverange.85---86name:            test_no_remat_s_mov_b32_vreg_src_short_lr87tracksRegLiveness: true88machineFunctionInfo:89  stackPtrOffsetReg:  $sgpr3290body:             |91  bb.0:92    ; GCN-LABEL: name: test_no_remat_s_mov_b32_vreg_src_short_lr93    ; GCN: renamable $sgpr0 = IMPLICIT_DEF94    ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 killed renamable $sgpr095    ; GCN-NEXT: renamable $sgpr0 = IMPLICIT_DEF96    ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 killed renamable $sgpr097    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.1, addrspace 5)98    ; GCN-NEXT: renamable $sgpr0 = IMPLICIT_DEF99    ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 killed renamable $sgpr0100    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.0, addrspace 5)101    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1102    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.1, addrspace 5)103    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0104    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.0, addrspace 5)105    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0106    ; GCN-NEXT: S_ENDPGM 0107    %0:sreg_32 = IMPLICIT_DEF108    %1:sreg_32 = S_MOV_B32 %0:sreg_32109    %2:sreg_32 = S_MOV_B32 %0:sreg_32110    %3:sreg_32 = S_MOV_B32 %0:sreg_32111    S_NOP 0, implicit %1112    S_NOP 0, implicit %2113    S_NOP 0, implicit %3114    S_ENDPGM 0115...116---117name:            test_remat_s_mov_b64118tracksRegLiveness: true119body:             |120  bb.0:121    ; GCN-LABEL: name: test_remat_s_mov_b64122    ; GCN: renamable $sgpr0_sgpr1 = S_MOV_B64 1123    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_MOV_B64 2124    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1125    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3126    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_MOV_B64 3127    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1128    ; GCN-NEXT: S_ENDPGM 0129    %0:sgpr_64 = S_MOV_B64 1130    %1:sgpr_64 = S_MOV_B64 2131    %2:sgpr_64 = S_MOV_B64 3132    S_NOP 0, implicit %0133    S_NOP 0, implicit %1134    S_NOP 0, implicit %2135    S_ENDPGM 0136...137---138name:            test_remat_s_brev_b32139tracksRegLiveness: true140body:             |141  bb.0:142    ; GCN-LABEL: name: test_remat_s_brev_b32143    ; GCN: renamable $sgpr0 = S_BREV_B32 1144    ; GCN-NEXT: renamable $sgpr1 = S_BREV_B32 2145    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0146    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1147    ; GCN-NEXT: renamable $sgpr0 = S_BREV_B32 3148    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0149    ; GCN-NEXT: S_ENDPGM 0150    %0:sreg_32 = S_BREV_B32 1151    %1:sreg_32 = S_BREV_B32 2152    %2:sreg_32 = S_BREV_B32 3153    S_NOP 0, implicit %0154    S_NOP 0, implicit %1155    S_NOP 0, implicit %2156    S_ENDPGM 0157...158---159name:            test_remat_s_brev_b64160tracksRegLiveness: true161body:             |162  bb.0:163    ; GCN-LABEL: name: test_remat_s_brev_b64164    ; GCN: renamable $sgpr0_sgpr1 = S_BREV_B64 1165    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_BREV_B64 2166    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1167    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3168    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_BREV_B64 3169    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1170    ; GCN-NEXT: S_ENDPGM 0171    %0:sgpr_64 = S_BREV_B64 1172    %1:sgpr_64 = S_BREV_B64 2173    %2:sgpr_64 = S_BREV_B64 3174    S_NOP 0, implicit %0175    S_NOP 0, implicit %1176    S_NOP 0, implicit %2177    S_ENDPGM 0178...179---180name:            test_remat_s_ff0_i32_b32181tracksRegLiveness: true182body:             |183  bb.0:184    ; GCN-LABEL: name: test_remat_s_ff0_i32_b32185    ; GCN: renamable $sgpr0 = S_FF0_I32_B32 1186    ; GCN-NEXT: renamable $sgpr1 = S_FF0_I32_B32 2187    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0188    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1189    ; GCN-NEXT: renamable $sgpr0 = S_FF0_I32_B32 3190    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0191    ; GCN-NEXT: S_ENDPGM 0192    %0:sreg_32 = S_FF0_I32_B32 1193    %1:sreg_32 = S_FF0_I32_B32 2194    %2:sreg_32 = S_FF0_I32_B32 3195    S_NOP 0, implicit %0196    S_NOP 0, implicit %1197    S_NOP 0, implicit %2198    S_ENDPGM 0199...200---201name:            test_remat_s_ff1_i32_b32202tracksRegLiveness: true203body:             |204  bb.0:205    ; GCN-LABEL: name: test_remat_s_ff1_i32_b32206    ; GCN: renamable $sgpr0 = S_FF1_I32_B32 1207    ; GCN-NEXT: renamable $sgpr1 = S_FF1_I32_B32 2208    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0209    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1210    ; GCN-NEXT: renamable $sgpr0 = S_FF1_I32_B32 3211    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0212    ; GCN-NEXT: S_ENDPGM 0213    %0:sreg_32 = S_FF1_I32_B32 1214    %1:sreg_32 = S_FF1_I32_B32 2215    %2:sreg_32 = S_FF1_I32_B32 3216    S_NOP 0, implicit %0217    S_NOP 0, implicit %1218    S_NOP 0, implicit %2219    S_ENDPGM 0220...221---222name:            test_remat_s_ff0_i32_b64223tracksRegLiveness: true224body:             |225  bb.0:226    ; GCN-LABEL: name: test_remat_s_ff0_i32_b64227    ; GCN: renamable $sgpr0 = S_FF0_I32_B64 1228    ; GCN-NEXT: renamable $sgpr1 = S_FF0_I32_B64 2229    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0230    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1231    ; GCN-NEXT: renamable $sgpr0 = S_FF0_I32_B64 3232    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0233    ; GCN-NEXT: S_ENDPGM 0234    %0:sreg_32 = S_FF0_I32_B64 1235    %1:sreg_32 = S_FF0_I32_B64 2236    %2:sreg_32 = S_FF0_I32_B64 3237    S_NOP 0, implicit %0238    S_NOP 0, implicit %1239    S_NOP 0, implicit %2240    S_ENDPGM 0241...242---243name:            test_remat_s_ff1_i32_b64244tracksRegLiveness: true245body:             |246  bb.0:247    ; GCN-LABEL: name: test_remat_s_ff1_i32_b64248    ; GCN: renamable $sgpr0 = S_FF1_I32_B64 1249    ; GCN-NEXT: renamable $sgpr1 = S_FF1_I32_B64 2250    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0251    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1252    ; GCN-NEXT: renamable $sgpr0 = S_FF1_I32_B64 3253    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0254    ; GCN-NEXT: S_ENDPGM 0255    %0:sreg_32 = S_FF1_I32_B64 1256    %1:sreg_32 = S_FF1_I32_B64 2257    %2:sreg_32 = S_FF1_I32_B64 3258    S_NOP 0, implicit %0259    S_NOP 0, implicit %1260    S_NOP 0, implicit %2261    S_ENDPGM 0262...263---264name:            test_remat_s_flbit_i32_b32265tracksRegLiveness: true266body:             |267  bb.0:268    ; GCN-LABEL: name: test_remat_s_flbit_i32_b32269    ; GCN: renamable $sgpr0 = S_FLBIT_I32_B32 1270    ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32_B32 2271    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0272    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1273    ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32_B32 3274    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0275    ; GCN-NEXT: S_ENDPGM 0276    %0:sreg_32 = S_FLBIT_I32_B32 1277    %1:sreg_32 = S_FLBIT_I32_B32 2278    %2:sreg_32 = S_FLBIT_I32_B32 3279    S_NOP 0, implicit %0280    S_NOP 0, implicit %1281    S_NOP 0, implicit %2282    S_ENDPGM 0283...284---285name:            test_remat_s_flbit_i32_b64286tracksRegLiveness: true287body:             |288  bb.0:289    ; GCN-LABEL: name: test_remat_s_flbit_i32_b64290    ; GCN: renamable $sgpr0 = S_FLBIT_I32_B64 1291    ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32_B64 2292    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0293    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1294    ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32_B64 3295    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0296    ; GCN-NEXT: S_ENDPGM 0297    %0:sreg_32 = S_FLBIT_I32_B64 1298    %1:sreg_32 = S_FLBIT_I32_B64 2299    %2:sreg_32 = S_FLBIT_I32_B64 3300    S_NOP 0, implicit %0301    S_NOP 0, implicit %1302    S_NOP 0, implicit %2303    S_ENDPGM 0304...305---306name:            test_remat_s_flbit_i32307tracksRegLiveness: true308body:             |309  bb.0:310    ; GCN-LABEL: name: test_remat_s_flbit_i32311    ; GCN: renamable $sgpr0 = S_FLBIT_I32 1312    ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32 2313    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0314    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1315    ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32 3316    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0317    ; GCN-NEXT: S_ENDPGM 0318    %0:sreg_32 = S_FLBIT_I32 1319    %1:sreg_32 = S_FLBIT_I32 2320    %2:sreg_32 = S_FLBIT_I32 3321    S_NOP 0, implicit %0322    S_NOP 0, implicit %1323    S_NOP 0, implicit %2324    S_ENDPGM 0325...326---327name:            test_remat_s_flbit_i32_i64328tracksRegLiveness: true329body:             |330  bb.0:331    ; GCN-LABEL: name: test_remat_s_flbit_i32_i64332    ; GCN: renamable $sgpr0 = S_FLBIT_I32_I64 1333    ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32_I64 2334    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0335    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1336    ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32_I64 3337    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0338    ; GCN-NEXT: S_ENDPGM 0339    %0:sreg_32 = S_FLBIT_I32_I64 1340    %1:sreg_32 = S_FLBIT_I32_I64 2341    %2:sreg_32 = S_FLBIT_I32_I64 3342    S_NOP 0, implicit %0343    S_NOP 0, implicit %1344    S_NOP 0, implicit %2345    S_ENDPGM 0346...347---348name:            test_remat_s_sext_i32_i8349tracksRegLiveness: true350body:             |351  bb.0:352    ; GCN-LABEL: name: test_remat_s_sext_i32_i8353    ; GCN: renamable $sgpr0 = S_SEXT_I32_I8 1354    ; GCN-NEXT: renamable $sgpr1 = S_SEXT_I32_I8 2355    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0356    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1357    ; GCN-NEXT: renamable $sgpr0 = S_SEXT_I32_I8 3358    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0359    ; GCN-NEXT: S_ENDPGM 0360    %0:sreg_32 = S_SEXT_I32_I8 1361    %1:sreg_32 = S_SEXT_I32_I8 2362    %2:sreg_32 = S_SEXT_I32_I8 3363    S_NOP 0, implicit %0364    S_NOP 0, implicit %1365    S_NOP 0, implicit %2366    S_ENDPGM 0367...368---369name:            test_remat_s_sext_i32_i16370tracksRegLiveness: true371body:             |372  bb.0:373    ; GCN-LABEL: name: test_remat_s_sext_i32_i16374    ; GCN: renamable $sgpr0 = S_SEXT_I32_I16 1375    ; GCN-NEXT: renamable $sgpr1 = S_SEXT_I32_I16 2376    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0377    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1378    ; GCN-NEXT: renamable $sgpr0 = S_SEXT_I32_I16 3379    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0380    ; GCN-NEXT: S_ENDPGM 0381    %0:sreg_32 = S_SEXT_I32_I16 1382    %1:sreg_32 = S_SEXT_I32_I16 2383    %2:sreg_32 = S_SEXT_I32_I16 3384    S_NOP 0, implicit %0385    S_NOP 0, implicit %1386    S_NOP 0, implicit %2387    S_ENDPGM 0388...389---390name:            test_remat_s_bitreplicate_b64_b32391tracksRegLiveness: true392body:             |393  bb.0:394    ; GCN-LABEL: name: test_remat_s_bitreplicate_b64_b32395    ; GCN: renamable $sgpr0_sgpr1 = S_BITREPLICATE_B64_B32 1396    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_BITREPLICATE_B64_B32 2397    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1398    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3399    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_BITREPLICATE_B64_B32 3400    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1401    ; GCN-NEXT: S_ENDPGM 0402    %0:sgpr_64 = S_BITREPLICATE_B64_B32 1403    %1:sgpr_64 = S_BITREPLICATE_B64_B32 2404    %2:sgpr_64 = S_BITREPLICATE_B64_B32 3405    S_NOP 0, implicit %0406    S_NOP 0, implicit %1407    S_NOP 0, implicit %2408    S_ENDPGM 0409...410---411name:            test_remat_s_bfm_b32412tracksRegLiveness: true413body:             |414  bb.0:415    ; GCN-LABEL: name: test_remat_s_bfm_b32416    ; GCN: renamable $sgpr0 = S_BFM_B32 1, 1417    ; GCN-NEXT: renamable $sgpr1 = S_BFM_B32 2, 2418    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0419    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1420    ; GCN-NEXT: renamable $sgpr0 = S_BFM_B32 3, 3421    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0422    ; GCN-NEXT: S_ENDPGM 0423    %0:sreg_32 = S_BFM_B32 1, 1424    %1:sreg_32 = S_BFM_B32 2, 2425    %2:sreg_32 = S_BFM_B32 3, 3426    S_NOP 0, implicit %0427    S_NOP 0, implicit %1428    S_NOP 0, implicit %2429    S_ENDPGM 0430...431---432name:            test_remat_s_bfm_b64433tracksRegLiveness: true434body:             |435  bb.0:436    ; GCN-LABEL: name: test_remat_s_bfm_b64437    ; GCN: renamable $sgpr0_sgpr1 = S_BFM_B64 1, 1438    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_BFM_B64 2, 2439    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1440    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3441    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_BFM_B64 3, 3442    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1443    ; GCN-NEXT: S_ENDPGM 0444    %0:sgpr_64 = S_BFM_B64 1, 1445    %1:sgpr_64 = S_BFM_B64 2, 2446    %2:sgpr_64 = S_BFM_B64 3, 3447    S_NOP 0, implicit %0448    S_NOP 0, implicit %1449    S_NOP 0, implicit %2450    S_ENDPGM 0451...452---453name:            test_remat_s_mul_i32454tracksRegLiveness: true455body:             |456  bb.0:457    ; GCN-LABEL: name: test_remat_s_mul_i32458    ; GCN: renamable $sgpr0 = S_MUL_I32 1, 1459    ; GCN-NEXT: renamable $sgpr1 = S_MUL_I32 2, 2460    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0461    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1462    ; GCN-NEXT: renamable $sgpr0 = S_MUL_I32 3, 3463    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0464    ; GCN-NEXT: S_ENDPGM 0465    %0:sreg_32 = S_MUL_I32 1, 1466    %1:sreg_32 = S_MUL_I32 2, 2467    %2:sreg_32 = S_MUL_I32 3, 3468    S_NOP 0, implicit %0469    S_NOP 0, implicit %1470    S_NOP 0, implicit %2471    S_ENDPGM 0472...473---474name:            test_remat_s_mul_hi_i32475tracksRegLiveness: true476body:             |477  bb.0:478    ; GCN-LABEL: name: test_remat_s_mul_hi_i32479    ; GCN: renamable $sgpr0 = S_MUL_HI_I32 1, 1480    ; GCN-NEXT: renamable $sgpr1 = S_MUL_HI_I32 2, 2481    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0482    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1483    ; GCN-NEXT: renamable $sgpr0 = S_MUL_HI_I32 3, 3484    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0485    ; GCN-NEXT: S_ENDPGM 0486    %0:sreg_32 = S_MUL_HI_I32 1, 1487    %1:sreg_32 = S_MUL_HI_I32 2, 2488    %2:sreg_32 = S_MUL_HI_I32 3, 3489    S_NOP 0, implicit %0490    S_NOP 0, implicit %1491    S_NOP 0, implicit %2492    S_ENDPGM 0493...494---495name:            test_remat_s_mul_hi_u32496tracksRegLiveness: true497body:             |498  bb.0:499    ; GCN-LABEL: name: test_remat_s_mul_hi_u32500    ; GCN: renamable $sgpr0 = S_MUL_HI_U32 1, 1501    ; GCN-NEXT: renamable $sgpr1 = S_MUL_HI_U32 2, 2502    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0503    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1504    ; GCN-NEXT: renamable $sgpr0 = S_MUL_HI_U32 3, 3505    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0506    ; GCN-NEXT: S_ENDPGM 0507    %0:sreg_32 = S_MUL_HI_U32 1, 1508    %1:sreg_32 = S_MUL_HI_U32 2, 2509    %2:sreg_32 = S_MUL_HI_U32 3, 3510    S_NOP 0, implicit %0511    S_NOP 0, implicit %1512    S_NOP 0, implicit %2513    S_ENDPGM 0514...515---516name:            test_remat_s_pack_ll_b32_b16517tracksRegLiveness: true518body:             |519  bb.0:520    ; GCN-LABEL: name: test_remat_s_pack_ll_b32_b16521    ; GCN: renamable $sgpr0 = S_PACK_LL_B32_B16 1, 1522    ; GCN-NEXT: renamable $sgpr1 = S_PACK_LL_B32_B16 2, 2523    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0524    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1525    ; GCN-NEXT: renamable $sgpr0 = S_PACK_LL_B32_B16 3, 3526    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0527    ; GCN-NEXT: S_ENDPGM 0528    %0:sreg_32 = S_PACK_LL_B32_B16 1, 1529    %1:sreg_32 = S_PACK_LL_B32_B16 2, 2530    %2:sreg_32 = S_PACK_LL_B32_B16 3, 3531    S_NOP 0, implicit %0532    S_NOP 0, implicit %1533    S_NOP 0, implicit %2534    S_ENDPGM 0535...536---537name:            test_remat_s_pack_lh_b32_b16538tracksRegLiveness: true539body:             |540  bb.0:541    ; GCN-LABEL: name: test_remat_s_pack_lh_b32_b16542    ; GCN: renamable $sgpr0 = S_PACK_LH_B32_B16 1, 1543    ; GCN-NEXT: renamable $sgpr1 = S_PACK_LH_B32_B16 2, 2544    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0545    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1546    ; GCN-NEXT: renamable $sgpr0 = S_PACK_LH_B32_B16 3, 3547    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0548    ; GCN-NEXT: S_ENDPGM 0549    %0:sreg_32 = S_PACK_LH_B32_B16 1, 1550    %1:sreg_32 = S_PACK_LH_B32_B16 2, 2551    %2:sreg_32 = S_PACK_LH_B32_B16 3, 3552    S_NOP 0, implicit %0553    S_NOP 0, implicit %1554    S_NOP 0, implicit %2555    S_ENDPGM 0556...557---558name:            test_remat_s_pack_hh_b32_b16559tracksRegLiveness: true560body:             |561  bb.0:562    ; GCN-LABEL: name: test_remat_s_pack_hh_b32_b16563    ; GCN: renamable $sgpr0 = S_PACK_HH_B32_B16 1, 1564    ; GCN-NEXT: renamable $sgpr1 = S_PACK_HH_B32_B16 2, 2565    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0566    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1567    ; GCN-NEXT: renamable $sgpr0 = S_PACK_HH_B32_B16 3, 3568    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0569    ; GCN-NEXT: S_ENDPGM 0570    %0:sreg_32 = S_PACK_HH_B32_B16 1, 1571    %1:sreg_32 = S_PACK_HH_B32_B16 2, 2572    %2:sreg_32 = S_PACK_HH_B32_B16 3, 3573    S_NOP 0, implicit %0574    S_NOP 0, implicit %1575    S_NOP 0, implicit %2576    S_ENDPGM 0577...578 579---580name:            test_remat_s_getpc_b64581tracksRegLiveness: true582body:             |583  bb.0:584 585    ; GCN-LABEL: name: test_remat_s_getpc_b64586    ; GCN: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo587    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_GETPC_B64_pseudo588    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1589    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3590    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo591    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1592    ; GCN-NEXT: S_ENDPGM 0593    %0:sgpr_64 = S_GETPC_B64_pseudo594    %1:sgpr_64 = S_GETPC_B64_pseudo595    %2:sgpr_64 = S_GETPC_B64_pseudo596    S_NOP 0, implicit %0597    S_NOP 0, implicit %1598    S_NOP 0, implicit %2599    S_ENDPGM 0600...601 602---603name:            test_remat_s_getpc_b64_2604tracksRegLiveness: true605body:             |606  bb.0:607 608    ; GCN-LABEL: name: test_remat_s_getpc_b64_2609    ; GCN: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo610    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_GETPC_B64_pseudo611    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.3, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.3, addrspace 5)612    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.0, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.0, addrspace 5)613    ; GCN-NEXT: renamable $sgpr1 = COPY renamable $sgpr2614    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.1, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.1, addrspace 5)615    ; GCN-NEXT: renamable $sgpr1 = COPY killed renamable $sgpr3616    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.2, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.2, addrspace 5)617    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo618    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.5, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.5, addrspace 5)619    ; GCN-NEXT: renamable $sgpr0 = COPY killed renamable $sgpr1620    ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.4, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.4, addrspace 5)621    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.1, addrspace 5)622    ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.3, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.3, addrspace 5)623    ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr1, killed renamable $sgpr0, implicit-def $scc624    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.0, addrspace 5)625    ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.2, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.2, addrspace 5)626    ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc627    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.3, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.3, addrspace 5)628    ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.5, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.5, addrspace 5)629    ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc630    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.0, addrspace 5)631    ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.4, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.4, addrspace 5)632    ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc633    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.1, addrspace 5)634    ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.5, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.5, addrspace 5)635    ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc636    ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.2, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.2, addrspace 5)637    ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.4, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.4, addrspace 5)638    ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc639    ; GCN-NEXT: S_ENDPGM 0640    %0:sreg_64 = S_GETPC_B64_pseudo641    %1:sreg_64 = S_GETPC_B64_pseudo642    %2:sreg_64 = S_GETPC_B64_pseudo643    %4:sreg_32 = COPY %0.sub0:sreg_64644    %5:sreg_32 = COPY %0.sub1:sreg_64645    %6:sreg_32 = COPY %1.sub0:sreg_64646    %7:sreg_32 = COPY %1.sub1:sreg_64647    %8:sreg_32 = COPY %2.sub0:sreg_64648    %9:sreg_32 = COPY %2.sub1:sreg_64649    %10:sreg_32 = S_ADD_U32 %4:sreg_32, %6:sreg_32, implicit-def $scc650    %11:sreg_32 = S_ADDC_U32 %5:sreg_32, %7:sreg_32, implicit-def $scc, implicit $scc651    %12:sreg_32 = S_ADD_U32 %4:sreg_32, %8:sreg_32, implicit-def $scc652    %13:sreg_32 = S_ADDC_U32 %5:sreg_32, %9:sreg_32, implicit-def $scc, implicit $scc653    %14:sreg_32 = S_ADD_U32 %6:sreg_32, %8:sreg_32, implicit-def $scc654    %15:sreg_32 = S_ADDC_U32 %7:sreg_32, %9:sreg_32, implicit-def $scc, implicit $scc655    S_ENDPGM 0656...657 658---659name:            test_remat_s_mov_b64_imm_pseudo660tracksRegLiveness: true661body:             |662  bb.0:663    ; GCN-LABEL: name: test_remat_s_mov_b64_imm_pseudo664    ; GCN: renamable $sgpr0_sgpr1 = S_MOV_B64_IMM_PSEUDO 1665    ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_MOV_B64_IMM_PSEUDO 2666    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1667    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3668    ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_MOV_B64_IMM_PSEUDO 3669    ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1670    ; GCN-NEXT: S_ENDPGM 0671    %0:sgpr_64 = S_MOV_B64_IMM_PSEUDO 1672    %1:sgpr_64 = S_MOV_B64_IMM_PSEUDO 2673    %2:sgpr_64 = S_MOV_B64_IMM_PSEUDO 3674    S_NOP 0, implicit %0675    S_NOP 0, implicit %1676    S_NOP 0, implicit %2677    S_ENDPGM 0678...679