183 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 52; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -passes=amdgpu-attributor %s -o - | FileCheck %s3 4declare void @unknown()5 6; fixed_cluster_dims_0 is only used by fixed_cluster_dims_1 that is expected to7; have fixed dims.8define internal void @fixed_cluster_dims_before_0() {9; CHECK-LABEL: define internal void @fixed_cluster_dims_before_0(10; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {11; CHECK-NEXT: call void @unknown()12; CHECK-NEXT: ret void13;14 call void @unknown()15 ret void16}17 18; fixed_cluster_dims_1 is used by two kernels with the same cluster dims.19define internal void @fixed_cluster_dims_1() {20; CHECK-LABEL: define internal void @fixed_cluster_dims_1(21; CHECK-SAME: ) #[[ATTR1]] {22; CHECK-NEXT: call void @fixed_cluster_dims_before_0()23; CHECK-NEXT: call void @unknown()24; CHECK-NEXT: ret void25;26 call void @fixed_cluster_dims_before_0()27 call void @unknown()28 ret void29}30 31; no_cluster_dims_0 is only used by no_cluster_dims_1 that is expected to not use32; cluster.33define internal void @no_cluster_dims_0() {34; CHECK-LABEL: define internal void @no_cluster_dims_0(35; CHECK-SAME: ) #[[ATTR2:[0-9]+]] {36; CHECK-NEXT: call void @unknown()37; CHECK-NEXT: ret void38;39 call void @unknown()40 ret void41}42 43; no_cluster_dims_1 is used by two kernels that don't use cluster.44define internal void @no_cluster_dims_1() {45; CHECK-LABEL: define internal void @no_cluster_dims_1(46; CHECK-SAME: ) #[[ATTR2]] {47; CHECK-NEXT: call void @unknown()48; CHECK-NEXT: call void @no_cluster_dims_0()49; CHECK-NEXT: ret void50;51 call void @unknown()52 call void @no_cluster_dims_0()53 ret void54}55 56; non_fixed_cluster_dims is used by two kernels with different cluster dims, so57; it will use cluster but cluster dims is unknown.58define internal void @non_fixed_cluster_dims() {59; CHECK-LABEL: define internal void @non_fixed_cluster_dims(60; CHECK-SAME: ) #[[ATTR3:[0-9]+]] {61; CHECK-NEXT: call void @unknown()62; CHECK-NEXT: ret void63;64 call void @unknown()65 ret void66}67 68; unknown_cluster_dims is used by a kernel that uses cluster and another one that69; doesn't use cluster, so it is unknown that whether cluster is used or not.70define internal void @unknown_cluster_dims() {71; CHECK-LABEL: define internal void @unknown_cluster_dims(72; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {73; CHECK-NEXT: call void @unknown()74; CHECK-NEXT: ret void75;76 call void @unknown()77 ret void78}79 80; unknown_cluster_use is used by a kernel that we don't know whether cluster will81; be used or not (because it doesn't have any attribute), so it is unknown that82; whether cluster is used or not.83define internal void @unknown_cluster_use() {84; CHECK-LABEL: define internal void @unknown_cluster_use(85; CHECK-SAME: ) #[[ATTR0]] {86; CHECK-NEXT: call void @unknown()87; CHECK-NEXT: ret void88;89 call void @unknown()90 ret void91}92 93; unknown_call_site has unknown call site, so it is unknown that whether cluster94; is used or not.95define void @unknown_call_site() {96; CHECK-LABEL: define void @unknown_call_site(97; CHECK-SAME: ) #[[ATTR0]] {98; CHECK-NEXT: call void @unknown()99; CHECK-NEXT: ret void100;101 call void @unknown()102 ret void103}104 105define amdgpu_kernel void @cluster_kernel_0() #0 {106; CHECK-LABEL: define amdgpu_kernel void @cluster_kernel_0(107; CHECK-SAME: ) #[[ATTR1]] {108; CHECK-NEXT: call void @fixed_cluster_dims_1()109; CHECK-NEXT: call void @non_fixed_cluster_dims()110; CHECK-NEXT: call void @unknown_cluster_dims()111; CHECK-NEXT: call void @unknown_call_site()112; CHECK-NEXT: ret void113;114 call void @fixed_cluster_dims_1()115 call void @non_fixed_cluster_dims()116 call void @unknown_cluster_dims()117 call void @unknown_call_site()118 ret void119}120 121define amdgpu_kernel void @cluster_kernel_0_1() #0 {122; CHECK-LABEL: define amdgpu_kernel void @cluster_kernel_0_1(123; CHECK-SAME: ) #[[ATTR1]] {124; CHECK-NEXT: call void @fixed_cluster_dims_1()125; CHECK-NEXT: ret void126;127 call void @fixed_cluster_dims_1()128 ret void129}130 131define amdgpu_kernel void @cluster_kernel_1() #1 {132; CHECK-LABEL: define amdgpu_kernel void @cluster_kernel_1(133; CHECK-SAME: ) #[[ATTR4:[0-9]+]] {134; CHECK-NEXT: call void @non_fixed_cluster_dims()135; CHECK-NEXT: ret void136;137 call void @non_fixed_cluster_dims()138 ret void139}140 141define amdgpu_kernel void @no_cluster_kernel() #2 {142; CHECK-LABEL: define amdgpu_kernel void @no_cluster_kernel(143; CHECK-SAME: ) #[[ATTR2]] {144; CHECK-NEXT: call void @no_cluster_dims_1()145; CHECK-NEXT: call void @unknown_cluster_dims()146; CHECK-NEXT: ret void147;148 call void @no_cluster_dims_1()149 call void @unknown_cluster_dims()150 ret void151}152 153define amdgpu_kernel void @no_cluster_kernel_1() #2 {154; CHECK-LABEL: define amdgpu_kernel void @no_cluster_kernel_1(155; CHECK-SAME: ) #[[ATTR2]] {156; CHECK-NEXT: call void @no_cluster_dims_1()157; CHECK-NEXT: ret void158;159 call void @no_cluster_dims_1()160 ret void161}162 163define amdgpu_kernel void @unknown_cluster_use_kernel() {164; CHECK-LABEL: define amdgpu_kernel void @unknown_cluster_use_kernel(165; CHECK-SAME: ) #[[ATTR0]] {166; CHECK-NEXT: call void @unknown_cluster_use()167; CHECK-NEXT: ret void168;169 call void @unknown_cluster_use()170 ret void171}172 173attributes #0 = { "amdgpu-cluster-dims"="2,2,2" }174attributes #1 = { "amdgpu-cluster-dims"="1,2,1" }175attributes #2 = { "amdgpu-cluster-dims"="0,0,0" }176;.177; CHECK: attributes #[[ATTR0]] = { "target-cpu"="gfx1250" "uniform-work-group-size"="false" }178; CHECK: attributes #[[ATTR1]] = { "amdgpu-cluster-dims"="2,2,2" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }179; CHECK: attributes #[[ATTR2]] = { "amdgpu-cluster-dims"="0,0,0" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }180; CHECK: attributes #[[ATTR3]] = { "amdgpu-cluster-dims"="1024,1024,1024" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }181; CHECK: attributes #[[ATTR4]] = { "amdgpu-cluster-dims"="1,2,1" "target-cpu"="gfx1250" "uniform-work-group-size"="false" }182;.183