1# RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx900 -verify-machineinstrs -start-before=machine-scheduler -stop-after=virtregrewriter,1 -o - %s | FileCheck -check-prefix=GCN %s 2 3# Check that %3 was not rematerialized before the last store since its operand %1 4# is killed by that store. 5 6# GCN-LABEL: name: global_sextload_v32i32_to_v32i64 7# GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5) 8# GCN: GLOBAL_STORE_DWORDX4_SADDR killed renamable $vgpr27, killed renamable $vgpr19_vgpr20_vgpr21_vgpr22, killed renamable $sgpr0_sgpr1, 16, 0, implicit $exec, implicit killed renamable $vgpr0 9 10--- 11name: global_sextload_v32i32_to_v32i64 12tracksRegLiveness: true 13machineFunctionInfo: 14 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' 15 stackPtrOffsetReg: '$sgpr32' 16body: | 17 bb.0: 18 liveins: $sgpr4_sgpr5 19 20 %0:sgpr_64(p4) = COPY $sgpr4_sgpr5 21 %1:vgpr_32 = COPY $m0 22 %2:sgpr_128 = S_LOAD_DWORDX4_IMM %0(p4), 0, 0 23 %3:vgpr_32 = V_MOV_B32_e32 %1, implicit $exec 24 %4:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 112, 0, implicit $exec :: (load (s128)) 25 %5:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 96, 0, implicit $exec, implicit %1 :: (load (s128)) 26 %6:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 80, 0, implicit $exec :: (load (s128)) 27 %7:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 64, 0, implicit $exec :: (load (s128)) 28 %8:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 48, 0, implicit $exec :: (load (s128)) 29 %9:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 32, 0, implicit $exec :: (load (s128)) 30 %10:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 16, 0, implicit $exec :: (load (s128)) 31 %11:vreg_128 = GLOBAL_LOAD_DWORDX4_SADDR %2.sub2_sub3, %3, 0, 0, implicit $exec :: (load (s128)) 32 undef %12.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %11.sub3, implicit $exec 33 %12.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %11.sub2, implicit $exec 34 undef %13.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %11.sub1, implicit $exec 35 %13.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %11.sub0, implicit $exec 36 undef %14.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %10.sub3, implicit $exec 37 %14.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %10.sub2, implicit $exec 38 undef %15.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %10.sub1, implicit $exec 39 %15.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %10.sub0, implicit $exec 40 undef %16.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %9.sub3, implicit $exec 41 %16.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %9.sub2, implicit $exec 42 undef %17.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %9.sub1, implicit $exec 43 %17.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %9.sub0, implicit $exec 44 undef %18.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %8.sub3, implicit $exec 45 %18.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %8.sub2, implicit $exec 46 undef %19.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %8.sub1, implicit $exec 47 %19.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %8.sub0, implicit $exec 48 undef %20.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %7.sub3, implicit $exec 49 %20.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %7.sub2, implicit $exec 50 undef %21.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %7.sub1, implicit $exec 51 %21.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %7.sub0, implicit $exec 52 undef %22.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %6.sub3, implicit $exec 53 %22.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %6.sub2, implicit $exec 54 undef %23.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %6.sub1, implicit $exec 55 %23.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %6.sub0, implicit $exec 56 undef %24.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %5.sub3, implicit $exec 57 %24.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %5.sub2, implicit $exec 58 undef %25.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %5.sub1, implicit $exec 59 %25.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %5.sub0, implicit $exec 60 undef %26.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %4.sub3, implicit $exec 61 %26.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %4.sub2, implicit $exec 62 undef %27.sub3:vreg_128 = V_ASHRREV_I32_e32 31, %4.sub1, implicit $exec 63 %27.sub1:vreg_128 = V_ASHRREV_I32_e32 31, %4.sub0, implicit $exec 64 %27.sub0:vreg_128 = COPY %4.sub0 65 %27.sub2:vreg_128 = COPY %4.sub1 66 GLOBAL_STORE_DWORDX4_SADDR %3, %27, %2.sub0_sub1, 224, 0, implicit $exec 67 %26.sub0:vreg_128 = COPY %4.sub2 68 %26.sub2:vreg_128 = COPY %4.sub3 69 GLOBAL_STORE_DWORDX4_SADDR %3, %26, %2.sub0_sub1, 240, 0, implicit $exec 70 %25.sub0:vreg_128 = COPY %5.sub0 71 %25.sub2:vreg_128 = COPY %5.sub1 72 GLOBAL_STORE_DWORDX4_SADDR %3, %25, %2.sub0_sub1, 192, 0, implicit $exec 73 %24.sub0:vreg_128 = COPY %5.sub2 74 %24.sub2:vreg_128 = COPY %5.sub3 75 GLOBAL_STORE_DWORDX4_SADDR %3, %24, %2.sub0_sub1, 208, 0, implicit $exec 76 %23.sub0:vreg_128 = COPY %6.sub0 77 %23.sub2:vreg_128 = COPY %6.sub1 78 GLOBAL_STORE_DWORDX4_SADDR %3, %23, %2.sub0_sub1, 160, 0, implicit $exec 79 %22.sub0:vreg_128 = COPY %6.sub2 80 %22.sub2:vreg_128 = COPY %6.sub3 81 GLOBAL_STORE_DWORDX4_SADDR %3, %22, %2.sub0_sub1, 176, 0, implicit $exec 82 %21.sub0:vreg_128 = COPY %7.sub0 83 %21.sub2:vreg_128 = COPY %7.sub1 84 GLOBAL_STORE_DWORDX4_SADDR %3, %21, %2.sub0_sub1, 128, 0, implicit $exec 85 %20.sub0:vreg_128 = COPY %7.sub2 86 %20.sub2:vreg_128 = COPY %7.sub3 87 GLOBAL_STORE_DWORDX4_SADDR %3, %20, %2.sub0_sub1, 144, 0, implicit $exec 88 %19.sub0:vreg_128 = COPY %8.sub0 89 %19.sub2:vreg_128 = COPY %8.sub1 90 GLOBAL_STORE_DWORDX4_SADDR %3, %19, %2.sub0_sub1, 96, 0, implicit $exec 91 %18.sub0:vreg_128 = COPY %8.sub2 92 %18.sub2:vreg_128 = COPY %8.sub3 93 GLOBAL_STORE_DWORDX4_SADDR %3, %18, %2.sub0_sub1, 112, 0, implicit $exec 94 %17.sub0:vreg_128 = COPY %9.sub0 95 %17.sub2:vreg_128 = COPY %9.sub1 96 GLOBAL_STORE_DWORDX4_SADDR %3, %17, %2.sub0_sub1, 64, 0, implicit $exec 97 %16.sub0:vreg_128 = COPY %9.sub2 98 %16.sub2:vreg_128 = COPY %9.sub3 99 GLOBAL_STORE_DWORDX4_SADDR %3, %16, %2.sub0_sub1, 80, 0, implicit $exec 100 %15.sub0:vreg_128 = COPY %10.sub0 101 %15.sub2:vreg_128 = COPY %10.sub1 102 GLOBAL_STORE_DWORDX4_SADDR %3, %15, %2.sub0_sub1, 32, 0, implicit $exec 103 %14.sub0:vreg_128 = COPY %10.sub2 104 %14.sub2:vreg_128 = COPY %10.sub3 105 GLOBAL_STORE_DWORDX4_SADDR %3, %14, %2.sub0_sub1, 48, 0, implicit $exec 106 %13.sub0:vreg_128 = COPY %11.sub0 107 %13.sub2:vreg_128 = COPY %11.sub1 108 GLOBAL_STORE_DWORDX4_SADDR %3, %13, %2.sub0_sub1, 0, 0, implicit $exec 109 %12.sub0:vreg_128 = COPY %11.sub2 110 %12.sub2:vreg_128 = COPY %11.sub3 111 GLOBAL_STORE_DWORDX4_SADDR %3, %12, %2.sub0_sub1, 16, 0, implicit $exec, implicit killed %1 112 S_ENDPGM 0 113 114... 115