1491 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -global-isel -stop-after=irtranslator -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefix=GCN %s3; This is a copy of sibling-call.ll, but stops after the IRTranslator.4 5define fastcc i32 @i32_fastcc_i32_i32(i32 %arg0, i32 %arg1) #1 {6 ; GCN-LABEL: name: i32_fastcc_i32_i327 ; GCN: bb.1 (%ir-block.0):8 ; GCN-NEXT: liveins: $vgpr0, $vgpr19 ; GCN-NEXT: {{ $}}10 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr011 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr112 ; GCN-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]13 ; GCN-NEXT: $vgpr0 = COPY [[ADD]](s32)14 ; GCN-NEXT: SI_RETURN implicit $vgpr015 %add0 = add i32 %arg0, %arg116 ret i32 %add017}18 19define fastcc i32 @i32_fastcc_i32_i32_stack_object(i32 %arg0, i32 %arg1) #1 {20 ; GCN-LABEL: name: i32_fastcc_i32_i32_stack_object21 ; GCN: bb.1 (%ir-block.0):22 ; GCN-NEXT: liveins: $vgpr0, $vgpr123 ; GCN-NEXT: {{ $}}24 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr025 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr126 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 927 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca28 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2029 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw nusw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C1]](s32)30 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (volatile store (s32) into %ir.gep, addrspace 5)31 ; GCN-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]32 ; GCN-NEXT: $vgpr0 = COPY [[ADD]](s32)33 ; GCN-NEXT: SI_RETURN implicit $vgpr034 %alloca = alloca [16 x i32], align 4, addrspace(5)35 %gep = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 536 store volatile i32 9, ptr addrspace(5) %gep37 %add0 = add i32 %arg0, %arg138 ret i32 %add039}40 41define hidden fastcc i32 @sibling_call_i32_fastcc_i32_i32(i32 %a, i32 %b, i32 %c) #1 {42 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i3243 ; GCN: bb.1.entry:44 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr245 ; GCN-NEXT: {{ $}}46 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr047 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr148 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr249 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i3250 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)51 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)52 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr353 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY3]](<4 x s32>)54 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr355entry:56 %ret = tail call fastcc i32 @i32_fastcc_i32_i32(i32 %a, i32 %b)57 ret i32 %ret58}59 60define fastcc i32 @sibling_call_i32_fastcc_i32_i32_stack_object(i32 %a, i32 %b, i32 %c) #1 {61 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i32_stack_object62 ; GCN: bb.1.entry:63 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr264 ; GCN-NEXT: {{ $}}65 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr066 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr167 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr268 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 969 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca70 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2071 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw nusw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C1]](s32)72 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (volatile store (s32) into %ir.gep, addrspace 5)73 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i3274 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)75 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)76 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr377 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY3]](<4 x s32>)78 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr379entry:80 %alloca = alloca [16 x i32], align 4, addrspace(5)81 %gep = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 582 store volatile i32 9, ptr addrspace(5) %gep83 %ret = tail call fastcc i32 @i32_fastcc_i32_i32(i32 %a, i32 %b)84 ret i32 %ret85}86 87define fastcc i32 @sibling_call_i32_fastcc_i32_i32_callee_stack_object(i32 %a, i32 %b, i32 %c) #1 {88 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i32_callee_stack_object89 ; GCN: bb.1.entry:90 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr291 ; GCN-NEXT: {{ $}}92 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr093 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr194 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr295 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 996 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca97 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2098 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw nusw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C1]](s32)99 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (volatile store (s32) into %ir.gep, addrspace 5)100 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32_stack_object101 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)102 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)103 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3104 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY3]](<4 x s32>)105 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32_stack_object, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3106entry:107 %alloca = alloca [16 x i32], align 4, addrspace(5)108 %gep = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 5109 store volatile i32 9, ptr addrspace(5) %gep110 %ret = tail call fastcc i32 @i32_fastcc_i32_i32_stack_object(i32 %a, i32 %b)111 ret i32 %ret112}113 114define fastcc void @sibling_call_i32_fastcc_i32_i32_unused_result(i32 %a, i32 %b, i32 %c) #1 {115 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i32_unused_result116 ; GCN: bb.1.entry:117 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2118 ; GCN-NEXT: {{ $}}119 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0120 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1121 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2122 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32123 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)124 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)125 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3126 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY3]](<4 x s32>)127 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3128entry:129 %ret = tail call fastcc i32 @i32_fastcc_i32_i32(i32 %a, i32 %b)130 ret void131}132 133; It doesn't make sense to do a tail from a kernel134define amdgpu_kernel void @kernel_call_i32_fastcc_i32_i32_unused_result(i32 %a, i32 %b, i32 %c) #1 {135 ; GCN-LABEL: name: kernel_call_i32_fastcc_i32_i32_unused_result136 ; GCN: bb.1.entry:137 ; GCN-NEXT: liveins: $sgpr4_sgpr5138 ; GCN-NEXT: {{ $}}139 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr4_sgpr5140 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0141 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1142 ; GCN-NEXT: [[INT:%[0-9]+]]:_(p4) = G_INTRINSIC intrinsic(@llvm.amdgcn.kernarg.segment.ptr)143 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[INT]](p4) :: (dereferenceable invariant load (<2 x s32>) from %ir.a.kernarg.offset1, align 16, addrspace 4)144 ; GCN-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[LOAD]](<2 x s32>), [[C]](s32)145 ; GCN-NEXT: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[LOAD]](<2 x s32>), [[C1]](s32)146 ; GCN-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc147 ; GCN-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32148 ; GCN-NEXT: $vgpr0 = COPY [[EVEC]](s32)149 ; GCN-NEXT: $vgpr1 = COPY [[EVEC1]](s32)150 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg151 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY1]](<4 x s32>)152 ; GCN-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @i32_fastcc_i32_i32, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit-def $vgpr0153 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr0154 ; GCN-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc155 ; GCN-NEXT: S_ENDPGM 0156entry:157 %ret = tail call fastcc i32 @i32_fastcc_i32_i32(i32 %a, i32 %b)158 ret void159}160 161define hidden fastcc i32 @i32_fastcc_i32_byval_i32(i32 %arg0, ptr addrspace(5) byval(i32) align 4 %arg1) #1 {162 ; GCN-LABEL: name: i32_fastcc_i32_byval_i32163 ; GCN: bb.1 (%ir-block.0):164 ; GCN-NEXT: liveins: $vgpr0165 ; GCN-NEXT: {{ $}}166 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0167 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0168 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)169 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY1]](p5) :: (dereferenceable load (s32) from %ir.arg1, addrspace 5)170 ; GCN-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[LOAD]]171 ; GCN-NEXT: $vgpr0 = COPY [[ADD]](s32)172 ; GCN-NEXT: SI_RETURN implicit $vgpr0173 %arg1.load = load i32, ptr addrspace(5) %arg1, align 4174 %add0 = add i32 %arg0, %arg1.load175 ret i32 %add0176}177 178; Tail call disallowed with byval in parent.179define fastcc i32 @sibling_call_i32_fastcc_i32_byval_i32_byval_parent(i32 %a, ptr addrspace(5) byval(i32) %b.byval, i32 %c) #1 {180 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_byval_i32_byval_parent181 ; GCN: bb.1.entry:182 ; GCN-NEXT: liveins: $vgpr0, $vgpr1183 ; GCN-NEXT: {{ $}}184 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0185 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0186 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5)187 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr1188 ; GCN-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc189 ; GCN-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_byval_i32190 ; GCN-NEXT: [[AMDGPU_WAVE_ADDRESS:%[0-9]+]]:_(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32191 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0192 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C]](s32)193 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4194 ; GCN-NEXT: G_MEMCPY [[PTR_ADD]](p5), [[COPY1]](p5), [[C1]](s32), 0 :: (dereferenceable store (s32) into stack, addrspace 5), (dereferenceable load (s32) from %ir.b.byval, addrspace 5)195 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)196 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3197 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY3]](<4 x s32>)198 ; GCN-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @i32_fastcc_i32_byval_i32, csr_amdgpu, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit-def $vgpr0199 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr0200 ; GCN-NEXT: ADJCALLSTACKDOWN 0, 4, implicit-def $scc201 ; GCN-NEXT: $vgpr0 = COPY [[COPY4]](s32)202 ; GCN-NEXT: SI_RETURN implicit $vgpr0203entry:204 %ret = tail call fastcc i32 @i32_fastcc_i32_byval_i32(i32 %a, ptr addrspace(5) byval(i32) %b.byval)205 ret i32 %ret206}207 208; Tail call disallowed with byval in parent, not callee. The stack209; usage of incoming arguments must be <= the outgoing stack210; arguments.211define fastcc i32 @sibling_call_i32_fastcc_i32_byval_i32(i32 %a, [32 x i32] %large) #1 {212 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_byval_i32213 ; GCN: bb.1.entry:214 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30215 ; GCN-NEXT: {{ $}}216 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0217 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1218 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2219 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3220 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4221 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5222 ; GCN-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6223 ; GCN-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7224 ; GCN-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8225 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9226 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10227 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11228 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12229 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13230 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14231 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15232 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16233 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17234 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18235 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19236 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20237 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21238 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22239 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23240 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24241 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25242 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26243 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27244 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28245 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29246 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30247 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2248 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5)249 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1250 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)251 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16252 ; GCN-NEXT: [[INTTOPTR:%[0-9]+]]:_(p5) = G_INTTOPTR [[C]](s32)253 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_byval_i32254 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0255 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4256 ; GCN-NEXT: G_MEMCPY [[FRAME_INDEX2]](p5), [[INTTOPTR]](p5), [[C1]](s32), 0 :: (dereferenceable store (s32) into %fixed-stack.0, align 16, addrspace 5), (dereferenceable load (s32) from `ptr addrspace(5) inttoptr (i32 16 to ptr addrspace(5))`, align 16, addrspace 5)257 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)258 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3259 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY31]](<4 x s32>)260 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_byval_i32, 0, csr_amdgpu, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3261entry:262 %ret = tail call fastcc i32 @i32_fastcc_i32_byval_i32(i32 %a, ptr addrspace(5) byval(i32) inttoptr (i32 16 to ptr addrspace(5)))263 ret i32 %ret264}265 266define fastcc i32 @i32_fastcc_i32_i32_a32i32(i32 %arg0, i32 %arg1, [32 x i32] %large) #1 {267 ; GCN-LABEL: name: i32_fastcc_i32_i32_a32i32268 ; GCN: bb.1 (%ir-block.0):269 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30270 ; GCN-NEXT: {{ $}}271 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0272 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1273 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2274 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3275 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4276 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5277 ; GCN-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6278 ; GCN-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7279 ; GCN-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8280 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9281 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10282 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11283 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12284 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13285 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14286 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15287 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16288 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17289 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18290 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19291 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20292 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21293 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22294 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23295 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24296 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25297 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26298 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27299 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28300 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29301 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30302 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2303 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5)304 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1305 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5)306 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0307 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.0, align 8, addrspace 5)308 ; GCN-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]309 ; GCN-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[ADD]], [[LOAD1]]310 ; GCN-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ADD1]], [[LOAD2]]311 ; GCN-NEXT: $vgpr0 = COPY [[ADD2]](s32)312 ; GCN-NEXT: SI_RETURN implicit $vgpr0313 %val_firststack = extractvalue [32 x i32] %large, 30314 %val_laststack = extractvalue [32 x i32] %large, 31315 %add0 = add i32 %arg0, %arg1316 %add1 = add i32 %add0, %val_firststack317 %add2 = add i32 %add1, %val_laststack318 ret i32 %add2319}320 321define fastcc i32 @sibling_call_i32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] %c) #1 {322 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i32_a32i32323 ; GCN: bb.1.entry:324 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30325 ; GCN-NEXT: {{ $}}326 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0327 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1328 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2329 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3330 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4331 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5332 ; GCN-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6333 ; GCN-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7334 ; GCN-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8335 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9336 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10337 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11338 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12339 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13340 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14341 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15342 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16343 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17344 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18345 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19346 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20347 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21348 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22349 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23350 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24351 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25352 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26353 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27354 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28355 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29356 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30357 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5358 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.5, align 16, addrspace 5)359 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4360 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5)361 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3362 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.3, align 8, addrspace 5)363 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32_a32i32364 ; GCN-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2365 ; GCN-NEXT: G_STORE [[LOAD]](s32), [[FRAME_INDEX3]](p5) :: (store (s32) into %fixed-stack.2, align 16, addrspace 5)366 ; GCN-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1367 ; GCN-NEXT: G_STORE [[LOAD1]](s32), [[FRAME_INDEX4]](p5) :: (store (s32) into %fixed-stack.1, addrspace 5)368 ; GCN-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0369 ; GCN-NEXT: G_STORE [[LOAD2]](s32), [[FRAME_INDEX5]](p5) :: (store (s32) into %fixed-stack.0, align 8, addrspace 5)370 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)371 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)372 ; GCN-NEXT: $vgpr2 = COPY [[COPY2]](s32)373 ; GCN-NEXT: $vgpr3 = COPY [[COPY3]](s32)374 ; GCN-NEXT: $vgpr4 = COPY [[COPY4]](s32)375 ; GCN-NEXT: $vgpr5 = COPY [[COPY5]](s32)376 ; GCN-NEXT: $vgpr6 = COPY [[COPY6]](s32)377 ; GCN-NEXT: $vgpr7 = COPY [[COPY7]](s32)378 ; GCN-NEXT: $vgpr8 = COPY [[COPY8]](s32)379 ; GCN-NEXT: $vgpr9 = COPY [[COPY9]](s32)380 ; GCN-NEXT: $vgpr10 = COPY [[COPY10]](s32)381 ; GCN-NEXT: $vgpr11 = COPY [[COPY11]](s32)382 ; GCN-NEXT: $vgpr12 = COPY [[COPY12]](s32)383 ; GCN-NEXT: $vgpr13 = COPY [[COPY13]](s32)384 ; GCN-NEXT: $vgpr14 = COPY [[COPY14]](s32)385 ; GCN-NEXT: $vgpr15 = COPY [[COPY15]](s32)386 ; GCN-NEXT: $vgpr16 = COPY [[COPY16]](s32)387 ; GCN-NEXT: $vgpr17 = COPY [[COPY17]](s32)388 ; GCN-NEXT: $vgpr18 = COPY [[COPY18]](s32)389 ; GCN-NEXT: $vgpr19 = COPY [[COPY19]](s32)390 ; GCN-NEXT: $vgpr20 = COPY [[COPY20]](s32)391 ; GCN-NEXT: $vgpr21 = COPY [[COPY21]](s32)392 ; GCN-NEXT: $vgpr22 = COPY [[COPY22]](s32)393 ; GCN-NEXT: $vgpr23 = COPY [[COPY23]](s32)394 ; GCN-NEXT: $vgpr24 = COPY [[COPY24]](s32)395 ; GCN-NEXT: $vgpr25 = COPY [[COPY25]](s32)396 ; GCN-NEXT: $vgpr26 = COPY [[COPY26]](s32)397 ; GCN-NEXT: $vgpr27 = COPY [[COPY27]](s32)398 ; GCN-NEXT: $vgpr28 = COPY [[COPY28]](s32)399 ; GCN-NEXT: $vgpr29 = COPY [[COPY29]](s32)400 ; GCN-NEXT: $vgpr30 = COPY [[COPY30]](s32)401 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3402 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY31]](<4 x s32>)403 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32_a32i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $sgpr0_sgpr1_sgpr2_sgpr3404entry:405 %ret = tail call fastcc i32 @i32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] %c)406 ret i32 %ret407}408 409define fastcc i32 @sibling_call_i32_fastcc_i32_i32_a32i32_stack_object(i32 %a, i32 %b, [32 x i32] %c) #1 {410 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i32_a32i32_stack_object411 ; GCN: bb.1.entry:412 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30413 ; GCN-NEXT: {{ $}}414 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0415 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1416 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2417 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3418 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4419 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5420 ; GCN-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6421 ; GCN-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7422 ; GCN-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8423 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9424 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10425 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11426 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12427 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13428 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14429 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15430 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16431 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17432 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18433 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19434 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20435 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21436 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22437 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23438 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24439 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25440 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26441 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27442 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28443 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29444 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30445 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5446 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.5, align 16, addrspace 5)447 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4448 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5)449 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3450 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.3, align 8, addrspace 5)451 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 9452 ; GCN-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca453 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 20454 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw nusw inbounds G_PTR_ADD [[FRAME_INDEX3]], [[C1]](s32)455 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (volatile store (s32) into %ir.gep, addrspace 5)456 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32_a32i32457 ; GCN-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2458 ; GCN-NEXT: G_STORE [[LOAD]](s32), [[FRAME_INDEX4]](p5) :: (store (s32) into %fixed-stack.2, align 16, addrspace 5)459 ; GCN-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1460 ; GCN-NEXT: G_STORE [[LOAD1]](s32), [[FRAME_INDEX5]](p5) :: (store (s32) into %fixed-stack.1, addrspace 5)461 ; GCN-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0462 ; GCN-NEXT: G_STORE [[LOAD2]](s32), [[FRAME_INDEX6]](p5) :: (store (s32) into %fixed-stack.0, align 8, addrspace 5)463 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)464 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)465 ; GCN-NEXT: $vgpr2 = COPY [[COPY2]](s32)466 ; GCN-NEXT: $vgpr3 = COPY [[COPY3]](s32)467 ; GCN-NEXT: $vgpr4 = COPY [[COPY4]](s32)468 ; GCN-NEXT: $vgpr5 = COPY [[COPY5]](s32)469 ; GCN-NEXT: $vgpr6 = COPY [[COPY6]](s32)470 ; GCN-NEXT: $vgpr7 = COPY [[COPY7]](s32)471 ; GCN-NEXT: $vgpr8 = COPY [[COPY8]](s32)472 ; GCN-NEXT: $vgpr9 = COPY [[COPY9]](s32)473 ; GCN-NEXT: $vgpr10 = COPY [[COPY10]](s32)474 ; GCN-NEXT: $vgpr11 = COPY [[COPY11]](s32)475 ; GCN-NEXT: $vgpr12 = COPY [[COPY12]](s32)476 ; GCN-NEXT: $vgpr13 = COPY [[COPY13]](s32)477 ; GCN-NEXT: $vgpr14 = COPY [[COPY14]](s32)478 ; GCN-NEXT: $vgpr15 = COPY [[COPY15]](s32)479 ; GCN-NEXT: $vgpr16 = COPY [[COPY16]](s32)480 ; GCN-NEXT: $vgpr17 = COPY [[COPY17]](s32)481 ; GCN-NEXT: $vgpr18 = COPY [[COPY18]](s32)482 ; GCN-NEXT: $vgpr19 = COPY [[COPY19]](s32)483 ; GCN-NEXT: $vgpr20 = COPY [[COPY20]](s32)484 ; GCN-NEXT: $vgpr21 = COPY [[COPY21]](s32)485 ; GCN-NEXT: $vgpr22 = COPY [[COPY22]](s32)486 ; GCN-NEXT: $vgpr23 = COPY [[COPY23]](s32)487 ; GCN-NEXT: $vgpr24 = COPY [[COPY24]](s32)488 ; GCN-NEXT: $vgpr25 = COPY [[COPY25]](s32)489 ; GCN-NEXT: $vgpr26 = COPY [[COPY26]](s32)490 ; GCN-NEXT: $vgpr27 = COPY [[COPY27]](s32)491 ; GCN-NEXT: $vgpr28 = COPY [[COPY28]](s32)492 ; GCN-NEXT: $vgpr29 = COPY [[COPY29]](s32)493 ; GCN-NEXT: $vgpr30 = COPY [[COPY30]](s32)494 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3495 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY31]](<4 x s32>)496 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32_a32i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $sgpr0_sgpr1_sgpr2_sgpr3497entry:498 %alloca = alloca [16 x i32], align 4, addrspace(5)499 %gep = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 5500 store volatile i32 9, ptr addrspace(5) %gep501 %ret = tail call fastcc i32 @i32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] %c)502 ret i32 %ret503}504 505; If the callee requires more stack argument space than the caller,506; don't do a tail call.507; TODO: Do we really need this restriction?508define fastcc i32 @no_sibling_call_callee_more_stack_space(i32 %a, i32 %b) #1 {509 ; GCN-LABEL: name: no_sibling_call_callee_more_stack_space510 ; GCN: bb.1.entry:511 ; GCN-NEXT: liveins: $vgpr0, $vgpr1512 ; GCN-NEXT: {{ $}}513 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0514 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1515 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0516 ; GCN-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc517 ; GCN-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32_a32i32518 ; GCN-NEXT: [[AMDGPU_WAVE_ADDRESS:%[0-9]+]]:_(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32519 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0520 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C1]](s32)521 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (store (s32) into stack, align 16, addrspace 5)522 ; GCN-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4523 ; GCN-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C2]](s32)524 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD1]](p5) :: (store (s32) into stack + 4, addrspace 5)525 ; GCN-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 8526 ; GCN-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C3]](s32)527 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD2]](p5) :: (store (s32) into stack + 8, align 8, addrspace 5)528 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)529 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)530 ; GCN-NEXT: $vgpr2 = COPY [[C]](s32)531 ; GCN-NEXT: $vgpr3 = COPY [[C]](s32)532 ; GCN-NEXT: $vgpr4 = COPY [[C]](s32)533 ; GCN-NEXT: $vgpr5 = COPY [[C]](s32)534 ; GCN-NEXT: $vgpr6 = COPY [[C]](s32)535 ; GCN-NEXT: $vgpr7 = COPY [[C]](s32)536 ; GCN-NEXT: $vgpr8 = COPY [[C]](s32)537 ; GCN-NEXT: $vgpr9 = COPY [[C]](s32)538 ; GCN-NEXT: $vgpr10 = COPY [[C]](s32)539 ; GCN-NEXT: $vgpr11 = COPY [[C]](s32)540 ; GCN-NEXT: $vgpr12 = COPY [[C]](s32)541 ; GCN-NEXT: $vgpr13 = COPY [[C]](s32)542 ; GCN-NEXT: $vgpr14 = COPY [[C]](s32)543 ; GCN-NEXT: $vgpr15 = COPY [[C]](s32)544 ; GCN-NEXT: $vgpr16 = COPY [[C]](s32)545 ; GCN-NEXT: $vgpr17 = COPY [[C]](s32)546 ; GCN-NEXT: $vgpr18 = COPY [[C]](s32)547 ; GCN-NEXT: $vgpr19 = COPY [[C]](s32)548 ; GCN-NEXT: $vgpr20 = COPY [[C]](s32)549 ; GCN-NEXT: $vgpr21 = COPY [[C]](s32)550 ; GCN-NEXT: $vgpr22 = COPY [[C]](s32)551 ; GCN-NEXT: $vgpr23 = COPY [[C]](s32)552 ; GCN-NEXT: $vgpr24 = COPY [[C]](s32)553 ; GCN-NEXT: $vgpr25 = COPY [[C]](s32)554 ; GCN-NEXT: $vgpr26 = COPY [[C]](s32)555 ; GCN-NEXT: $vgpr27 = COPY [[C]](s32)556 ; GCN-NEXT: $vgpr28 = COPY [[C]](s32)557 ; GCN-NEXT: $vgpr29 = COPY [[C]](s32)558 ; GCN-NEXT: $vgpr30 = COPY [[C]](s32)559 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3560 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY2]](<4 x s32>)561 ; GCN-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @i32_fastcc_i32_i32_a32i32, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit-def $vgpr0562 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr0563 ; GCN-NEXT: ADJCALLSTACKDOWN 0, 12, implicit-def $scc564 ; GCN-NEXT: $vgpr0 = COPY [[COPY3]](s32)565 ; GCN-NEXT: SI_RETURN implicit $vgpr0566entry:567 %ret = tail call fastcc i32 @i32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] zeroinitializer)568 ret i32 %ret569}570 571; Have another non-tail in the function572define fastcc i32 @sibling_call_i32_fastcc_i32_i32_other_call(i32 %a, i32 %b, i32 %c) #1 {573 ; GCN-LABEL: name: sibling_call_i32_fastcc_i32_i32_other_call574 ; GCN: bb.1.entry:575 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2576 ; GCN-NEXT: {{ $}}577 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0578 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1579 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2580 ; GCN-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc581 ; GCN-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32582 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)583 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)584 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3585 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY3]](<4 x s32>)586 ; GCN-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @i32_fastcc_i32_i32, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit-def $vgpr0587 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr0588 ; GCN-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc589 ; GCN-NEXT: [[GV1:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @sibling_call_i32_fastcc_i32_i32590 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)591 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)592 ; GCN-NEXT: $vgpr2 = COPY [[COPY4]](s32)593 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3594 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY5]](<4 x s32>)595 ; GCN-NEXT: SI_TCRETURN [[GV1]](p0), @sibling_call_i32_fastcc_i32_i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $sgpr0_sgpr1_sgpr2_sgpr3596entry:597 %other.call = tail call fastcc i32 @i32_fastcc_i32_i32(i32 %a, i32 %b)598 %ret = tail call fastcc i32 @sibling_call_i32_fastcc_i32_i32(i32 %a, i32 %b, i32 %other.call)599 ret i32 %ret600}601 602; Have stack object in caller and stack passed arguments. SP should be603; in same place at function exit.604define fastcc i32 @sibling_call_stack_objecti32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] %c) #1 {605 ; GCN-LABEL: name: sibling_call_stack_objecti32_fastcc_i32_i32_a32i32606 ; GCN: bb.1.entry:607 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30608 ; GCN-NEXT: {{ $}}609 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0610 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1611 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2612 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3613 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4614 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5615 ; GCN-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6616 ; GCN-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7617 ; GCN-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8618 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9619 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10620 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11621 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12622 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13623 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14624 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15625 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16626 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17627 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18628 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19629 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20630 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21631 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22632 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23633 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24634 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25635 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26636 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27637 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28638 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29639 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30640 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5641 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.5, align 16, addrspace 5)642 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4643 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5)644 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3645 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.3, align 8, addrspace 5)646 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 9647 ; GCN-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca648 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 20649 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw nusw inbounds G_PTR_ADD [[FRAME_INDEX3]], [[C1]](s32)650 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (volatile store (s32) into %ir.gep, addrspace 5)651 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32_a32i32652 ; GCN-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2653 ; GCN-NEXT: G_STORE [[LOAD]](s32), [[FRAME_INDEX4]](p5) :: (store (s32) into %fixed-stack.2, align 16, addrspace 5)654 ; GCN-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1655 ; GCN-NEXT: G_STORE [[LOAD1]](s32), [[FRAME_INDEX5]](p5) :: (store (s32) into %fixed-stack.1, addrspace 5)656 ; GCN-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0657 ; GCN-NEXT: G_STORE [[LOAD2]](s32), [[FRAME_INDEX6]](p5) :: (store (s32) into %fixed-stack.0, align 8, addrspace 5)658 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)659 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)660 ; GCN-NEXT: $vgpr2 = COPY [[COPY2]](s32)661 ; GCN-NEXT: $vgpr3 = COPY [[COPY3]](s32)662 ; GCN-NEXT: $vgpr4 = COPY [[COPY4]](s32)663 ; GCN-NEXT: $vgpr5 = COPY [[COPY5]](s32)664 ; GCN-NEXT: $vgpr6 = COPY [[COPY6]](s32)665 ; GCN-NEXT: $vgpr7 = COPY [[COPY7]](s32)666 ; GCN-NEXT: $vgpr8 = COPY [[COPY8]](s32)667 ; GCN-NEXT: $vgpr9 = COPY [[COPY9]](s32)668 ; GCN-NEXT: $vgpr10 = COPY [[COPY10]](s32)669 ; GCN-NEXT: $vgpr11 = COPY [[COPY11]](s32)670 ; GCN-NEXT: $vgpr12 = COPY [[COPY12]](s32)671 ; GCN-NEXT: $vgpr13 = COPY [[COPY13]](s32)672 ; GCN-NEXT: $vgpr14 = COPY [[COPY14]](s32)673 ; GCN-NEXT: $vgpr15 = COPY [[COPY15]](s32)674 ; GCN-NEXT: $vgpr16 = COPY [[COPY16]](s32)675 ; GCN-NEXT: $vgpr17 = COPY [[COPY17]](s32)676 ; GCN-NEXT: $vgpr18 = COPY [[COPY18]](s32)677 ; GCN-NEXT: $vgpr19 = COPY [[COPY19]](s32)678 ; GCN-NEXT: $vgpr20 = COPY [[COPY20]](s32)679 ; GCN-NEXT: $vgpr21 = COPY [[COPY21]](s32)680 ; GCN-NEXT: $vgpr22 = COPY [[COPY22]](s32)681 ; GCN-NEXT: $vgpr23 = COPY [[COPY23]](s32)682 ; GCN-NEXT: $vgpr24 = COPY [[COPY24]](s32)683 ; GCN-NEXT: $vgpr25 = COPY [[COPY25]](s32)684 ; GCN-NEXT: $vgpr26 = COPY [[COPY26]](s32)685 ; GCN-NEXT: $vgpr27 = COPY [[COPY27]](s32)686 ; GCN-NEXT: $vgpr28 = COPY [[COPY28]](s32)687 ; GCN-NEXT: $vgpr29 = COPY [[COPY29]](s32)688 ; GCN-NEXT: $vgpr30 = COPY [[COPY30]](s32)689 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3690 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY31]](<4 x s32>)691 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32_a32i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $sgpr0_sgpr1_sgpr2_sgpr3692entry:693 %alloca = alloca [16 x i32], align 4, addrspace(5)694 %gep = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 5695 store volatile i32 9, ptr addrspace(5) %gep696 %ret = tail call fastcc i32 @i32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] %c)697 ret i32 %ret698}699 700define fastcc i32 @sibling_call_stack_objecti32_fastcc_i32_i32_a32i32_larger_arg_area(i32 %a, i32 %b, [36 x i32] %c) #1 {701 ; GCN-LABEL: name: sibling_call_stack_objecti32_fastcc_i32_i32_a32i32_larger_arg_area702 ; GCN: bb.1.entry:703 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30704 ; GCN-NEXT: {{ $}}705 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0706 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1707 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2708 ; GCN-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3709 ; GCN-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4710 ; GCN-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5711 ; GCN-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6712 ; GCN-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7713 ; GCN-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8714 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9715 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10716 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11717 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12718 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13719 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14720 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15721 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16722 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17723 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18724 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19725 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20726 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21727 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22728 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23729 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24730 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25731 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26732 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27733 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28734 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29735 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30736 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9737 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.9, align 16, addrspace 5)738 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8739 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.8, addrspace 5)740 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7741 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.7, align 8, addrspace 5)742 ; GCN-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6743 ; GCN-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.6, addrspace 5)744 ; GCN-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5745 ; GCN-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.5, align 16, addrspace 5)746 ; GCN-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4747 ; GCN-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5)748 ; GCN-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3749 ; GCN-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.3, align 8, addrspace 5)750 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 9751 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0752 ; GCN-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca753 ; GCN-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 20754 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw nusw inbounds G_PTR_ADD [[FRAME_INDEX7]], [[C2]](s32)755 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (volatile store (s32) into %ir.gep, addrspace 5)756 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i32_fastcc_i32_i32_a32i32757 ; GCN-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2758 ; GCN-NEXT: G_STORE [[C1]](s32), [[FRAME_INDEX8]](p5) :: (store (s32) into %fixed-stack.2, align 16, addrspace 5)759 ; GCN-NEXT: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1760 ; GCN-NEXT: G_STORE [[C1]](s32), [[FRAME_INDEX9]](p5) :: (store (s32) into %fixed-stack.1, addrspace 5)761 ; GCN-NEXT: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0762 ; GCN-NEXT: G_STORE [[C1]](s32), [[FRAME_INDEX10]](p5) :: (store (s32) into %fixed-stack.0, align 8, addrspace 5)763 ; GCN-NEXT: $vgpr0 = COPY [[COPY]](s32)764 ; GCN-NEXT: $vgpr1 = COPY [[COPY1]](s32)765 ; GCN-NEXT: $vgpr2 = COPY [[C1]](s32)766 ; GCN-NEXT: $vgpr3 = COPY [[C1]](s32)767 ; GCN-NEXT: $vgpr4 = COPY [[C1]](s32)768 ; GCN-NEXT: $vgpr5 = COPY [[C1]](s32)769 ; GCN-NEXT: $vgpr6 = COPY [[C1]](s32)770 ; GCN-NEXT: $vgpr7 = COPY [[C1]](s32)771 ; GCN-NEXT: $vgpr8 = COPY [[C1]](s32)772 ; GCN-NEXT: $vgpr9 = COPY [[C1]](s32)773 ; GCN-NEXT: $vgpr10 = COPY [[C1]](s32)774 ; GCN-NEXT: $vgpr11 = COPY [[C1]](s32)775 ; GCN-NEXT: $vgpr12 = COPY [[C1]](s32)776 ; GCN-NEXT: $vgpr13 = COPY [[C1]](s32)777 ; GCN-NEXT: $vgpr14 = COPY [[C1]](s32)778 ; GCN-NEXT: $vgpr15 = COPY [[C1]](s32)779 ; GCN-NEXT: $vgpr16 = COPY [[C1]](s32)780 ; GCN-NEXT: $vgpr17 = COPY [[C1]](s32)781 ; GCN-NEXT: $vgpr18 = COPY [[C1]](s32)782 ; GCN-NEXT: $vgpr19 = COPY [[C1]](s32)783 ; GCN-NEXT: $vgpr20 = COPY [[C1]](s32)784 ; GCN-NEXT: $vgpr21 = COPY [[C1]](s32)785 ; GCN-NEXT: $vgpr22 = COPY [[C1]](s32)786 ; GCN-NEXT: $vgpr23 = COPY [[C1]](s32)787 ; GCN-NEXT: $vgpr24 = COPY [[C1]](s32)788 ; GCN-NEXT: $vgpr25 = COPY [[C1]](s32)789 ; GCN-NEXT: $vgpr26 = COPY [[C1]](s32)790 ; GCN-NEXT: $vgpr27 = COPY [[C1]](s32)791 ; GCN-NEXT: $vgpr28 = COPY [[C1]](s32)792 ; GCN-NEXT: $vgpr29 = COPY [[C1]](s32)793 ; GCN-NEXT: $vgpr30 = COPY [[C1]](s32)794 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3795 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY31]](<4 x s32>)796 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i32_fastcc_i32_i32_a32i32, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $sgpr0_sgpr1_sgpr2_sgpr3797entry:798 %alloca = alloca [16 x i32], align 4, addrspace(5)799 %gep = getelementptr inbounds [16 x i32], ptr addrspace(5) %alloca, i32 0, i32 5800 store volatile i32 9, ptr addrspace(5) %gep801 %ret = tail call fastcc i32 @i32_fastcc_i32_i32_a32i32(i32 %a, i32 %b, [32 x i32] zeroinitializer)802 ret i32 %ret803}804 805declare hidden fastcc void @void_fastcc_multi_byval(i32 %a, ptr addrspace(5) byval([3 x i32]) align 16, ptr addrspace(5) byval([2 x i64]))806 807define fastcc void @sibling_call_fastcc_multi_byval(i32 %a, [64 x i32]) #1 {808 ; GCN-LABEL: name: sibling_call_fastcc_multi_byval809 ; GCN: bb.1.entry:810 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11811 ; GCN-NEXT: {{ $}}812 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr31813 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr15814 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr14815 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr13816 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr12817 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr11818 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr9819 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr7820 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5821 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr0822 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr1823 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr2824 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr3825 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr4826 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr5827 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr6828 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr7829 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr8830 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr9831 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr10832 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr11833 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr12834 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr13835 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr14836 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr15837 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr16838 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr17839 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr18840 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr19841 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr20842 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr21843 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr22844 ; GCN-NEXT: [[COPY32:%[0-9]+]]:_(s32) = COPY $vgpr23845 ; GCN-NEXT: [[COPY33:%[0-9]+]]:_(s32) = COPY $vgpr24846 ; GCN-NEXT: [[COPY34:%[0-9]+]]:_(s32) = COPY $vgpr25847 ; GCN-NEXT: [[COPY35:%[0-9]+]]:_(s32) = COPY $vgpr26848 ; GCN-NEXT: [[COPY36:%[0-9]+]]:_(s32) = COPY $vgpr27849 ; GCN-NEXT: [[COPY37:%[0-9]+]]:_(s32) = COPY $vgpr28850 ; GCN-NEXT: [[COPY38:%[0-9]+]]:_(s32) = COPY $vgpr29851 ; GCN-NEXT: [[COPY39:%[0-9]+]]:_(s32) = COPY $vgpr30852 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.35853 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.35, align 16, addrspace 5)854 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.34855 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.34, addrspace 5)856 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.33857 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.33, align 8, addrspace 5)858 ; GCN-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.32859 ; GCN-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.32, addrspace 5)860 ; GCN-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31861 ; GCN-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.31, align 16, addrspace 5)862 ; GCN-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.30863 ; GCN-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.30, addrspace 5)864 ; GCN-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.29865 ; GCN-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.29, align 8, addrspace 5)866 ; GCN-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.28867 ; GCN-NEXT: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.28, addrspace 5)868 ; GCN-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.27869 ; GCN-NEXT: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.27, align 16, addrspace 5)870 ; GCN-NEXT: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.26871 ; GCN-NEXT: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s32) from %fixed-stack.26, addrspace 5)872 ; GCN-NEXT: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.25873 ; GCN-NEXT: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s32) from %fixed-stack.25, align 8, addrspace 5)874 ; GCN-NEXT: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.24875 ; GCN-NEXT: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s32) from %fixed-stack.24, addrspace 5)876 ; GCN-NEXT: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.23877 ; GCN-NEXT: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s32) from %fixed-stack.23, align 16, addrspace 5)878 ; GCN-NEXT: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22879 ; GCN-NEXT: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s32) from %fixed-stack.22, addrspace 5)880 ; GCN-NEXT: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21881 ; GCN-NEXT: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s32) from %fixed-stack.21, align 8, addrspace 5)882 ; GCN-NEXT: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.20883 ; GCN-NEXT: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s32) from %fixed-stack.20, addrspace 5)884 ; GCN-NEXT: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.19885 ; GCN-NEXT: [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load (s32) from %fixed-stack.19, align 16, addrspace 5)886 ; GCN-NEXT: [[FRAME_INDEX17:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.18887 ; GCN-NEXT: [[LOAD17:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX17]](p5) :: (invariant load (s32) from %fixed-stack.18, addrspace 5)888 ; GCN-NEXT: [[FRAME_INDEX18:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.17889 ; GCN-NEXT: [[LOAD18:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX18]](p5) :: (invariant load (s32) from %fixed-stack.17, align 8, addrspace 5)890 ; GCN-NEXT: [[FRAME_INDEX19:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.16891 ; GCN-NEXT: [[LOAD19:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX19]](p5) :: (invariant load (s32) from %fixed-stack.16, addrspace 5)892 ; GCN-NEXT: [[FRAME_INDEX20:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15893 ; GCN-NEXT: [[LOAD20:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX20]](p5) :: (invariant load (s32) from %fixed-stack.15, align 16, addrspace 5)894 ; GCN-NEXT: [[FRAME_INDEX21:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14895 ; GCN-NEXT: [[LOAD21:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX21]](p5) :: (invariant load (s32) from %fixed-stack.14, addrspace 5)896 ; GCN-NEXT: [[FRAME_INDEX22:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13897 ; GCN-NEXT: [[LOAD22:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX22]](p5) :: (invariant load (s32) from %fixed-stack.13, align 8, addrspace 5)898 ; GCN-NEXT: [[FRAME_INDEX23:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12899 ; GCN-NEXT: [[LOAD23:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX23]](p5) :: (invariant load (s32) from %fixed-stack.12, addrspace 5)900 ; GCN-NEXT: [[FRAME_INDEX24:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11901 ; GCN-NEXT: [[LOAD24:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX24]](p5) :: (invariant load (s32) from %fixed-stack.11, align 16, addrspace 5)902 ; GCN-NEXT: [[FRAME_INDEX25:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10903 ; GCN-NEXT: [[LOAD25:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX25]](p5) :: (invariant load (s32) from %fixed-stack.10, addrspace 5)904 ; GCN-NEXT: [[FRAME_INDEX26:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9905 ; GCN-NEXT: [[LOAD26:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX26]](p5) :: (invariant load (s32) from %fixed-stack.9, align 8, addrspace 5)906 ; GCN-NEXT: [[FRAME_INDEX27:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8907 ; GCN-NEXT: [[LOAD27:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX27]](p5) :: (invariant load (s32) from %fixed-stack.8, addrspace 5)908 ; GCN-NEXT: [[FRAME_INDEX28:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7909 ; GCN-NEXT: [[LOAD28:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX28]](p5) :: (invariant load (s32) from %fixed-stack.7, align 16, addrspace 5)910 ; GCN-NEXT: [[FRAME_INDEX29:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6911 ; GCN-NEXT: [[LOAD29:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX29]](p5) :: (invariant load (s32) from %fixed-stack.6, addrspace 5)912 ; GCN-NEXT: [[FRAME_INDEX30:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5913 ; GCN-NEXT: [[LOAD30:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX30]](p5) :: (invariant load (s32) from %fixed-stack.5, align 8, addrspace 5)914 ; GCN-NEXT: [[FRAME_INDEX31:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4915 ; GCN-NEXT: [[LOAD31:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX31]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5)916 ; GCN-NEXT: [[FRAME_INDEX32:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3917 ; GCN-NEXT: [[LOAD32:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX32]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5)918 ; GCN-NEXT: [[FRAME_INDEX33:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2919 ; GCN-NEXT: [[LOAD33:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX33]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5)920 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 9921 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0922 ; GCN-NEXT: [[FRAME_INDEX34:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca0923 ; GCN-NEXT: [[FRAME_INDEX35:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.1.alloca1924 ; GCN-NEXT: G_STORE [[C]](s32), [[FRAME_INDEX34]](p5) :: (store (s32) into %ir.alloca0, addrspace 5)925 ; GCN-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 4926 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[FRAME_INDEX34]], [[C2]](s32)927 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (store (s32) into %ir.alloca0 + 4, addrspace 5)928 ; GCN-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 8929 ; GCN-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[FRAME_INDEX34]], [[C3]](s32)930 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD1]](p5) :: (store (s32) into %ir.alloca0 + 8, addrspace 5)931 ; GCN-NEXT: G_STORE [[C1]](s64), [[FRAME_INDEX35]](p5) :: (store (s64) into %ir.alloca1, addrspace 5)932 ; GCN-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[FRAME_INDEX35]], [[C3]](s32)933 ; GCN-NEXT: G_STORE [[C1]](s64), [[PTR_ADD2]](p5) :: (store (s64) into %ir.alloca1 + 8, addrspace 5)934 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @void_fastcc_multi_byval935 ; GCN-NEXT: [[COPY40:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)936 ; GCN-NEXT: [[COPY41:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)937 ; GCN-NEXT: [[COPY42:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)938 ; GCN-NEXT: [[COPY43:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)939 ; GCN-NEXT: [[COPY44:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)940 ; GCN-NEXT: [[COPY45:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)941 ; GCN-NEXT: [[COPY46:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)942 ; GCN-NEXT: [[COPY47:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)943 ; GCN-NEXT: [[COPY48:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)944 ; GCN-NEXT: [[FRAME_INDEX36:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1945 ; GCN-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 12946 ; GCN-NEXT: G_MEMCPY [[FRAME_INDEX36]](p5), [[FRAME_INDEX34]](p5), [[C4]](s32), 0 :: (dereferenceable store (s96) into %fixed-stack.1, align 16, addrspace 5), (dereferenceable load (s96) from %ir.alloca0, align 16, addrspace 5)947 ; GCN-NEXT: [[FRAME_INDEX37:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0948 ; GCN-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 16949 ; GCN-NEXT: G_MEMCPY [[FRAME_INDEX37]](p5), [[FRAME_INDEX35]](p5), [[C5]](s32), 0 :: (dereferenceable store (s128) into %fixed-stack.0, addrspace 5), (dereferenceable load (s128) from %ir.alloca1, align 8, addrspace 5)950 ; GCN-NEXT: $vgpr0 = COPY [[COPY9]](s32)951 ; GCN-NEXT: [[COPY49:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3952 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY49]](<4 x s32>)953 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY40]](p4)954 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY41]](p4)955 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY42]](p4)956 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY43]](s64)957 ; GCN-NEXT: $sgpr12 = COPY [[COPY44]](s32)958 ; GCN-NEXT: $sgpr13 = COPY [[COPY45]](s32)959 ; GCN-NEXT: $sgpr14 = COPY [[COPY46]](s32)960 ; GCN-NEXT: $sgpr15 = COPY [[COPY47]](s32)961 ; GCN-NEXT: $vgpr31 = COPY [[COPY48]](s32)962 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @void_fastcc_multi_byval, 0, csr_amdgpu, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr31963entry:964 %alloca0 = alloca [3 x i32], align 16, addrspace(5)965 %alloca1 = alloca [2 x i64], align 8, addrspace(5)966 store [3 x i32] [i32 9, i32 9, i32 9], ptr addrspace(5) %alloca0967 store [2 x i64] zeroinitializer, ptr addrspace(5) %alloca1968 tail call fastcc void @void_fastcc_multi_byval(i32 %a, ptr addrspace(5) byval([3 x i32]) %alloca0, ptr addrspace(5) byval([2 x i64]) %alloca1)969 ret void970}971 972declare hidden fastcc void @void_fastcc_byval_and_stack_passed(ptr addrspace(5) byval([3 x i32]) align 16, [32 x i32], i32)973 974; Callee has a byval and non-byval stack passed argument975define fastcc void @sibling_call_byval_and_stack_passed(i32 %stack.out.arg, [64 x i32]) #1 {976 ; GCN-LABEL: name: sibling_call_byval_and_stack_passed977 ; GCN: bb.1.entry:978 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11979 ; GCN-NEXT: {{ $}}980 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr31981 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr15982 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr14983 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr13984 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr12985 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr11986 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr9987 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr7988 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5989 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr0990 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr1991 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr2992 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr3993 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr4994 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr5995 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr6996 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr7997 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr8998 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr9999 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr101000 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr111001 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr121002 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr131003 ; GCN-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr141004 ; GCN-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr151005 ; GCN-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr161006 ; GCN-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr171007 ; GCN-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr181008 ; GCN-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr191009 ; GCN-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr201010 ; GCN-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr211011 ; GCN-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr221012 ; GCN-NEXT: [[COPY32:%[0-9]+]]:_(s32) = COPY $vgpr231013 ; GCN-NEXT: [[COPY33:%[0-9]+]]:_(s32) = COPY $vgpr241014 ; GCN-NEXT: [[COPY34:%[0-9]+]]:_(s32) = COPY $vgpr251015 ; GCN-NEXT: [[COPY35:%[0-9]+]]:_(s32) = COPY $vgpr261016 ; GCN-NEXT: [[COPY36:%[0-9]+]]:_(s32) = COPY $vgpr271017 ; GCN-NEXT: [[COPY37:%[0-9]+]]:_(s32) = COPY $vgpr281018 ; GCN-NEXT: [[COPY38:%[0-9]+]]:_(s32) = COPY $vgpr291019 ; GCN-NEXT: [[COPY39:%[0-9]+]]:_(s32) = COPY $vgpr301020 ; GCN-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.361021 ; GCN-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.36, align 16, addrspace 5)1022 ; GCN-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.351023 ; GCN-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.35, addrspace 5)1024 ; GCN-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.341025 ; GCN-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.34, align 8, addrspace 5)1026 ; GCN-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.331027 ; GCN-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.33, addrspace 5)1028 ; GCN-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.321029 ; GCN-NEXT: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.32, align 16, addrspace 5)1030 ; GCN-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.311031 ; GCN-NEXT: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.31, addrspace 5)1032 ; GCN-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.301033 ; GCN-NEXT: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.30, align 8, addrspace 5)1034 ; GCN-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.291035 ; GCN-NEXT: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.29, addrspace 5)1036 ; GCN-NEXT: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.281037 ; GCN-NEXT: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.28, align 16, addrspace 5)1038 ; GCN-NEXT: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.271039 ; GCN-NEXT: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s32) from %fixed-stack.27, addrspace 5)1040 ; GCN-NEXT: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.261041 ; GCN-NEXT: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s32) from %fixed-stack.26, align 8, addrspace 5)1042 ; GCN-NEXT: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.251043 ; GCN-NEXT: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s32) from %fixed-stack.25, addrspace 5)1044 ; GCN-NEXT: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.241045 ; GCN-NEXT: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s32) from %fixed-stack.24, align 16, addrspace 5)1046 ; GCN-NEXT: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.231047 ; GCN-NEXT: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s32) from %fixed-stack.23, addrspace 5)1048 ; GCN-NEXT: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.221049 ; GCN-NEXT: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s32) from %fixed-stack.22, align 8, addrspace 5)1050 ; GCN-NEXT: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.211051 ; GCN-NEXT: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s32) from %fixed-stack.21, addrspace 5)1052 ; GCN-NEXT: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.201053 ; GCN-NEXT: [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load (s32) from %fixed-stack.20, align 16, addrspace 5)1054 ; GCN-NEXT: [[FRAME_INDEX17:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.191055 ; GCN-NEXT: [[LOAD17:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX17]](p5) :: (invariant load (s32) from %fixed-stack.19, addrspace 5)1056 ; GCN-NEXT: [[FRAME_INDEX18:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.181057 ; GCN-NEXT: [[LOAD18:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX18]](p5) :: (invariant load (s32) from %fixed-stack.18, align 8, addrspace 5)1058 ; GCN-NEXT: [[FRAME_INDEX19:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.171059 ; GCN-NEXT: [[LOAD19:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX19]](p5) :: (invariant load (s32) from %fixed-stack.17, addrspace 5)1060 ; GCN-NEXT: [[FRAME_INDEX20:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.161061 ; GCN-NEXT: [[LOAD20:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX20]](p5) :: (invariant load (s32) from %fixed-stack.16, align 16, addrspace 5)1062 ; GCN-NEXT: [[FRAME_INDEX21:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.151063 ; GCN-NEXT: [[LOAD21:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX21]](p5) :: (invariant load (s32) from %fixed-stack.15, addrspace 5)1064 ; GCN-NEXT: [[FRAME_INDEX22:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.141065 ; GCN-NEXT: [[LOAD22:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX22]](p5) :: (invariant load (s32) from %fixed-stack.14, align 8, addrspace 5)1066 ; GCN-NEXT: [[FRAME_INDEX23:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.131067 ; GCN-NEXT: [[LOAD23:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX23]](p5) :: (invariant load (s32) from %fixed-stack.13, addrspace 5)1068 ; GCN-NEXT: [[FRAME_INDEX24:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.121069 ; GCN-NEXT: [[LOAD24:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX24]](p5) :: (invariant load (s32) from %fixed-stack.12, align 16, addrspace 5)1070 ; GCN-NEXT: [[FRAME_INDEX25:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.111071 ; GCN-NEXT: [[LOAD25:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX25]](p5) :: (invariant load (s32) from %fixed-stack.11, addrspace 5)1072 ; GCN-NEXT: [[FRAME_INDEX26:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.101073 ; GCN-NEXT: [[LOAD26:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX26]](p5) :: (invariant load (s32) from %fixed-stack.10, align 8, addrspace 5)1074 ; GCN-NEXT: [[FRAME_INDEX27:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.91075 ; GCN-NEXT: [[LOAD27:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX27]](p5) :: (invariant load (s32) from %fixed-stack.9, addrspace 5)1076 ; GCN-NEXT: [[FRAME_INDEX28:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.81077 ; GCN-NEXT: [[LOAD28:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX28]](p5) :: (invariant load (s32) from %fixed-stack.8, align 16, addrspace 5)1078 ; GCN-NEXT: [[FRAME_INDEX29:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.71079 ; GCN-NEXT: [[LOAD29:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX29]](p5) :: (invariant load (s32) from %fixed-stack.7, addrspace 5)1080 ; GCN-NEXT: [[FRAME_INDEX30:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.61081 ; GCN-NEXT: [[LOAD30:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX30]](p5) :: (invariant load (s32) from %fixed-stack.6, align 8, addrspace 5)1082 ; GCN-NEXT: [[FRAME_INDEX31:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.51083 ; GCN-NEXT: [[LOAD31:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX31]](p5) :: (invariant load (s32) from %fixed-stack.5, addrspace 5)1084 ; GCN-NEXT: [[FRAME_INDEX32:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.41085 ; GCN-NEXT: [[LOAD32:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX32]](p5) :: (invariant load (s32) from %fixed-stack.4, align 16, addrspace 5)1086 ; GCN-NEXT: [[FRAME_INDEX33:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31087 ; GCN-NEXT: [[LOAD33:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX33]](p5) :: (invariant load (s32) from %fixed-stack.3, addrspace 5)1088 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 91089 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 01090 ; GCN-NEXT: [[FRAME_INDEX34:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0.alloca1091 ; GCN-NEXT: G_STORE [[C]](s32), [[FRAME_INDEX34]](p5) :: (store (s32) into %ir.alloca, addrspace 5)1092 ; GCN-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 41093 ; GCN-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[FRAME_INDEX34]], [[C2]](s32)1094 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p5) :: (store (s32) into %ir.alloca + 4, addrspace 5)1095 ; GCN-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 81096 ; GCN-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = nuw inbounds G_PTR_ADD [[FRAME_INDEX34]], [[C3]](s32)1097 ; GCN-NEXT: G_STORE [[C]](s32), [[PTR_ADD1]](p5) :: (store (s32) into %ir.alloca + 8, addrspace 5)1098 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @void_fastcc_byval_and_stack_passed1099 ; GCN-NEXT: [[COPY40:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1100 ; GCN-NEXT: [[COPY41:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1101 ; GCN-NEXT: [[COPY42:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1102 ; GCN-NEXT: [[COPY43:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1103 ; GCN-NEXT: [[COPY44:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1104 ; GCN-NEXT: [[COPY45:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1105 ; GCN-NEXT: [[COPY46:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1106 ; GCN-NEXT: [[COPY47:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1107 ; GCN-NEXT: [[COPY48:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1108 ; GCN-NEXT: [[FRAME_INDEX35:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21109 ; GCN-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 121110 ; GCN-NEXT: G_MEMCPY [[FRAME_INDEX35]](p5), [[FRAME_INDEX34]](p5), [[C4]](s32), 0 :: (dereferenceable store (s96) into %fixed-stack.2, align 16, addrspace 5), (dereferenceable load (s96) from %ir.alloca, align 16, addrspace 5)1111 ; GCN-NEXT: [[FRAME_INDEX36:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11112 ; GCN-NEXT: G_STORE [[C1]](s32), [[FRAME_INDEX36]](p5) :: (store (s32) into %fixed-stack.1, addrspace 5)1113 ; GCN-NEXT: [[FRAME_INDEX37:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.01114 ; GCN-NEXT: G_STORE [[COPY9]](s32), [[FRAME_INDEX37]](p5) :: (store (s32) into %fixed-stack.0, align 16, addrspace 5)1115 ; GCN-NEXT: $vgpr0 = COPY [[C1]](s32)1116 ; GCN-NEXT: $vgpr1 = COPY [[C1]](s32)1117 ; GCN-NEXT: $vgpr2 = COPY [[C1]](s32)1118 ; GCN-NEXT: $vgpr3 = COPY [[C1]](s32)1119 ; GCN-NEXT: $vgpr4 = COPY [[C1]](s32)1120 ; GCN-NEXT: $vgpr5 = COPY [[C1]](s32)1121 ; GCN-NEXT: $vgpr6 = COPY [[C1]](s32)1122 ; GCN-NEXT: $vgpr7 = COPY [[C1]](s32)1123 ; GCN-NEXT: $vgpr8 = COPY [[C1]](s32)1124 ; GCN-NEXT: $vgpr9 = COPY [[C1]](s32)1125 ; GCN-NEXT: $vgpr10 = COPY [[C1]](s32)1126 ; GCN-NEXT: $vgpr11 = COPY [[C1]](s32)1127 ; GCN-NEXT: $vgpr12 = COPY [[C1]](s32)1128 ; GCN-NEXT: $vgpr13 = COPY [[C1]](s32)1129 ; GCN-NEXT: $vgpr14 = COPY [[C1]](s32)1130 ; GCN-NEXT: $vgpr15 = COPY [[C1]](s32)1131 ; GCN-NEXT: $vgpr16 = COPY [[C1]](s32)1132 ; GCN-NEXT: $vgpr17 = COPY [[C1]](s32)1133 ; GCN-NEXT: $vgpr18 = COPY [[C1]](s32)1134 ; GCN-NEXT: $vgpr19 = COPY [[C1]](s32)1135 ; GCN-NEXT: $vgpr20 = COPY [[C1]](s32)1136 ; GCN-NEXT: $vgpr21 = COPY [[C1]](s32)1137 ; GCN-NEXT: $vgpr22 = COPY [[C1]](s32)1138 ; GCN-NEXT: $vgpr23 = COPY [[C1]](s32)1139 ; GCN-NEXT: $vgpr24 = COPY [[C1]](s32)1140 ; GCN-NEXT: $vgpr25 = COPY [[C1]](s32)1141 ; GCN-NEXT: $vgpr26 = COPY [[C1]](s32)1142 ; GCN-NEXT: $vgpr27 = COPY [[C1]](s32)1143 ; GCN-NEXT: $vgpr28 = COPY [[C1]](s32)1144 ; GCN-NEXT: $vgpr29 = COPY [[C1]](s32)1145 ; GCN-NEXT: $vgpr30 = COPY [[C1]](s32)1146 ; GCN-NEXT: [[COPY49:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31147 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY49]](<4 x s32>)1148 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY40]](p4)1149 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY41]](p4)1150 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY42]](p4)1151 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY43]](s64)1152 ; GCN-NEXT: $sgpr12 = COPY [[COPY44]](s32)1153 ; GCN-NEXT: $sgpr13 = COPY [[COPY45]](s32)1154 ; GCN-NEXT: $sgpr14 = COPY [[COPY46]](s32)1155 ; GCN-NEXT: $sgpr15 = COPY [[COPY47]](s32)1156 ; GCN-NEXT: $vgpr31 = COPY [[COPY48]](s32)1157 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @void_fastcc_byval_and_stack_passed, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311158entry:1159 %alloca = alloca [3 x i32], align 16, addrspace(5)1160 store [3 x i32] [i32 9, i32 9, i32 9], ptr addrspace(5) %alloca1161 tail call fastcc void @void_fastcc_byval_and_stack_passed(ptr addrspace(5) byval([3 x i32]) %alloca, [32 x i32] zeroinitializer, i32 %stack.out.arg)1162 ret void1163}1164 1165declare hidden fastcc i64 @i64_fastcc_i64(i64 %arg0)1166 1167define hidden fastcc i64 @sibling_call_i64_fastcc_i64(i64 %a) #1 {1168 ; GCN-LABEL: name: sibling_call_i64_fastcc_i641169 ; GCN: bb.1.entry:1170 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111171 ; GCN-NEXT: {{ $}}1172 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr311173 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr151174 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr141175 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr131176 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr121177 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr111178 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr91179 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr71180 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr51181 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr01182 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr11183 ; GCN-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY9]](s32), [[COPY10]](s32)1184 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i64_fastcc_i641185 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1186 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1187 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1188 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1189 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1190 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1191 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1192 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1193 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1194 ; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[MV]](s64)1195 ; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)1196 ; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)1197 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31198 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)1199 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY11]](p4)1200 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY12]](p4)1201 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY13]](p4)1202 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY14]](s64)1203 ; GCN-NEXT: $sgpr12 = COPY [[COPY15]](s32)1204 ; GCN-NEXT: $sgpr13 = COPY [[COPY16]](s32)1205 ; GCN-NEXT: $sgpr14 = COPY [[COPY17]](s32)1206 ; GCN-NEXT: $sgpr15 = COPY [[COPY18]](s32)1207 ; GCN-NEXT: $vgpr31 = COPY [[COPY19]](s32)1208 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i64_fastcc_i64, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311209entry:1210 %ret = tail call fastcc i64 @i64_fastcc_i64(i64 %a)1211 ret i64 %ret1212}1213 1214declare hidden fastcc ptr addrspace(1) @p1i8_fastcc_p1i8(ptr addrspace(1) %arg0) #11215 1216define hidden fastcc ptr addrspace(1) @sibling_call_p1i8_fastcc_p1i8(ptr addrspace(1) %a) #1 {1217 ; GCN-LABEL: name: sibling_call_p1i8_fastcc_p1i81218 ; GCN: bb.1.entry:1219 ; GCN-NEXT: liveins: $vgpr0, $vgpr11220 ; GCN-NEXT: {{ $}}1221 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01222 ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11223 ; GCN-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1224 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @p1i8_fastcc_p1i81225 ; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[MV]](p1)1226 ; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)1227 ; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)1228 ; GCN-NEXT: [[COPY2:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31229 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY2]](<4 x s32>)1230 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @p1i8_fastcc_p1i8, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr31231entry:1232 %ret = tail call fastcc ptr addrspace(1) @p1i8_fastcc_p1i8(ptr addrspace(1) %a)1233 ret ptr addrspace(1) %ret1234}1235 1236declare hidden fastcc i16 @i16_fastcc_i16(i16 %arg0)1237 1238define hidden fastcc i16 @sibling_call_i16_fastcc_i16(i16 %a) #1 {1239 ; GCN-LABEL: name: sibling_call_i16_fastcc_i161240 ; GCN: bb.1.entry:1241 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111242 ; GCN-NEXT: {{ $}}1243 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr311244 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr151245 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr141246 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr131247 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr121248 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr111249 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr91250 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr71251 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr51252 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr01253 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY9]](s32)1254 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @i16_fastcc_i161255 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1256 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1257 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1258 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1259 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1260 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1261 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1262 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1263 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1264 ; GCN-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s16)1265 ; GCN-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)1266 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31267 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY19]](<4 x s32>)1268 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY10]](p4)1269 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY11]](p4)1270 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY12]](p4)1271 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY13]](s64)1272 ; GCN-NEXT: $sgpr12 = COPY [[COPY14]](s32)1273 ; GCN-NEXT: $sgpr13 = COPY [[COPY15]](s32)1274 ; GCN-NEXT: $sgpr14 = COPY [[COPY16]](s32)1275 ; GCN-NEXT: $sgpr15 = COPY [[COPY17]](s32)1276 ; GCN-NEXT: $vgpr31 = COPY [[COPY18]](s32)1277 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @i16_fastcc_i16, 0, csr_amdgpu, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311278entry:1279 %ret = tail call fastcc i16 @i16_fastcc_i16(i16 %a)1280 ret i16 %ret1281}1282 1283declare hidden fastcc half @f16_fastcc_f16(half %arg0)1284 1285define hidden fastcc half @sibling_call_f16_fastcc_f16(half %a) #1 {1286 ; GCN-LABEL: name: sibling_call_f16_fastcc_f161287 ; GCN: bb.1.entry:1288 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111289 ; GCN-NEXT: {{ $}}1290 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr311291 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr151292 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr141293 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr131294 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr121295 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr111296 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr91297 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr71298 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr51299 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr01300 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY9]](s32)1301 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @f16_fastcc_f161302 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1303 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1304 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1305 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1306 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1307 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1308 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1309 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1310 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1311 ; GCN-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s16)1312 ; GCN-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)1313 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31314 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY19]](<4 x s32>)1315 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY10]](p4)1316 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY11]](p4)1317 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY12]](p4)1318 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY13]](s64)1319 ; GCN-NEXT: $sgpr12 = COPY [[COPY14]](s32)1320 ; GCN-NEXT: $sgpr13 = COPY [[COPY15]](s32)1321 ; GCN-NEXT: $sgpr14 = COPY [[COPY16]](s32)1322 ; GCN-NEXT: $sgpr15 = COPY [[COPY17]](s32)1323 ; GCN-NEXT: $vgpr31 = COPY [[COPY18]](s32)1324 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @f16_fastcc_f16, 0, csr_amdgpu, implicit $vgpr0, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311325entry:1326 %ret = tail call fastcc half @f16_fastcc_f16(half %a)1327 ret half %ret1328}1329 1330declare hidden fastcc <3 x i16> @v3i16_fastcc_v3i16(<3 x i16> %arg0)1331 1332define hidden fastcc <3 x i16> @sibling_call_v3i16_fastcc_v3i16(<3 x i16> %a) #1 {1333 ; GCN-LABEL: name: sibling_call_v3i16_fastcc_v3i161334 ; GCN: bb.1.entry:1335 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111336 ; GCN-NEXT: {{ $}}1337 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr311338 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr151339 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr141340 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr131341 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr121342 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr111343 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr91344 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr71345 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr51346 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01347 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11348 ; GCN-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY9]](<2 x s16>), [[COPY10]](<2 x s16>)1349 ; GCN-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<4 x s16>)1350 ; GCN-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[UV]](s16), [[UV1]](s16), [[UV2]](s16)1351 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @v3i16_fastcc_v3i161352 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1353 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1354 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1355 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1356 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1357 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1358 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1359 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1360 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1361 ; GCN-NEXT: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[BUILD_VECTOR]](<3 x s16>)1362 ; GCN-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF1363 ; GCN-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[UV4]](s16), [[UV5]](s16), [[UV6]](s16), [[DEF]](s16)1364 ; GCN-NEXT: [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[BUILD_VECTOR1]](<4 x s16>)1365 ; GCN-NEXT: $vgpr0 = COPY [[UV7]](<2 x s16>)1366 ; GCN-NEXT: $vgpr1 = COPY [[UV8]](<2 x s16>)1367 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31368 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)1369 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY11]](p4)1370 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY12]](p4)1371 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY13]](p4)1372 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY14]](s64)1373 ; GCN-NEXT: $sgpr12 = COPY [[COPY15]](s32)1374 ; GCN-NEXT: $sgpr13 = COPY [[COPY16]](s32)1375 ; GCN-NEXT: $sgpr14 = COPY [[COPY17]](s32)1376 ; GCN-NEXT: $sgpr15 = COPY [[COPY18]](s32)1377 ; GCN-NEXT: $vgpr31 = COPY [[COPY19]](s32)1378 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @v3i16_fastcc_v3i16, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311379entry:1380 %ret = tail call fastcc <3 x i16> @v3i16_fastcc_v3i16(<3 x i16> %a)1381 ret <3 x i16> %ret1382}1383 1384declare hidden fastcc <4 x i16> @v4i16_fastcc_v4i16(<4 x i16> %arg0)1385 1386define hidden fastcc <4 x i16> @sibling_call_v4i16_fastcc_v4i16(<4 x i16> %a) #1 {1387 ; GCN-LABEL: name: sibling_call_v4i16_fastcc_v4i161388 ; GCN: bb.1.entry:1389 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111390 ; GCN-NEXT: {{ $}}1391 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr311392 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr151393 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr141394 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr131395 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr121396 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr111397 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr91398 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr71399 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr51400 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01401 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11402 ; GCN-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY9]](<2 x s16>), [[COPY10]](<2 x s16>)1403 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @v4i16_fastcc_v4i161404 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1405 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1406 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1407 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1408 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1409 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1410 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1411 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1412 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1413 ; GCN-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<4 x s16>)1414 ; GCN-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1415 ; GCN-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1416 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31417 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)1418 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY11]](p4)1419 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY12]](p4)1420 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY13]](p4)1421 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY14]](s64)1422 ; GCN-NEXT: $sgpr12 = COPY [[COPY15]](s32)1423 ; GCN-NEXT: $sgpr13 = COPY [[COPY16]](s32)1424 ; GCN-NEXT: $sgpr14 = COPY [[COPY17]](s32)1425 ; GCN-NEXT: $sgpr15 = COPY [[COPY18]](s32)1426 ; GCN-NEXT: $vgpr31 = COPY [[COPY19]](s32)1427 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @v4i16_fastcc_v4i16, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311428entry:1429 %ret = tail call fastcc <4 x i16> @v4i16_fastcc_v4i16(<4 x i16> %a)1430 ret <4 x i16> %ret1431}1432 1433declare hidden fastcc <2 x i64> @v2i64_fastcc_v2i64(<2 x i64> %arg0)1434 1435define hidden fastcc <2 x i64> @sibling_call_v2i64_fastcc_v2i64(<2 x i64> %a) #1 {1436 ; GCN-LABEL: name: sibling_call_v2i64_fastcc_v2i641437 ; GCN: bb.1.entry:1438 ; GCN-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111439 ; GCN-NEXT: {{ $}}1440 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr311441 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr151442 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr141443 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr131444 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_32(s32) = COPY $sgpr121445 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_64(s64) = COPY $sgpr10_sgpr111446 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr8_sgpr91447 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr6_sgpr71448 ; GCN-NEXT: [[COPY8:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr51449 ; GCN-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr01450 ; GCN-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr11451 ; GCN-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr21452 ; GCN-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr31453 ; GCN-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY9]](s32), [[COPY10]](s32)1454 ; GCN-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY11]](s32), [[COPY12]](s32)1455 ; GCN-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)1456 ; GCN-NEXT: [[GV:%[0-9]+]]:ccr_sgpr_64(p0) = G_GLOBAL_VALUE @v2i64_fastcc_v2i641457 ; GCN-NEXT: [[COPY13:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1458 ; GCN-NEXT: [[COPY14:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)1459 ; GCN-NEXT: [[COPY15:%[0-9]+]]:_(p4) = COPY [[COPY6]](p4)1460 ; GCN-NEXT: [[COPY16:%[0-9]+]]:_(s64) = COPY [[COPY5]](s64)1461 ; GCN-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY4]](s32)1462 ; GCN-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY3]](s32)1463 ; GCN-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)1464 ; GCN-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1465 ; GCN-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1466 ; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[BUILD_VECTOR]](<2 x s64>)1467 ; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)1468 ; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)1469 ; GCN-NEXT: $vgpr2 = COPY [[UV2]](s32)1470 ; GCN-NEXT: $vgpr3 = COPY [[UV3]](s32)1471 ; GCN-NEXT: [[COPY22:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr31472 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY22]](<4 x s32>)1473 ; GCN-NEXT: $sgpr4_sgpr5 = COPY [[COPY13]](p4)1474 ; GCN-NEXT: $sgpr6_sgpr7 = COPY [[COPY14]](p4)1475 ; GCN-NEXT: $sgpr8_sgpr9 = COPY [[COPY15]](p4)1476 ; GCN-NEXT: $sgpr10_sgpr11 = COPY [[COPY16]](s64)1477 ; GCN-NEXT: $sgpr12 = COPY [[COPY17]](s32)1478 ; GCN-NEXT: $sgpr13 = COPY [[COPY18]](s32)1479 ; GCN-NEXT: $sgpr14 = COPY [[COPY19]](s32)1480 ; GCN-NEXT: $sgpr15 = COPY [[COPY20]](s32)1481 ; GCN-NEXT: $vgpr31 = COPY [[COPY21]](s32)1482 ; GCN-NEXT: SI_TCRETURN [[GV]](p0), @v2i64_fastcc_v2i64, 0, csr_amdgpu, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr8_sgpr9, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $vgpr311483entry:1484 %ret = tail call fastcc <2 x i64> @v2i64_fastcc_v2i64(<2 x i64> %a)1485 ret <2 x i64> %ret1486}1487 1488attributes #0 = { nounwind }1489attributes #1 = { nounwind noinline "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-cluster-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-cluster-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-cluster-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" }1490 1491