228 lines · plain
1; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck %s2 3; Exactly 1 wave per execution unit.4; CHECK-LABEL: {{^}}empty_exactly_1:5; CHECK: SGPRBlocks: 126; CHECK: VGPRBlocks: 327; CHECK: NumSGPRsForWavesPerEU: 1028; CHECK: NumVGPRsForWavesPerEU: 1299define amdgpu_kernel void @empty_exactly_1() #0 {10entry:11 ret void12}13attributes #0 = {"amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="1,64" }14 15; Exactly 5 waves per execution unit.16; CHECK-LABEL: {{^}}empty_exactly_5:17; CHECK: SGPRBlocks: 1218; CHECK: VGPRBlocks: 1019; CHECK: NumSGPRsForWavesPerEU: 10220; CHECK: NumVGPRsForWavesPerEU: 4121define amdgpu_kernel void @empty_exactly_5() #1 {22entry:23 ret void24}25attributes #1 = {"amdgpu-waves-per-eu"="5,5"}26 27; Exactly 10 waves per execution unit.28; CHECK-LABEL: {{^}}empty_exactly_10:29; CHECK: SGPRBlocks: 030; CHECK: VGPRBlocks: 031; CHECK: NumSGPRsForWavesPerEU: 132; CHECK: NumVGPRsForWavesPerEU: 133define amdgpu_kernel void @empty_exactly_10() #2 {34entry:35 ret void36}37attributes #2 = {"amdgpu-waves-per-eu"="10,10"}38 39; At least 1 wave per execution unit.40; CHECK-LABEL: {{^}}empty_at_least_1:41; CHECK: SGPRBlocks: 042; CHECK: VGPRBlocks: 043; CHECK: NumSGPRsForWavesPerEU: 144; CHECK: NumVGPRsForWavesPerEU: 145define amdgpu_kernel void @empty_at_least_1() #3 {46entry:47 ret void48}49attributes #3 = {"amdgpu-waves-per-eu"="1"}50 51; At least 5 waves per execution unit.52; CHECK-LABEL: {{^}}empty_at_least_5:53; CHECK: SGPRBlocks: 054; CHECK: VGPRBlocks: 055; CHECK: NumSGPRsForWavesPerEU: 156; CHECK: NumVGPRsForWavesPerEU: 157define amdgpu_kernel void @empty_at_least_5() #4 {58entry:59 ret void60}61attributes #4 = {"amdgpu-waves-per-eu"="5"}62 63; At least 10 waves per execution unit.64; CHECK-LABEL: {{^}}empty_at_least_10:65; CHECK: SGPRBlocks: 066; CHECK: VGPRBlocks: 067; CHECK: NumSGPRsForWavesPerEU: 168; CHECK: NumVGPRsForWavesPerEU: 169define amdgpu_kernel void @empty_at_least_10() #5 {70entry:71 ret void72}73attributes #5 = {"amdgpu-waves-per-eu"="10"}74 75; At most 1 wave per execution unit (same as @empty_exactly_1).76 77; At most 5 waves per execution unit.78; CHECK-LABEL: {{^}}empty_at_most_5:79; CHECK: SGPRBlocks: 1280; CHECK: VGPRBlocks: 1081; CHECK: NumSGPRsForWavesPerEU: 10282; CHECK: NumVGPRsForWavesPerEU: 4183define amdgpu_kernel void @empty_at_most_5() #6 {84entry:85 ret void86}87attributes #6 = {"amdgpu-waves-per-eu"="1,5" "amdgpu-flat-work-group-size"="1,64"}88 89; At most 10 waves per execution unit.90; CHECK-LABEL: {{^}}empty_at_most_10:91; CHECK: SGPRBlocks: 092; CHECK: VGPRBlocks: 093; CHECK: NumSGPRsForWavesPerEU: 194; CHECK: NumVGPRsForWavesPerEU: 195define amdgpu_kernel void @empty_at_most_10() #7 {96entry:97 ret void98}99attributes #7 = {"amdgpu-waves-per-eu"="1,10"}100 101; Between 1 and 5 waves per execution unit (same as @empty_at_most_5).102 103; Between 5 and 10 waves per execution unit.104; CHECK-LABEL: {{^}}empty_between_5_and_10:105; CHECK: SGPRBlocks: 0106; CHECK: VGPRBlocks: 0107; CHECK: NumSGPRsForWavesPerEU: 1108; CHECK: NumVGPRsForWavesPerEU: 1109define amdgpu_kernel void @empty_between_5_and_10() #8 {110entry:111 ret void112}113attributes #8 = {"amdgpu-waves-per-eu"="5,10"}114 115@var = addrspace(1) global float 0.0116 117; Exactly 10 waves per execution unit.118; CHECK-LABEL: {{^}}exactly_10:119; CHECK: SGPRBlocks: 3120; CHECK: VGPRBlocks: 5121; CHECK: NumSGPRsForWavesPerEU: 30122; CHECK: NumVGPRsForWavesPerEU: 24123define amdgpu_kernel void @exactly_10() #9 {124 %val0 = load volatile float, ptr addrspace(1) @var125 %val1 = load volatile float, ptr addrspace(1) @var126 %val2 = load volatile float, ptr addrspace(1) @var127 %val3 = load volatile float, ptr addrspace(1) @var128 %val4 = load volatile float, ptr addrspace(1) @var129 %val5 = load volatile float, ptr addrspace(1) @var130 %val6 = load volatile float, ptr addrspace(1) @var131 %val7 = load volatile float, ptr addrspace(1) @var132 %val8 = load volatile float, ptr addrspace(1) @var133 %val9 = load volatile float, ptr addrspace(1) @var134 %val10 = load volatile float, ptr addrspace(1) @var135 %val11 = load volatile float, ptr addrspace(1) @var136 %val12 = load volatile float, ptr addrspace(1) @var137 %val13 = load volatile float, ptr addrspace(1) @var138 %val14 = load volatile float, ptr addrspace(1) @var139 %val15 = load volatile float, ptr addrspace(1) @var140 %val16 = load volatile float, ptr addrspace(1) @var141 %val17 = load volatile float, ptr addrspace(1) @var142 %val18 = load volatile float, ptr addrspace(1) @var143 %val19 = load volatile float, ptr addrspace(1) @var144 %val20 = load volatile float, ptr addrspace(1) @var145 %val21 = load volatile float, ptr addrspace(1) @var146 %val22 = load volatile float, ptr addrspace(1) @var147 %val23 = load volatile float, ptr addrspace(1) @var148 %val24 = load volatile float, ptr addrspace(1) @var149 %val25 = load volatile float, ptr addrspace(1) @var150 %val26 = load volatile float, ptr addrspace(1) @var151 %val27 = load volatile float, ptr addrspace(1) @var152 %val28 = load volatile float, ptr addrspace(1) @var153 %val29 = load volatile float, ptr addrspace(1) @var154 %val30 = load volatile float, ptr addrspace(1) @var155 156 store volatile float %val0, ptr addrspace(1) @var157 store volatile float %val1, ptr addrspace(1) @var158 store volatile float %val2, ptr addrspace(1) @var159 store volatile float %val3, ptr addrspace(1) @var160 store volatile float %val4, ptr addrspace(1) @var161 store volatile float %val5, ptr addrspace(1) @var162 store volatile float %val6, ptr addrspace(1) @var163 store volatile float %val7, ptr addrspace(1) @var164 store volatile float %val8, ptr addrspace(1) @var165 store volatile float %val9, ptr addrspace(1) @var166 store volatile float %val10, ptr addrspace(1) @var167 store volatile float %val11, ptr addrspace(1) @var168 store volatile float %val12, ptr addrspace(1) @var169 store volatile float %val13, ptr addrspace(1) @var170 store volatile float %val14, ptr addrspace(1) @var171 store volatile float %val15, ptr addrspace(1) @var172 store volatile float %val16, ptr addrspace(1) @var173 store volatile float %val17, ptr addrspace(1) @var174 store volatile float %val18, ptr addrspace(1) @var175 store volatile float %val19, ptr addrspace(1) @var176 store volatile float %val20, ptr addrspace(1) @var177 store volatile float %val21, ptr addrspace(1) @var178 store volatile float %val22, ptr addrspace(1) @var179 store volatile float %val23, ptr addrspace(1) @var180 store volatile float %val24, ptr addrspace(1) @var181 store volatile float %val25, ptr addrspace(1) @var182 store volatile float %val26, ptr addrspace(1) @var183 store volatile float %val27, ptr addrspace(1) @var184 store volatile float %val28, ptr addrspace(1) @var185 store volatile float %val29, ptr addrspace(1) @var186 store volatile float %val30, ptr addrspace(1) @var187 188 ret void189}190attributes #9 = {"amdgpu-waves-per-eu"="10,10"}191 192; Exactly 256 workitems and exactly 2 waves.193; CHECK-LABEL: {{^}}empty_workitems_exactly_256_waves_exactly_2:194; CHECK: SGPRBlocks: 12195; CHECK: VGPRBlocks: 21196; CHECK: NumSGPRsForWavesPerEU: 102197; CHECK: NumVGPRsForWavesPerEU: 85198define amdgpu_kernel void @empty_workitems_exactly_256_waves_exactly_2() #10 {199entry:200 ret void201}202attributes #10 = {"amdgpu-flat-work-group-size"="256,256" "amdgpu-waves-per-eu"="2,2"}203 204; Minimum 2 waves, maximum limited by LDS usage.205; CHECK-LABEL: {{^}}empty_at_least_2_lds_limited:206; CHECK: SGPRBlocks: 12207; CHECK: VGPRBlocks: 12208; CHECK: NumSGPRsForWavesPerEU: 102209; CHECK: NumVGPRsForWavesPerEU: 49210define amdgpu_kernel void @empty_at_least_2_lds_limited() #11 {211entry:212 ret void213}214attributes #11 = {"amdgpu-flat-work-group-size"="1,256" "amdgpu-waves-per-eu"="2" "amdgpu-lds-size"="16384"}215 216; Minimum 2 waves, maximum limited by LDS usage. Requested maximum within spec217; but above achievable occupancy has no effect.218; CHECK-LABEL: {{^}}empty_at_least_2_lds_limited_max_above_achievable:219; CHECK: SGPRBlocks: 12220; CHECK: VGPRBlocks: 12221; CHECK: NumSGPRsForWavesPerEU: 102222; CHECK: NumVGPRsForWavesPerEU: 49223define amdgpu_kernel void @empty_at_least_2_lds_limited_max_above_achievable() #12 {224entry:225 ret void226}227attributes #12 = {"amdgpu-flat-work-group-size"="1,256" "amdgpu-waves-per-eu"="2,10" "amdgpu-lds-size"="16384"}228