| ; Test generation of _dvgpr$ symbol for an amdgpu_cs_chain function with dynamic vgprs. | |
| ; RUN: llc -mtriple=amdgpu12.00-amd-amdpal < %s | FileCheck -check-prefixes=DVGPR %s | |
| ; Function with 0 VGPRs, which counts as 1 block. | |
| ; | |
| ; DVGPR-LABEL: func0: | |
| ; DVGPR: .set _dvgpr$func0, func0+0 | |
| ; | |
| define amdgpu_cs_chain void @func0() #0 { | |
| ret void | |
| } | |
| ; Function with 21 VGPRs, which is 2 blocks. | |
| ; | |
| ; DVGPR-LABEL: func21: | |
| ; DVGPR: .set .Lfunc21.num_vgpr, 21 | |
| ; DVGPR: .set _dvgpr$func21, func21+8 | |
| ; | |
| define amdgpu_cs_chain void @func21(<13 x float> %arg) #0 { | |
| tail call void @func21(<13 x float> %arg) | |
| ret void | |
| } | |
| ; Anonymous function with 87 VGPRs, which is 6 blocks. | |
| ; | |
| ; DVGPR: [[FUNC87:__unnamed[^:]*]]: | |
| ; DVGPR: .set .L[[FUNC87]].num_vgpr, 87 | |
| ; DVGPR: .set _dvgpr$[[FUNC87]], [[FUNC87]]+40 | |
| ; | |
| define amdgpu_cs_chain void @0(<79 x float> %arg) #0 { | |
| tail call void @0(<79 x float> %arg) | |
| ret void | |
| } | |
| ; Function with 128 VGPRs, which is 8 blocks. | |
| ; | |
| ; DVGPR-LABEL: func128: | |
| ; DVGPR: .set .Lfunc128.num_vgpr, 128 | |
| ; DVGPR: .set _dvgpr$func128, func128+56 | |
| ; | |
| define amdgpu_cs_chain void @func128(<120 x float> %arg) #0 { | |
| tail call void @func128(<120 x float> %arg) | |
| ret void | |
| } | |
| ; Function with 79 VGPRs, which is 3 blocks with a block size of 32. | |
| ; | |
| ; DVGPR-LABEL: func79: | |
| ; DVGPR: .set .Lfunc79.num_vgpr, 79 | |
| ; DVGPR: .set _dvgpr$func79, func79+16 | |
| ; | |
| define amdgpu_cs_chain void @func79(<71 x float> %arg) #1 { | |
| tail call void @func79(<71 x float> %arg) | |
| ret void | |
| } | |
| ; Function with 225 VGPRs, which is 8 blocks with a block size of 32. | |
| ; | |
| ; DVGPR-LABEL: func225: | |
| ; DVGPR: .set .Lfunc225.num_vgpr, 225 | |
| ; DVGPR: .set _dvgpr$func225, func225+56 | |
| ; | |
| define amdgpu_cs_chain void @func225(<217 x float> %arg) #1 { | |
| tail call void @func225(<217 x float> %arg) | |
| ret void | |
| } | |
| attributes #0 = { "amdgpu-dynamic-vgpr-block-size"="16" } | |
| attributes #1 = { "amdgpu-dynamic-vgpr-block-size"="32" } |