brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · 23e90b3 Raw
215 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals2; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=amdgpu-attributor %s | FileCheck %s3 4; Check propagation of amdgpu-flat-work-group-size attribute.5 6; Called from a single kernel with 1,2567define internal void @default_to_1_256() {8; CHECK-LABEL: define {{[^@]+}}@default_to_1_2569; CHECK-SAME: () #[[ATTR0:[0-9]+]] {10; CHECK-NEXT:    ret void11;12  ret void13}14 15define amdgpu_kernel void @kernel_1_256() #0 {16; CHECK-LABEL: define {{[^@]+}}@kernel_1_25617; CHECK-SAME: () #[[ATTR0]] {18; CHECK-NEXT:    call void @default_to_1_256()19; CHECK-NEXT:    ret void20;21  call void @default_to_1_256()22  ret void23}24 25; Called from a single kernel with 64,12826define internal void @default_to_64_128() {27; CHECK-LABEL: define {{[^@]+}}@default_to_64_12828; CHECK-SAME: () #[[ATTR1:[0-9]+]] {29; CHECK-NEXT:    ret void30;31  ret void32}33 34define amdgpu_kernel void @kernel_64_128() #1 {35; CHECK-LABEL: define {{[^@]+}}@kernel_64_12836; CHECK-SAME: () #[[ATTR1]] {37; CHECK-NEXT:    call void @default_to_64_128()38; CHECK-NEXT:    call void @flat_group_64_64()39; CHECK-NEXT:    call void @default_to_64_256()40; CHECK-NEXT:    call void @flat_group_128_256()41; CHECK-NEXT:    ret void42;43  call void @default_to_64_128()44  call void @flat_group_64_64()45  call void @default_to_64_256()46  call void @flat_group_128_256()47  ret void48}49 50; Called from kernels with 128,512 and 512,51251define internal void @default_to_128_512() {52; CHECK-LABEL: define {{[^@]+}}@default_to_128_51253; CHECK-SAME: () #[[ATTR2:[0-9]+]] {54; CHECK-NEXT:    ret void55;56  ret void57}58 59; This already has a strict bounds, but called from kernels with wider60; bounds, and should not be changed.61define internal void @flat_group_64_64() #2 {62; CHECK-LABEL: define {{[^@]+}}@flat_group_64_6463; CHECK-SAME: () #[[ATTR3:[0-9]+]] {64; CHECK-NEXT:    ret void65;66  ret void67}68 69; 128,256 -> 128,12870define internal void @flat_group_128_256() #3 {71; CHECK-LABEL: define {{[^@]+}}@flat_group_128_25672; CHECK-SAME: () #[[ATTR4:[0-9]+]] {73; CHECK-NEXT:    ret void74;75  ret void76}77 78define internal void @flat_group_512_1024() #4 {79; CHECK-LABEL: define {{[^@]+}}@flat_group_512_102480; CHECK-SAME: () #[[ATTR5:[0-9]+]] {81; CHECK-NEXT:    ret void82;83  ret void84}85 86define amdgpu_kernel void @kernel_128_512() #5 {87; CHECK-LABEL: define {{[^@]+}}@kernel_128_51288; CHECK-SAME: () #[[ATTR2]] {89; CHECK-NEXT:    call void @default_to_128_512()90; CHECK-NEXT:    call void @flat_group_64_64()91; CHECK-NEXT:    ret void92;93  call void @default_to_128_512()94  call void @flat_group_64_64()95  ret void96}97 98define amdgpu_kernel void @kernel_512_512() #6 {99; CHECK-LABEL: define {{[^@]+}}@kernel_512_512100; CHECK-SAME: () #[[ATTR6:[0-9]+]] {101; CHECK-NEXT:    call void @default_to_128_512()102; CHECK-NEXT:    call void @flat_group_512_1024()103; CHECK-NEXT:    ret void104;105  call void @default_to_128_512()106  call void @flat_group_512_1024()107  ret void108}109 110; Called from kernels with 128,256 and 64,128 => 64,256111define internal void @default_to_64_256() {112; CHECK-LABEL: define {{[^@]+}}@default_to_64_256113; CHECK-SAME: () #[[ATTR7:[0-9]+]] {114; CHECK-NEXT:    ret void115;116  ret void117}118 119; The kernel's lower bound is higher than the callee's lower bound, so120; this should probably be illegal.121define amdgpu_kernel void @kernel_128_256() #3 {122; CHECK-LABEL: define {{[^@]+}}@kernel_128_256123; CHECK-SAME: () #[[ATTR4]] {124; CHECK-NEXT:    call void @default_to_64_256()125; CHECK-NEXT:    ret void126;127  call void @default_to_64_256()128  ret void129}130 131; 64,128 -> 64,128132define internal void @merge_cycle_0() #1 {133; CHECK-LABEL: define {{[^@]+}}@merge_cycle_0134; CHECK-SAME: () #[[ATTR1]] {135; CHECK-NEXT:    call void @merge_cycle_1()136; CHECK-NEXT:    ret void137;138  call void @merge_cycle_1()139  ret void140}141 142; 128,256 -> 128,128143define internal void @merge_cycle_1() #3 {144; CHECK-LABEL: define {{[^@]+}}@merge_cycle_1145; CHECK-SAME: () #[[ATTR4]] {146; CHECK-NEXT:    call void @merge_cycle_0()147; CHECK-NEXT:    ret void148;149  call void @merge_cycle_0()150  ret void151}152 153define amdgpu_kernel void @kernel_64_256() #7 {154; CHECK-LABEL: define {{[^@]+}}@kernel_64_256155; CHECK-SAME: () #[[ATTR7]] {156; CHECK-NEXT:    call void @merge_cycle_0()157; CHECK-NEXT:    call void @default_captured_address()158; CHECK-NEXT:    call void @externally_visible_default()159; CHECK-NEXT:    [[F32:%.*]] = call float @bitcasted_function()160; CHECK-NEXT:    ret void161;162  call void @merge_cycle_0()163  call void @default_captured_address()164  call void @externally_visible_default()165  %f32 = call float @bitcasted_function()166  ret void167}168 169define internal void @default_captured_address() {170; CHECK-LABEL: define {{[^@]+}}@default_captured_address171; CHECK-SAME: () #[[ATTR8:[0-9]+]] {172; CHECK-NEXT:    store volatile ptr @default_captured_address, ptr poison, align 8173; CHECK-NEXT:    ret void174;175  store volatile ptr @default_captured_address, ptr poison, align 8176  ret void177}178 179define void @externally_visible_default() {180; CHECK-LABEL: define {{[^@]+}}@externally_visible_default181; CHECK-SAME: () #[[ATTR8]] {182; CHECK-NEXT:    ret void183;184  ret void185}186 187; 1,1024 -> 64,256188define internal i32 @bitcasted_function() {189; CHECK-LABEL: define {{[^@]+}}@bitcasted_function190; CHECK-SAME: () #[[ATTR7]] {191; CHECK-NEXT:    ret i32 0192;193  ret i32 0194}195 196attributes #0 = { "amdgpu-flat-work-group-size"="1,256" }197attributes #1 = { "amdgpu-flat-work-group-size"="64,128" }198attributes #2 = { "amdgpu-flat-work-group-size"="64,64" }199attributes #3 = { "amdgpu-flat-work-group-size"="128,256" }200attributes #4 = { "amdgpu-flat-work-group-size"="512,1024" }201attributes #5 = { "amdgpu-flat-work-group-size"="128,512" }202attributes #6 = { "amdgpu-flat-work-group-size"="512,512" }203attributes #7 = { "amdgpu-flat-work-group-size"="64,256" }204;.205; CHECK: attributes #[[ATTR0]] = { "amdgpu-flat-work-group-size"="1,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }206; CHECK: attributes #[[ATTR1]] = { "amdgpu-flat-work-group-size"="64,128" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }207; CHECK: attributes #[[ATTR2]] = { "amdgpu-flat-work-group-size"="128,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }208; CHECK: attributes #[[ATTR3]] = { "amdgpu-flat-work-group-size"="64,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }209; CHECK: attributes #[[ATTR4]] = { "amdgpu-flat-work-group-size"="128,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }210; CHECK: attributes #[[ATTR5]] = { "amdgpu-flat-work-group-size"="512,1024" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }211; CHECK: attributes #[[ATTR6]] = { "amdgpu-flat-work-group-size"="512,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }212; CHECK: attributes #[[ATTR7]] = { "amdgpu-flat-work-group-size"="64,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }213; CHECK: attributes #[[ATTR8]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }214;.215