1248 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -global-isel -stop-after=irtranslator -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -o - %s | FileCheck -enable-var-scope -check-prefix=GFX900 %s3; RUN: llc -global-isel -stop-after=irtranslator -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx908 -o - %s | FileCheck -enable-var-scope -check-prefix=GFX908 %s4 5; Workitem IDs are passed to the kernel differently for gfx9086 7declare hidden void @external_void_func_void() #08declare hidden void @external_void_func_i32(i32) #09declare hidden void @external_void_func_v32i32(<32 x i32>) #010 11define amdgpu_kernel void @test_call_external_void_func_i32([17 x i8]) #0 {12 ; GFX900-LABEL: name: test_call_external_void_func_i3213 ; GFX900: bb.1 (%ir-block.1):14 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr1115 ; GFX900-NEXT: {{ $}}16 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr217 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr118 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr019 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr1620 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr1521 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr1422 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr1123 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr724 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr525 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr926 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4227 ; GFX900-NEXT: [[INT:%[0-9]+]]:_(p4) = G_INTRINSIC intrinsic(@llvm.amdgcn.kernarg.segment.ptr)28 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc29 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i3230 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY8]]31 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY7]]32 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY9]](p4)33 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2034 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY12]], [[C1]](s64)35 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY [[COPY6]]36 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY5]]37 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]]38 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]]39 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF40 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)41 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)42 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1043 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY18]], [[C2]](s32)44 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY17]], [[SHL]]45 ; GFX900-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)46 ; GFX900-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 2047 ; GFX900-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY19]], [[C3]](s32)48 ; GFX900-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]49 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)50 ; GFX900-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg51 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)52 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY10]](p4)53 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY11]](p4)54 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)55 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY13]](s64)56 ; GFX900-NEXT: $sgpr12 = COPY [[COPY14]](s32)57 ; GFX900-NEXT: $sgpr13 = COPY [[COPY15]](s32)58 ; GFX900-NEXT: $sgpr14 = COPY [[COPY16]](s32)59 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)60 ; GFX900-NEXT: $vgpr31 = COPY [[OR1]](s32)61 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr3162 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc63 ; GFX900-NEXT: S_ENDPGM 064 ;65 ; GFX908-LABEL: name: test_call_external_void_func_i3266 ; GFX908: bb.1 (%ir-block.1):67 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr1168 ; GFX908-NEXT: {{ $}}69 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr270 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr171 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr072 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr1673 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr1574 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr1475 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr1176 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr777 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr578 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr979 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4280 ; GFX908-NEXT: [[INT:%[0-9]+]]:_(p4) = G_INTRINSIC intrinsic(@llvm.amdgcn.kernarg.segment.ptr)81 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc82 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i3283 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY8]]84 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY7]]85 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY9]](p4)86 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2087 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY12]], [[C1]](s64)88 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY [[COPY6]]89 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY5]]90 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]]91 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]]92 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF93 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)94 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)95 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1096 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY18]], [[C2]](s32)97 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY17]], [[SHL]]98 ; GFX908-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)99 ; GFX908-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 20100 ; GFX908-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY19]], [[C3]](s32)101 ; GFX908-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]102 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)103 ; GFX908-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg104 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)105 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY10]](p4)106 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY11]](p4)107 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)108 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY13]](s64)109 ; GFX908-NEXT: $sgpr12 = COPY [[COPY14]](s32)110 ; GFX908-NEXT: $sgpr13 = COPY [[COPY15]](s32)111 ; GFX908-NEXT: $sgpr14 = COPY [[COPY16]](s32)112 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)113 ; GFX908-NEXT: $vgpr31 = COPY [[OR1]](s32)114 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31115 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc116 ; GFX908-NEXT: S_ENDPGM 0117 call void @external_void_func_i32(i32 42)118 ret void119}120 121define void @test_func_call_external_void_func_i32() #0 {122 ; GFX900-LABEL: name: test_func_call_external_void_func_i32123 ; GFX900: bb.1 (%ir-block.0):124 ; GFX900-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11125 ; GFX900-NEXT: {{ $}}126 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr31127 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr15128 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr14129 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr13130 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr12131 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11132 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr8_sgpr9133 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7134 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5135 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 99136 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc137 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32138 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY8]]139 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]]140 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY6]]141 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]142 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]143 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]144 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]145 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]]146 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)147 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)148 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3149 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)150 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)151 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)152 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[COPY11]](p4)153 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)154 ; GFX900-NEXT: $sgpr12 = COPY [[COPY13]](s32)155 ; GFX900-NEXT: $sgpr13 = COPY [[COPY14]](s32)156 ; GFX900-NEXT: $sgpr14 = COPY [[COPY15]](s32)157 ; GFX900-NEXT: $sgpr15 = COPY [[COPY16]](s32)158 ; GFX900-NEXT: $vgpr31 = COPY [[COPY17]](s32)159 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31160 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc161 ; GFX900-NEXT: SI_RETURN162 ;163 ; GFX908-LABEL: name: test_func_call_external_void_func_i32164 ; GFX908: bb.1 (%ir-block.0):165 ; GFX908-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11166 ; GFX908-NEXT: {{ $}}167 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr31168 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr15169 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr14170 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr13171 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr12172 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11173 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr8_sgpr9174 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7175 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5176 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 99177 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc178 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32179 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY8]]180 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]]181 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY6]]182 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]183 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]184 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]185 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]186 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]]187 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)188 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)189 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3190 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)191 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)192 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)193 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[COPY11]](p4)194 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)195 ; GFX908-NEXT: $sgpr12 = COPY [[COPY13]](s32)196 ; GFX908-NEXT: $sgpr13 = COPY [[COPY14]](s32)197 ; GFX908-NEXT: $sgpr14 = COPY [[COPY15]](s32)198 ; GFX908-NEXT: $sgpr15 = COPY [[COPY16]](s32)199 ; GFX908-NEXT: $vgpr31 = COPY [[COPY17]](s32)200 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31201 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc202 ; GFX908-NEXT: SI_RETURN203 call void @external_void_func_i32(i32 99)204 ret void205}206 207; Explicit argument is split between registers ad the stack due to v31208; being used for workitem IDs.209define amdgpu_kernel void @test_call_external_void_func_v32i32([17 x i8]) #0 {210 ; GFX900-LABEL: name: test_call_external_void_func_v32i32211 ; GFX900: bb.1 (%ir-block.1):212 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11213 ; GFX900-NEXT: {{ $}}214 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr2215 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr1216 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0217 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr16218 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr15219 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr14220 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11221 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7222 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5223 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9224 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0225 ; GFX900-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)226 ; GFX900-NEXT: [[INT:%[0-9]+]]:_(p4) = G_INTRINSIC intrinsic(@llvm.amdgcn.kernarg.segment.ptr)227 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc228 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_v32i32229 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY8]]230 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY7]]231 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY9]](p4)232 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 20233 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY12]], [[C1]](s64)234 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY [[COPY6]]235 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY5]]236 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]]237 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]]238 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF239 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)240 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)241 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 10242 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY18]], [[C2]](s32)243 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY17]], [[SHL]]244 ; GFX900-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)245 ; GFX900-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 20246 ; GFX900-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY19]], [[C3]](s32)247 ; GFX900-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]248 ; GFX900-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[BUILD_VECTOR]](<32 x s32>)249 ; GFX900-NEXT: [[AMDGPU_WAVE_ADDRESS:%[0-9]+]]:_(p5) = G_AMDGPU_WAVE_ADDRESS $sp_reg250 ; GFX900-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0251 ; GFX900-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C4]](s32)252 ; GFX900-NEXT: G_STORE [[UV31]](s32), [[PTR_ADD1]](p5) :: (store (s32) into stack, align 16, addrspace 5)253 ; GFX900-NEXT: $vgpr0 = COPY [[UV]](s32)254 ; GFX900-NEXT: $vgpr1 = COPY [[UV1]](s32)255 ; GFX900-NEXT: $vgpr2 = COPY [[UV2]](s32)256 ; GFX900-NEXT: $vgpr3 = COPY [[UV3]](s32)257 ; GFX900-NEXT: $vgpr4 = COPY [[UV4]](s32)258 ; GFX900-NEXT: $vgpr5 = COPY [[UV5]](s32)259 ; GFX900-NEXT: $vgpr6 = COPY [[UV6]](s32)260 ; GFX900-NEXT: $vgpr7 = COPY [[UV7]](s32)261 ; GFX900-NEXT: $vgpr8 = COPY [[UV8]](s32)262 ; GFX900-NEXT: $vgpr9 = COPY [[UV9]](s32)263 ; GFX900-NEXT: $vgpr10 = COPY [[UV10]](s32)264 ; GFX900-NEXT: $vgpr11 = COPY [[UV11]](s32)265 ; GFX900-NEXT: $vgpr12 = COPY [[UV12]](s32)266 ; GFX900-NEXT: $vgpr13 = COPY [[UV13]](s32)267 ; GFX900-NEXT: $vgpr14 = COPY [[UV14]](s32)268 ; GFX900-NEXT: $vgpr15 = COPY [[UV15]](s32)269 ; GFX900-NEXT: $vgpr16 = COPY [[UV16]](s32)270 ; GFX900-NEXT: $vgpr17 = COPY [[UV17]](s32)271 ; GFX900-NEXT: $vgpr18 = COPY [[UV18]](s32)272 ; GFX900-NEXT: $vgpr19 = COPY [[UV19]](s32)273 ; GFX900-NEXT: $vgpr20 = COPY [[UV20]](s32)274 ; GFX900-NEXT: $vgpr21 = COPY [[UV21]](s32)275 ; GFX900-NEXT: $vgpr22 = COPY [[UV22]](s32)276 ; GFX900-NEXT: $vgpr23 = COPY [[UV23]](s32)277 ; GFX900-NEXT: $vgpr24 = COPY [[UV24]](s32)278 ; GFX900-NEXT: $vgpr25 = COPY [[UV25]](s32)279 ; GFX900-NEXT: $vgpr26 = COPY [[UV26]](s32)280 ; GFX900-NEXT: $vgpr27 = COPY [[UV27]](s32)281 ; GFX900-NEXT: $vgpr28 = COPY [[UV28]](s32)282 ; GFX900-NEXT: $vgpr29 = COPY [[UV29]](s32)283 ; GFX900-NEXT: $vgpr30 = COPY [[UV30]](s32)284 ; GFX900-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg285 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)286 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY10]](p4)287 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY11]](p4)288 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)289 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY13]](s64)290 ; GFX900-NEXT: $sgpr12 = COPY [[COPY14]](s32)291 ; GFX900-NEXT: $sgpr13 = COPY [[COPY15]](s32)292 ; GFX900-NEXT: $sgpr14 = COPY [[COPY16]](s32)293 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)294 ; GFX900-NEXT: $vgpr31 = COPY [[OR1]](s32)295 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_v32i32, 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 $vgpr31296 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 4, implicit-def $scc297 ; GFX900-NEXT: S_ENDPGM 0298 ;299 ; GFX908-LABEL: name: test_call_external_void_func_v32i32300 ; GFX908: bb.1 (%ir-block.1):301 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11302 ; GFX908-NEXT: {{ $}}303 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr2304 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr1305 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0306 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr16307 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr15308 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr14309 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11310 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7311 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5312 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9313 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0314 ; GFX908-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)315 ; GFX908-NEXT: [[INT:%[0-9]+]]:_(p4) = G_INTRINSIC intrinsic(@llvm.amdgcn.kernarg.segment.ptr)316 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc317 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_v32i32318 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY8]]319 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY7]]320 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(p4) = COPY [[COPY9]](p4)321 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 20322 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY12]], [[C1]](s64)323 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY [[COPY6]]324 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY5]]325 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY4]]326 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY3]]327 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF328 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY2]](s32)329 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)330 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 10331 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY18]], [[C2]](s32)332 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY17]], [[SHL]]333 ; GFX908-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)334 ; GFX908-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 20335 ; GFX908-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY19]], [[C3]](s32)336 ; GFX908-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]337 ; GFX908-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[BUILD_VECTOR]](<32 x s32>)338 ; GFX908-NEXT: [[AMDGPU_WAVE_ADDRESS:%[0-9]+]]:_(p5) = G_AMDGPU_WAVE_ADDRESS $sp_reg339 ; GFX908-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0340 ; GFX908-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C4]](s32)341 ; GFX908-NEXT: G_STORE [[UV31]](s32), [[PTR_ADD1]](p5) :: (store (s32) into stack, align 16, addrspace 5)342 ; GFX908-NEXT: $vgpr0 = COPY [[UV]](s32)343 ; GFX908-NEXT: $vgpr1 = COPY [[UV1]](s32)344 ; GFX908-NEXT: $vgpr2 = COPY [[UV2]](s32)345 ; GFX908-NEXT: $vgpr3 = COPY [[UV3]](s32)346 ; GFX908-NEXT: $vgpr4 = COPY [[UV4]](s32)347 ; GFX908-NEXT: $vgpr5 = COPY [[UV5]](s32)348 ; GFX908-NEXT: $vgpr6 = COPY [[UV6]](s32)349 ; GFX908-NEXT: $vgpr7 = COPY [[UV7]](s32)350 ; GFX908-NEXT: $vgpr8 = COPY [[UV8]](s32)351 ; GFX908-NEXT: $vgpr9 = COPY [[UV9]](s32)352 ; GFX908-NEXT: $vgpr10 = COPY [[UV10]](s32)353 ; GFX908-NEXT: $vgpr11 = COPY [[UV11]](s32)354 ; GFX908-NEXT: $vgpr12 = COPY [[UV12]](s32)355 ; GFX908-NEXT: $vgpr13 = COPY [[UV13]](s32)356 ; GFX908-NEXT: $vgpr14 = COPY [[UV14]](s32)357 ; GFX908-NEXT: $vgpr15 = COPY [[UV15]](s32)358 ; GFX908-NEXT: $vgpr16 = COPY [[UV16]](s32)359 ; GFX908-NEXT: $vgpr17 = COPY [[UV17]](s32)360 ; GFX908-NEXT: $vgpr18 = COPY [[UV18]](s32)361 ; GFX908-NEXT: $vgpr19 = COPY [[UV19]](s32)362 ; GFX908-NEXT: $vgpr20 = COPY [[UV20]](s32)363 ; GFX908-NEXT: $vgpr21 = COPY [[UV21]](s32)364 ; GFX908-NEXT: $vgpr22 = COPY [[UV22]](s32)365 ; GFX908-NEXT: $vgpr23 = COPY [[UV23]](s32)366 ; GFX908-NEXT: $vgpr24 = COPY [[UV24]](s32)367 ; GFX908-NEXT: $vgpr25 = COPY [[UV25]](s32)368 ; GFX908-NEXT: $vgpr26 = COPY [[UV26]](s32)369 ; GFX908-NEXT: $vgpr27 = COPY [[UV27]](s32)370 ; GFX908-NEXT: $vgpr28 = COPY [[UV28]](s32)371 ; GFX908-NEXT: $vgpr29 = COPY [[UV29]](s32)372 ; GFX908-NEXT: $vgpr30 = COPY [[UV30]](s32)373 ; GFX908-NEXT: [[COPY20:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg374 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY20]](<4 x s32>)375 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY10]](p4)376 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY11]](p4)377 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)378 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY13]](s64)379 ; GFX908-NEXT: $sgpr12 = COPY [[COPY14]](s32)380 ; GFX908-NEXT: $sgpr13 = COPY [[COPY15]](s32)381 ; GFX908-NEXT: $sgpr14 = COPY [[COPY16]](s32)382 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)383 ; GFX908-NEXT: $vgpr31 = COPY [[OR1]](s32)384 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_v32i32, 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 $vgpr31385 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 4, implicit-def $scc386 ; GFX908-NEXT: S_ENDPGM 0387 call void @external_void_func_v32i32(<32 x i32> zeroinitializer)388 ret void389}390 391define void @test_func_call_external_void_func_v32i32([17 x i8]) #0 {392 ; GFX900-LABEL: name: test_func_call_external_void_func_v32i32393 ; GFX900: bb.1 (%ir-block.1):394 ; GFX900-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11395 ; GFX900-NEXT: {{ $}}396 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr31397 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr15398 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr14399 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr13400 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr12401 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11402 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr8_sgpr9403 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7404 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5405 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr0406 ; GFX900-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY9]](s32)407 ; GFX900-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)408 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr1409 ; GFX900-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY10]](s32)410 ; GFX900-NEXT: [[TRUNC3:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC2]](s16)411 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr2412 ; GFX900-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[COPY11]](s32)413 ; GFX900-NEXT: [[TRUNC5:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC4]](s16)414 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr3415 ; GFX900-NEXT: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)416 ; GFX900-NEXT: [[TRUNC7:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC6]](s16)417 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr4418 ; GFX900-NEXT: [[TRUNC8:%[0-9]+]]:_(s16) = G_TRUNC [[COPY13]](s32)419 ; GFX900-NEXT: [[TRUNC9:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC8]](s16)420 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr5421 ; GFX900-NEXT: [[TRUNC10:%[0-9]+]]:_(s16) = G_TRUNC [[COPY14]](s32)422 ; GFX900-NEXT: [[TRUNC11:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC10]](s16)423 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr6424 ; GFX900-NEXT: [[TRUNC12:%[0-9]+]]:_(s16) = G_TRUNC [[COPY15]](s32)425 ; GFX900-NEXT: [[TRUNC13:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC12]](s16)426 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr7427 ; GFX900-NEXT: [[TRUNC14:%[0-9]+]]:_(s16) = G_TRUNC [[COPY16]](s32)428 ; GFX900-NEXT: [[TRUNC15:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC14]](s16)429 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr8430 ; GFX900-NEXT: [[TRUNC16:%[0-9]+]]:_(s16) = G_TRUNC [[COPY17]](s32)431 ; GFX900-NEXT: [[TRUNC17:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC16]](s16)432 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr9433 ; GFX900-NEXT: [[TRUNC18:%[0-9]+]]:_(s16) = G_TRUNC [[COPY18]](s32)434 ; GFX900-NEXT: [[TRUNC19:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC18]](s16)435 ; GFX900-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr10436 ; GFX900-NEXT: [[TRUNC20:%[0-9]+]]:_(s16) = G_TRUNC [[COPY19]](s32)437 ; GFX900-NEXT: [[TRUNC21:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC20]](s16)438 ; GFX900-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr11439 ; GFX900-NEXT: [[TRUNC22:%[0-9]+]]:_(s16) = G_TRUNC [[COPY20]](s32)440 ; GFX900-NEXT: [[TRUNC23:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC22]](s16)441 ; GFX900-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr12442 ; GFX900-NEXT: [[TRUNC24:%[0-9]+]]:_(s16) = G_TRUNC [[COPY21]](s32)443 ; GFX900-NEXT: [[TRUNC25:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC24]](s16)444 ; GFX900-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr13445 ; GFX900-NEXT: [[TRUNC26:%[0-9]+]]:_(s16) = G_TRUNC [[COPY22]](s32)446 ; GFX900-NEXT: [[TRUNC27:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC26]](s16)447 ; GFX900-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr14448 ; GFX900-NEXT: [[TRUNC28:%[0-9]+]]:_(s16) = G_TRUNC [[COPY23]](s32)449 ; GFX900-NEXT: [[TRUNC29:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC28]](s16)450 ; GFX900-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr15451 ; GFX900-NEXT: [[TRUNC30:%[0-9]+]]:_(s16) = G_TRUNC [[COPY24]](s32)452 ; GFX900-NEXT: [[TRUNC31:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC30]](s16)453 ; GFX900-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr16454 ; GFX900-NEXT: [[TRUNC32:%[0-9]+]]:_(s16) = G_TRUNC [[COPY25]](s32)455 ; GFX900-NEXT: [[TRUNC33:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC32]](s16)456 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0457 ; GFX900-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)458 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc459 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_v32i32460 ; GFX900-NEXT: [[COPY26:%[0-9]+]]:_(p4) = COPY [[COPY8]]461 ; GFX900-NEXT: [[COPY27:%[0-9]+]]:_(p4) = COPY [[COPY7]]462 ; GFX900-NEXT: [[COPY28:%[0-9]+]]:_(p4) = COPY [[COPY6]]463 ; GFX900-NEXT: [[COPY29:%[0-9]+]]:_(s64) = COPY [[COPY5]]464 ; GFX900-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY [[COPY4]]465 ; GFX900-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY [[COPY3]]466 ; GFX900-NEXT: [[COPY32:%[0-9]+]]:_(s32) = COPY [[COPY2]]467 ; GFX900-NEXT: [[COPY33:%[0-9]+]]:_(s32) = COPY [[COPY1]]468 ; GFX900-NEXT: [[COPY34:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)469 ; GFX900-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[BUILD_VECTOR]](<32 x s32>)470 ; GFX900-NEXT: [[AMDGPU_WAVE_ADDRESS:%[0-9]+]]:_(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32471 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0472 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C1]](s32)473 ; GFX900-NEXT: G_STORE [[UV31]](s32), [[PTR_ADD]](p5) :: (store (s32) into stack, align 16, addrspace 5)474 ; GFX900-NEXT: $vgpr0 = COPY [[UV]](s32)475 ; GFX900-NEXT: $vgpr1 = COPY [[UV1]](s32)476 ; GFX900-NEXT: $vgpr2 = COPY [[UV2]](s32)477 ; GFX900-NEXT: $vgpr3 = COPY [[UV3]](s32)478 ; GFX900-NEXT: $vgpr4 = COPY [[UV4]](s32)479 ; GFX900-NEXT: $vgpr5 = COPY [[UV5]](s32)480 ; GFX900-NEXT: $vgpr6 = COPY [[UV6]](s32)481 ; GFX900-NEXT: $vgpr7 = COPY [[UV7]](s32)482 ; GFX900-NEXT: $vgpr8 = COPY [[UV8]](s32)483 ; GFX900-NEXT: $vgpr9 = COPY [[UV9]](s32)484 ; GFX900-NEXT: $vgpr10 = COPY [[UV10]](s32)485 ; GFX900-NEXT: $vgpr11 = COPY [[UV11]](s32)486 ; GFX900-NEXT: $vgpr12 = COPY [[UV12]](s32)487 ; GFX900-NEXT: $vgpr13 = COPY [[UV13]](s32)488 ; GFX900-NEXT: $vgpr14 = COPY [[UV14]](s32)489 ; GFX900-NEXT: $vgpr15 = COPY [[UV15]](s32)490 ; GFX900-NEXT: $vgpr16 = COPY [[UV16]](s32)491 ; GFX900-NEXT: $vgpr17 = COPY [[UV17]](s32)492 ; GFX900-NEXT: $vgpr18 = COPY [[UV18]](s32)493 ; GFX900-NEXT: $vgpr19 = COPY [[UV19]](s32)494 ; GFX900-NEXT: $vgpr20 = COPY [[UV20]](s32)495 ; GFX900-NEXT: $vgpr21 = COPY [[UV21]](s32)496 ; GFX900-NEXT: $vgpr22 = COPY [[UV22]](s32)497 ; GFX900-NEXT: $vgpr23 = COPY [[UV23]](s32)498 ; GFX900-NEXT: $vgpr24 = COPY [[UV24]](s32)499 ; GFX900-NEXT: $vgpr25 = COPY [[UV25]](s32)500 ; GFX900-NEXT: $vgpr26 = COPY [[UV26]](s32)501 ; GFX900-NEXT: $vgpr27 = COPY [[UV27]](s32)502 ; GFX900-NEXT: $vgpr28 = COPY [[UV28]](s32)503 ; GFX900-NEXT: $vgpr29 = COPY [[UV29]](s32)504 ; GFX900-NEXT: $vgpr30 = COPY [[UV30]](s32)505 ; GFX900-NEXT: [[COPY35:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3506 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY35]](<4 x s32>)507 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY26]](p4)508 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY27]](p4)509 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[COPY28]](p4)510 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY29]](s64)511 ; GFX900-NEXT: $sgpr12 = COPY [[COPY30]](s32)512 ; GFX900-NEXT: $sgpr13 = COPY [[COPY31]](s32)513 ; GFX900-NEXT: $sgpr14 = COPY [[COPY32]](s32)514 ; GFX900-NEXT: $sgpr15 = COPY [[COPY33]](s32)515 ; GFX900-NEXT: $vgpr31 = COPY [[COPY34]](s32)516 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_v32i32, 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 $vgpr31517 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 4, implicit-def $scc518 ; GFX900-NEXT: SI_RETURN519 ;520 ; GFX908-LABEL: name: test_func_call_external_void_func_v32i32521 ; GFX908: bb.1 (%ir-block.1):522 ; GFX908-NEXT: liveins: $sgpr12, $sgpr13, $sgpr14, $sgpr15, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11523 ; GFX908-NEXT: {{ $}}524 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr31525 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr15526 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr14527 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr13528 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr12529 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11530 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr8_sgpr9531 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7532 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5533 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr0534 ; GFX908-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY9]](s32)535 ; GFX908-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)536 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr1537 ; GFX908-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY10]](s32)538 ; GFX908-NEXT: [[TRUNC3:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC2]](s16)539 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr2540 ; GFX908-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[COPY11]](s32)541 ; GFX908-NEXT: [[TRUNC5:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC4]](s16)542 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr3543 ; GFX908-NEXT: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)544 ; GFX908-NEXT: [[TRUNC7:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC6]](s16)545 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr4546 ; GFX908-NEXT: [[TRUNC8:%[0-9]+]]:_(s16) = G_TRUNC [[COPY13]](s32)547 ; GFX908-NEXT: [[TRUNC9:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC8]](s16)548 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr5549 ; GFX908-NEXT: [[TRUNC10:%[0-9]+]]:_(s16) = G_TRUNC [[COPY14]](s32)550 ; GFX908-NEXT: [[TRUNC11:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC10]](s16)551 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr6552 ; GFX908-NEXT: [[TRUNC12:%[0-9]+]]:_(s16) = G_TRUNC [[COPY15]](s32)553 ; GFX908-NEXT: [[TRUNC13:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC12]](s16)554 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr7555 ; GFX908-NEXT: [[TRUNC14:%[0-9]+]]:_(s16) = G_TRUNC [[COPY16]](s32)556 ; GFX908-NEXT: [[TRUNC15:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC14]](s16)557 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr8558 ; GFX908-NEXT: [[TRUNC16:%[0-9]+]]:_(s16) = G_TRUNC [[COPY17]](s32)559 ; GFX908-NEXT: [[TRUNC17:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC16]](s16)560 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr9561 ; GFX908-NEXT: [[TRUNC18:%[0-9]+]]:_(s16) = G_TRUNC [[COPY18]](s32)562 ; GFX908-NEXT: [[TRUNC19:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC18]](s16)563 ; GFX908-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr10564 ; GFX908-NEXT: [[TRUNC20:%[0-9]+]]:_(s16) = G_TRUNC [[COPY19]](s32)565 ; GFX908-NEXT: [[TRUNC21:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC20]](s16)566 ; GFX908-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr11567 ; GFX908-NEXT: [[TRUNC22:%[0-9]+]]:_(s16) = G_TRUNC [[COPY20]](s32)568 ; GFX908-NEXT: [[TRUNC23:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC22]](s16)569 ; GFX908-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr12570 ; GFX908-NEXT: [[TRUNC24:%[0-9]+]]:_(s16) = G_TRUNC [[COPY21]](s32)571 ; GFX908-NEXT: [[TRUNC25:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC24]](s16)572 ; GFX908-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr13573 ; GFX908-NEXT: [[TRUNC26:%[0-9]+]]:_(s16) = G_TRUNC [[COPY22]](s32)574 ; GFX908-NEXT: [[TRUNC27:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC26]](s16)575 ; GFX908-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr14576 ; GFX908-NEXT: [[TRUNC28:%[0-9]+]]:_(s16) = G_TRUNC [[COPY23]](s32)577 ; GFX908-NEXT: [[TRUNC29:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC28]](s16)578 ; GFX908-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr15579 ; GFX908-NEXT: [[TRUNC30:%[0-9]+]]:_(s16) = G_TRUNC [[COPY24]](s32)580 ; GFX908-NEXT: [[TRUNC31:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC30]](s16)581 ; GFX908-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr16582 ; GFX908-NEXT: [[TRUNC32:%[0-9]+]]:_(s16) = G_TRUNC [[COPY25]](s32)583 ; GFX908-NEXT: [[TRUNC33:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC32]](s16)584 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0585 ; GFX908-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)586 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc587 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_v32i32588 ; GFX908-NEXT: [[COPY26:%[0-9]+]]:_(p4) = COPY [[COPY8]]589 ; GFX908-NEXT: [[COPY27:%[0-9]+]]:_(p4) = COPY [[COPY7]]590 ; GFX908-NEXT: [[COPY28:%[0-9]+]]:_(p4) = COPY [[COPY6]]591 ; GFX908-NEXT: [[COPY29:%[0-9]+]]:_(s64) = COPY [[COPY5]]592 ; GFX908-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY [[COPY4]]593 ; GFX908-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY [[COPY3]]594 ; GFX908-NEXT: [[COPY32:%[0-9]+]]:_(s32) = COPY [[COPY2]]595 ; GFX908-NEXT: [[COPY33:%[0-9]+]]:_(s32) = COPY [[COPY1]]596 ; GFX908-NEXT: [[COPY34:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)597 ; GFX908-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[BUILD_VECTOR]](<32 x s32>)598 ; GFX908-NEXT: [[AMDGPU_WAVE_ADDRESS:%[0-9]+]]:_(p5) = G_AMDGPU_WAVE_ADDRESS $sgpr32599 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0600 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[AMDGPU_WAVE_ADDRESS]], [[C1]](s32)601 ; GFX908-NEXT: G_STORE [[UV31]](s32), [[PTR_ADD]](p5) :: (store (s32) into stack, align 16, addrspace 5)602 ; GFX908-NEXT: $vgpr0 = COPY [[UV]](s32)603 ; GFX908-NEXT: $vgpr1 = COPY [[UV1]](s32)604 ; GFX908-NEXT: $vgpr2 = COPY [[UV2]](s32)605 ; GFX908-NEXT: $vgpr3 = COPY [[UV3]](s32)606 ; GFX908-NEXT: $vgpr4 = COPY [[UV4]](s32)607 ; GFX908-NEXT: $vgpr5 = COPY [[UV5]](s32)608 ; GFX908-NEXT: $vgpr6 = COPY [[UV6]](s32)609 ; GFX908-NEXT: $vgpr7 = COPY [[UV7]](s32)610 ; GFX908-NEXT: $vgpr8 = COPY [[UV8]](s32)611 ; GFX908-NEXT: $vgpr9 = COPY [[UV9]](s32)612 ; GFX908-NEXT: $vgpr10 = COPY [[UV10]](s32)613 ; GFX908-NEXT: $vgpr11 = COPY [[UV11]](s32)614 ; GFX908-NEXT: $vgpr12 = COPY [[UV12]](s32)615 ; GFX908-NEXT: $vgpr13 = COPY [[UV13]](s32)616 ; GFX908-NEXT: $vgpr14 = COPY [[UV14]](s32)617 ; GFX908-NEXT: $vgpr15 = COPY [[UV15]](s32)618 ; GFX908-NEXT: $vgpr16 = COPY [[UV16]](s32)619 ; GFX908-NEXT: $vgpr17 = COPY [[UV17]](s32)620 ; GFX908-NEXT: $vgpr18 = COPY [[UV18]](s32)621 ; GFX908-NEXT: $vgpr19 = COPY [[UV19]](s32)622 ; GFX908-NEXT: $vgpr20 = COPY [[UV20]](s32)623 ; GFX908-NEXT: $vgpr21 = COPY [[UV21]](s32)624 ; GFX908-NEXT: $vgpr22 = COPY [[UV22]](s32)625 ; GFX908-NEXT: $vgpr23 = COPY [[UV23]](s32)626 ; GFX908-NEXT: $vgpr24 = COPY [[UV24]](s32)627 ; GFX908-NEXT: $vgpr25 = COPY [[UV25]](s32)628 ; GFX908-NEXT: $vgpr26 = COPY [[UV26]](s32)629 ; GFX908-NEXT: $vgpr27 = COPY [[UV27]](s32)630 ; GFX908-NEXT: $vgpr28 = COPY [[UV28]](s32)631 ; GFX908-NEXT: $vgpr29 = COPY [[UV29]](s32)632 ; GFX908-NEXT: $vgpr30 = COPY [[UV30]](s32)633 ; GFX908-NEXT: [[COPY35:%[0-9]+]]:_(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3634 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY35]](<4 x s32>)635 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY26]](p4)636 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY27]](p4)637 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[COPY28]](p4)638 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY29]](s64)639 ; GFX908-NEXT: $sgpr12 = COPY [[COPY30]](s32)640 ; GFX908-NEXT: $sgpr13 = COPY [[COPY31]](s32)641 ; GFX908-NEXT: $sgpr14 = COPY [[COPY32]](s32)642 ; GFX908-NEXT: $sgpr15 = COPY [[COPY33]](s32)643 ; GFX908-NEXT: $vgpr31 = COPY [[COPY34]](s32)644 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_v32i32, 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 $vgpr31645 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 4, implicit-def $scc646 ; GFX908-NEXT: SI_RETURN647 call void @external_void_func_v32i32(<32 x i32> zeroinitializer)648 ret void649}650 651define amdgpu_kernel void @test_only_workitem_id_x() #0 !reqd_work_group_size !0 {652 ; GFX900-LABEL: name: test_only_workitem_id_x653 ; GFX900: bb.1 (%ir-block.0):654 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11655 ; GFX900-NEXT: {{ $}}656 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0657 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr16658 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr15659 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr14660 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11661 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7662 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5663 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9664 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42665 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc666 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32667 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY [[COPY6]]668 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY5]]669 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)670 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0671 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY10]], [[C1]](s64)672 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY [[COPY4]]673 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY [[COPY3]]674 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY2]]675 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY1]]676 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF677 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)678 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)679 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg680 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY16]](<4 x s32>)681 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY8]](p4)682 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY9]](p4)683 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)684 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY11]](s64)685 ; GFX900-NEXT: $sgpr12 = COPY [[COPY12]](s32)686 ; GFX900-NEXT: $sgpr13 = COPY [[COPY13]](s32)687 ; GFX900-NEXT: $sgpr14 = COPY [[COPY14]](s32)688 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)689 ; GFX900-NEXT: $vgpr31 = COPY [[COPY15]](s32)690 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31691 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc692 ; GFX900-NEXT: S_ENDPGM 0693 ;694 ; GFX908-LABEL: name: test_only_workitem_id_x695 ; GFX908: bb.1 (%ir-block.0):696 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11697 ; GFX908-NEXT: {{ $}}698 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0699 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr16700 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr15701 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr14702 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11703 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7704 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5705 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9706 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42707 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc708 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32709 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY [[COPY6]]710 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY5]]711 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)712 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0713 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY10]], [[C1]](s64)714 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY [[COPY4]]715 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY [[COPY3]]716 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY2]]717 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY1]]718 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF719 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)720 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)721 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg722 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY16]](<4 x s32>)723 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY8]](p4)724 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY9]](p4)725 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)726 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY11]](s64)727 ; GFX908-NEXT: $sgpr12 = COPY [[COPY12]](s32)728 ; GFX908-NEXT: $sgpr13 = COPY [[COPY13]](s32)729 ; GFX908-NEXT: $sgpr14 = COPY [[COPY14]](s32)730 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)731 ; GFX908-NEXT: $vgpr31 = COPY [[COPY15]](s32)732 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31733 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc734 ; GFX908-NEXT: S_ENDPGM 0735 call void @external_void_func_i32(i32 42)736 ret void737}738 739define amdgpu_kernel void @test_only_workitem_id_y() #0 !reqd_work_group_size !1 {740 ; GFX900-LABEL: name: test_only_workitem_id_y741 ; GFX900: bb.1 (%ir-block.0):742 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr1, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11743 ; GFX900-NEXT: {{ $}}744 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr1745 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr16746 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr15747 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr14748 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11749 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7750 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5751 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9752 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42753 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc754 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32755 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY [[COPY6]]756 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY5]]757 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)758 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0759 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY10]], [[C1]](s64)760 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY [[COPY4]]761 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY [[COPY3]]762 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY2]]763 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY1]]764 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF765 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0766 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)767 ; GFX900-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 10768 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY15]], [[C3]](s32)769 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL]]770 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)771 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg772 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY16]](<4 x s32>)773 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY8]](p4)774 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY9]](p4)775 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)776 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY11]](s64)777 ; GFX900-NEXT: $sgpr12 = COPY [[COPY12]](s32)778 ; GFX900-NEXT: $sgpr13 = COPY [[COPY13]](s32)779 ; GFX900-NEXT: $sgpr14 = COPY [[COPY14]](s32)780 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)781 ; GFX900-NEXT: $vgpr31 = COPY [[OR]](s32)782 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31783 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc784 ; GFX900-NEXT: S_ENDPGM 0785 ;786 ; GFX908-LABEL: name: test_only_workitem_id_y787 ; GFX908: bb.1 (%ir-block.0):788 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr1, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11789 ; GFX908-NEXT: {{ $}}790 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr1791 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr16792 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr15793 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr14794 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11795 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7796 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5797 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9798 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42799 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc800 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32801 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY [[COPY6]]802 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY5]]803 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)804 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0805 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY10]], [[C1]](s64)806 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY [[COPY4]]807 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY [[COPY3]]808 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY2]]809 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY1]]810 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF811 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0812 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)813 ; GFX908-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 10814 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY15]], [[C3]](s32)815 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL]]816 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)817 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg818 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY16]](<4 x s32>)819 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY8]](p4)820 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY9]](p4)821 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)822 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY11]](s64)823 ; GFX908-NEXT: $sgpr12 = COPY [[COPY12]](s32)824 ; GFX908-NEXT: $sgpr13 = COPY [[COPY13]](s32)825 ; GFX908-NEXT: $sgpr14 = COPY [[COPY14]](s32)826 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)827 ; GFX908-NEXT: $vgpr31 = COPY [[OR]](s32)828 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31829 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc830 ; GFX908-NEXT: S_ENDPGM 0831 call void @external_void_func_i32(i32 42)832 ret void833}834 835define amdgpu_kernel void @test_only_workitem_id_z() #0 !reqd_work_group_size !2 {836 ; GFX900-LABEL: name: test_only_workitem_id_z837 ; GFX900: bb.1 (%ir-block.0):838 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11839 ; GFX900-NEXT: {{ $}}840 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr2841 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr16842 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr15843 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr14844 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11845 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7846 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5847 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9848 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42849 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc850 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32851 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY [[COPY6]]852 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY5]]853 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)854 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0855 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY10]], [[C1]](s64)856 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY [[COPY4]]857 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY [[COPY3]]858 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY2]]859 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY1]]860 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF861 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0862 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)863 ; GFX900-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 20864 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY15]], [[C3]](s32)865 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL]]866 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)867 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg868 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY16]](<4 x s32>)869 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY8]](p4)870 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY9]](p4)871 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)872 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY11]](s64)873 ; GFX900-NEXT: $sgpr12 = COPY [[COPY12]](s32)874 ; GFX900-NEXT: $sgpr13 = COPY [[COPY13]](s32)875 ; GFX900-NEXT: $sgpr14 = COPY [[COPY14]](s32)876 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)877 ; GFX900-NEXT: $vgpr31 = COPY [[OR]](s32)878 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31879 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc880 ; GFX900-NEXT: S_ENDPGM 0881 ;882 ; GFX908-LABEL: name: test_only_workitem_id_z883 ; GFX908: bb.1 (%ir-block.0):884 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11885 ; GFX908-NEXT: {{ $}}886 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr2887 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr16888 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr15889 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr14890 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11891 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7892 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5893 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9894 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42895 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc896 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32897 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY [[COPY6]]898 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY5]]899 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY7]](p4)900 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0901 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY10]], [[C1]](s64)902 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY [[COPY4]]903 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY [[COPY3]]904 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY2]]905 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY1]]906 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF907 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0908 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)909 ; GFX908-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 20910 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY15]], [[C3]](s32)911 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL]]912 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)913 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg914 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY16]](<4 x s32>)915 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY8]](p4)916 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY9]](p4)917 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)918 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY11]](s64)919 ; GFX908-NEXT: $sgpr12 = COPY [[COPY12]](s32)920 ; GFX908-NEXT: $sgpr13 = COPY [[COPY13]](s32)921 ; GFX908-NEXT: $sgpr14 = COPY [[COPY14]](s32)922 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)923 ; GFX908-NEXT: $vgpr31 = COPY [[OR]](s32)924 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31925 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc926 ; GFX908-NEXT: S_ENDPGM 0927 call void @external_void_func_i32(i32 42)928 ret void929}930 931define amdgpu_kernel void @test_only_workitem_id_xy() #0 !reqd_work_group_size !3 {932 ; GFX900-LABEL: name: test_only_workitem_id_xy933 ; GFX900: bb.1 (%ir-block.0):934 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr1, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11935 ; GFX900-NEXT: {{ $}}936 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr1937 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0938 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr16939 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr15940 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr14941 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11942 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7943 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5944 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9945 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42946 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc947 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32948 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY7]]949 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY6]]950 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)951 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0952 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY11]], [[C1]](s64)953 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]954 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]955 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]956 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]957 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF958 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)959 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)960 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 10961 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY17]], [[C2]](s32)962 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY16]], [[SHL]]963 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)964 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg965 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)966 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)967 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)968 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)969 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)970 ; GFX900-NEXT: $sgpr12 = COPY [[COPY13]](s32)971 ; GFX900-NEXT: $sgpr13 = COPY [[COPY14]](s32)972 ; GFX900-NEXT: $sgpr14 = COPY [[COPY15]](s32)973 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)974 ; GFX900-NEXT: $vgpr31 = COPY [[OR]](s32)975 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr31976 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc977 ; GFX900-NEXT: S_ENDPGM 0978 ;979 ; GFX908-LABEL: name: test_only_workitem_id_xy980 ; GFX908: bb.1 (%ir-block.0):981 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr1, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11982 ; GFX908-NEXT: {{ $}}983 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr1984 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0985 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr16986 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr15987 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr14988 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr11989 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr7990 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5991 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9992 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42993 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc994 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i32995 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY7]]996 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY6]]997 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)998 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0999 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY11]], [[C1]](s64)1000 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]1001 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]1002 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]1003 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]1004 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF1005 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1006 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1007 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 101008 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY17]], [[C2]](s32)1009 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY16]], [[SHL]]1010 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)1011 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg1012 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)1013 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)1014 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)1015 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)1016 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)1017 ; GFX908-NEXT: $sgpr12 = COPY [[COPY13]](s32)1018 ; GFX908-NEXT: $sgpr13 = COPY [[COPY14]](s32)1019 ; GFX908-NEXT: $sgpr14 = COPY [[COPY15]](s32)1020 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)1021 ; GFX908-NEXT: $vgpr31 = COPY [[OR]](s32)1022 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr311023 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc1024 ; GFX908-NEXT: S_ENDPGM 01025 call void @external_void_func_i32(i32 42)1026 ret void1027}1028 1029define amdgpu_kernel void @test_only_workitem_id_yz() #0 !reqd_work_group_size !4 {1030 ; GFX900-LABEL: name: test_only_workitem_id_yz1031 ; GFX900: bb.1 (%ir-block.0):1032 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111033 ; GFX900-NEXT: {{ $}}1034 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr21035 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr11036 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr161037 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr151038 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr141039 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr111040 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr71041 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr51042 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr91043 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 421044 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc1045 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i321046 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY7]]1047 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY6]]1048 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1049 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 01050 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY11]], [[C1]](s64)1051 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]1052 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]1053 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]1054 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]1055 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF1056 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 01057 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1058 ; GFX900-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 101059 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY16]], [[C3]](s32)1060 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL]]1061 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1062 ; GFX900-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 201063 ; GFX900-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY17]], [[C4]](s32)1064 ; GFX900-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1065 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)1066 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg1067 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)1068 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)1069 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)1070 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)1071 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)1072 ; GFX900-NEXT: $sgpr12 = COPY [[COPY13]](s32)1073 ; GFX900-NEXT: $sgpr13 = COPY [[COPY14]](s32)1074 ; GFX900-NEXT: $sgpr14 = COPY [[COPY15]](s32)1075 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)1076 ; GFX900-NEXT: $vgpr31 = COPY [[OR1]](s32)1077 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr311078 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc1079 ; GFX900-NEXT: S_ENDPGM 01080 ;1081 ; GFX908-LABEL: name: test_only_workitem_id_yz1082 ; GFX908: bb.1 (%ir-block.0):1083 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111084 ; GFX908-NEXT: {{ $}}1085 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr21086 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr11087 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr161088 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr151089 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr141090 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr111091 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr71092 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr51093 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr91094 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 421095 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc1096 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i321097 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY7]]1098 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY6]]1099 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1100 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 01101 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY11]], [[C1]](s64)1102 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]1103 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]1104 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]1105 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]1106 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF1107 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 01108 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1109 ; GFX908-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 101110 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY16]], [[C3]](s32)1111 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL]]1112 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1113 ; GFX908-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 201114 ; GFX908-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY17]], [[C4]](s32)1115 ; GFX908-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1116 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)1117 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg1118 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)1119 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)1120 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)1121 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)1122 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)1123 ; GFX908-NEXT: $sgpr12 = COPY [[COPY13]](s32)1124 ; GFX908-NEXT: $sgpr13 = COPY [[COPY14]](s32)1125 ; GFX908-NEXT: $sgpr14 = COPY [[COPY15]](s32)1126 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)1127 ; GFX908-NEXT: $vgpr31 = COPY [[OR1]](s32)1128 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr311129 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc1130 ; GFX908-NEXT: S_ENDPGM 01131 call void @external_void_func_i32(i32 42)1132 ret void1133}1134 1135define amdgpu_kernel void @test_only_workitem_id_xz() #0 !reqd_work_group_size !5 {1136 ; GFX900-LABEL: name: test_only_workitem_id_xz1137 ; GFX900: bb.1 (%ir-block.0):1138 ; GFX900-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111139 ; GFX900-NEXT: {{ $}}1140 ; GFX900-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr21141 ; GFX900-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr01142 ; GFX900-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr161143 ; GFX900-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr151144 ; GFX900-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr141145 ; GFX900-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr111146 ; GFX900-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr71147 ; GFX900-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr51148 ; GFX900-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr91149 ; GFX900-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 421150 ; GFX900-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc1151 ; GFX900-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i321152 ; GFX900-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY7]]1153 ; GFX900-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY6]]1154 ; GFX900-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1155 ; GFX900-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 01156 ; GFX900-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY11]], [[C1]](s64)1157 ; GFX900-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]1158 ; GFX900-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]1159 ; GFX900-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]1160 ; GFX900-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]1161 ; GFX900-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF1162 ; GFX900-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1163 ; GFX900-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1164 ; GFX900-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 201165 ; GFX900-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY17]], [[C2]](s32)1166 ; GFX900-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY16]], [[SHL]]1167 ; GFX900-NEXT: $vgpr0 = COPY [[C]](s32)1168 ; GFX900-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg1169 ; GFX900-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)1170 ; GFX900-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)1171 ; GFX900-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)1172 ; GFX900-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)1173 ; GFX900-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)1174 ; GFX900-NEXT: $sgpr12 = COPY [[COPY13]](s32)1175 ; GFX900-NEXT: $sgpr13 = COPY [[COPY14]](s32)1176 ; GFX900-NEXT: $sgpr14 = COPY [[COPY15]](s32)1177 ; GFX900-NEXT: $sgpr15 = COPY [[DEF]](s32)1178 ; GFX900-NEXT: $vgpr31 = COPY [[OR]](s32)1179 ; GFX900-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr311180 ; GFX900-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc1181 ; GFX900-NEXT: S_ENDPGM 01182 ;1183 ; GFX908-LABEL: name: test_only_workitem_id_xz1184 ; GFX908: bb.1 (%ir-block.0):1185 ; GFX908-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr111186 ; GFX908-NEXT: {{ $}}1187 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr21188 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr01189 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr161190 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr151191 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr141192 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr10_sgpr111193 ; GFX908-NEXT: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr6_sgpr71194 ; GFX908-NEXT: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr51195 ; GFX908-NEXT: [[COPY8:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr91196 ; GFX908-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 421197 ; GFX908-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $scc1198 ; GFX908-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_void_func_i321199 ; GFX908-NEXT: [[COPY9:%[0-9]+]]:_(p4) = COPY [[COPY7]]1200 ; GFX908-NEXT: [[COPY10:%[0-9]+]]:_(p4) = COPY [[COPY6]]1201 ; GFX908-NEXT: [[COPY11:%[0-9]+]]:_(p4) = COPY [[COPY8]](p4)1202 ; GFX908-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 01203 ; GFX908-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY11]], [[C1]](s64)1204 ; GFX908-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY [[COPY5]]1205 ; GFX908-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY [[COPY4]]1206 ; GFX908-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY [[COPY3]]1207 ; GFX908-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY [[COPY2]]1208 ; GFX908-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF1209 ; GFX908-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32)1210 ; GFX908-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)1211 ; GFX908-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 201212 ; GFX908-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY17]], [[C2]](s32)1213 ; GFX908-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[COPY16]], [[SHL]]1214 ; GFX908-NEXT: $vgpr0 = COPY [[C]](s32)1215 ; GFX908-NEXT: [[COPY18:%[0-9]+]]:_(<4 x s32>) = COPY $private_rsrc_reg1216 ; GFX908-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[COPY18]](<4 x s32>)1217 ; GFX908-NEXT: $sgpr4_sgpr5 = COPY [[COPY9]](p4)1218 ; GFX908-NEXT: $sgpr6_sgpr7 = COPY [[COPY10]](p4)1219 ; GFX908-NEXT: $sgpr8_sgpr9 = COPY [[PTR_ADD]](p4)1220 ; GFX908-NEXT: $sgpr10_sgpr11 = COPY [[COPY12]](s64)1221 ; GFX908-NEXT: $sgpr12 = COPY [[COPY13]](s32)1222 ; GFX908-NEXT: $sgpr13 = COPY [[COPY14]](s32)1223 ; GFX908-NEXT: $sgpr14 = COPY [[COPY15]](s32)1224 ; GFX908-NEXT: $sgpr15 = COPY [[DEF]](s32)1225 ; GFX908-NEXT: $vgpr31 = COPY [[OR]](s32)1226 ; GFX908-NEXT: $sgpr30_sgpr31 = noconvergent G_SI_CALL [[GV]](p0), @external_void_func_i32, 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 $vgpr311227 ; GFX908-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $scc1228 ; GFX908-NEXT: S_ENDPGM 01229 call void @external_void_func_i32(i32 42)1230 ret void1231}1232 1233declare i32 @llvm.amdgcn.workitem.id.x() #11234declare i32 @llvm.amdgcn.workitem.id.y() #11235declare i32 @llvm.amdgcn.workitem.id.z() #11236 1237attributes #0 = { nounwind }1238attributes #1 = { nounwind readnone speculatable willreturn }1239 1240!llvm.module.flags = !{!6}1241!0 = !{i32 64, i32 1, i32 1}1242!1 = !{i32 1, i32 64, i32 1}1243!2 = !{i32 1, i32 1, i32 64}1244!3 = !{i32 32, i32 2, i32 1}1245!4 = !{i32 1, i32 32, i32 2}1246!5 = !{i32 32, i32 1, i32 2}1247!6 = !{i32 1, !"amdhsa_code_object_version", i32 500}1248