brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 41bce31 Raw
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