80 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-regalloc -stress-regalloc=3 -start-before=greedy,1 -stop-before=virtregrewriter,1 -o - %s | FileCheck %s3---4name: split_instruction_subranges5alignment: 16tracksRegLiveness: true7frameInfo:8 maxAlignment: 19 hasCalls: true10machineFunctionInfo:11 maxKernArgAlign: 112 isEntryFunction: true13 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'14 stackPtrOffsetReg: '$sgpr32'15 argumentInfo:16 privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }17 privateSegmentWaveByteOffset: { reg: '$sgpr17' }18 occupancy: 819body: |20 bb.0:21 ; CHECK-LABEL: name: split_instruction_subranges22 ; CHECK: [[GLOBAL_LOAD_DWORDX2_SADDR:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %1:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)23 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %3:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)24 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)25 ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR]].sub126 ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR1]].sub027 ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub128 ; CHECK-NEXT: S_ENDPGM 029 %1:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %4:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)30 %2:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)31 %3:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %6:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)32 S_NOP 0, implicit %1.sub133 S_NOP 0, implicit %2.sub034 S_NOP 0, implicit %3.sub135 S_ENDPGM 036 37...38 39---40name: split_instruction_subranges_use_is_subreg_def41alignment: 142tracksRegLiveness: true43frameInfo:44 maxAlignment: 145 hasCalls: true46machineFunctionInfo:47 maxKernArgAlign: 148 isEntryFunction: true49 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'50 stackPtrOffsetReg: '$sgpr32'51 argumentInfo:52 privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }53 privateSegmentWaveByteOffset: { reg: '$sgpr17' }54 occupancy: 855body: |56 bb.0:57 ; CHECK-LABEL: name: split_instruction_subranges_use_is_subreg_def58 ; CHECK: [[GLOBAL_LOAD_DWORDX2_SADDR:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %1:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)59 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %3:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)60 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)61 ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR]].sub062 ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR1]].sub163 ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub064 ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR]].sub165 ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR1]].sub066 ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub167 ; CHECK-NEXT: S_ENDPGM 068 %1:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %4:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)69 %2:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)70 %3:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %6:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)71 S_NOP 0, implicit-def %1.sub072 S_NOP 0, implicit-def %2.sub173 S_NOP 0, implicit-def %3.sub074 S_NOP 0, implicit %1.sub175 S_NOP 0, implicit %2.sub076 S_NOP 0, implicit %3.sub177 S_ENDPGM 078 79...80