131 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals2; RUN: opt -mtriple=amdgcn-unknown-amdhsa -S -passes=amdgpu-attributor %s | FileCheck %s3 4; Check handling for pre-existing attributes on function declarations5 6declare void @marked_no_workitem_id_x() "amdgpu-no-workitem-id-x"7declare void @marked_no_workitem_id_y() "amdgpu-no-workitem-id-y"8declare void @marked_no_workitem_id_z() "amdgpu-no-workitem-id-z"9 10declare void @marked_no_workgroup_id_x() "amdgpu-no-workgroup-id-x"11declare void @marked_no_workgroup_id_y() "amdgpu-no-workgroup-id-y"12declare void @marked_no_workgroup_id_z() "amdgpu-no-workgroup-id-z"13 14declare void @marked_no_dispatch_ptr() "amdgpu-no-dispatch-ptr"15declare void @marked_no_queue_ptr() "amdgpu-no-queue-ptr"16declare void @marked_no_implicitarg_ptr() "amdgpu-no-implicitarg-ptr"17declare void @marked_no_dispatch_id() "amdgpu-no-dispatch-id"18 19 20define void @call_no_workitem_id_x() {21; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_x22; CHECK-SAME: () #[[ATTR0:[0-9]+]] {23; CHECK-NEXT: call void @marked_no_workitem_id_x()24; CHECK-NEXT: ret void25;26 call void @marked_no_workitem_id_x()27 ret void28}29 30define void @call_no_workitem_id_y() {31; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_y32; CHECK-SAME: () #[[ATTR1:[0-9]+]] {33; CHECK-NEXT: call void @marked_no_workitem_id_y()34; CHECK-NEXT: ret void35;36 call void @marked_no_workitem_id_y()37 ret void38}39 40define void @call_no_workitem_id_z() {41; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_z42; CHECK-SAME: () #[[ATTR2:[0-9]+]] {43; CHECK-NEXT: call void @marked_no_workitem_id_z()44; CHECK-NEXT: ret void45;46 call void @marked_no_workitem_id_z()47 ret void48}49 50define void @call_no_workgroup_id_x() {51; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_x52; CHECK-SAME: () #[[ATTR3:[0-9]+]] {53; CHECK-NEXT: call void @marked_no_workgroup_id_x()54; CHECK-NEXT: ret void55;56 call void @marked_no_workgroup_id_x()57 ret void58}59 60define void @call_no_workgroup_id_y() {61; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_y62; CHECK-SAME: () #[[ATTR4:[0-9]+]] {63; CHECK-NEXT: call void @marked_no_workgroup_id_y()64; CHECK-NEXT: ret void65;66 call void @marked_no_workgroup_id_y()67 ret void68}69 70define void @call_no_workgroup_id_z() {71; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_z72; CHECK-SAME: () #[[ATTR5:[0-9]+]] {73; CHECK-NEXT: call void @marked_no_workgroup_id_z()74; CHECK-NEXT: ret void75;76 call void @marked_no_workgroup_id_z()77 ret void78}79 80define void @call_no_dispatch_ptr() {81; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_ptr82; CHECK-SAME: () #[[ATTR6:[0-9]+]] {83; CHECK-NEXT: call void @marked_no_dispatch_ptr()84; CHECK-NEXT: ret void85;86 call void @marked_no_dispatch_ptr()87 ret void88}89 90define void @call_no_queue_ptr() {91; CHECK-LABEL: define {{[^@]+}}@call_no_queue_ptr92; CHECK-SAME: () #[[ATTR7:[0-9]+]] {93; CHECK-NEXT: call void @marked_no_queue_ptr()94; CHECK-NEXT: ret void95;96 call void @marked_no_queue_ptr()97 ret void98}99 100define void @call_no_implicitarg_ptr() {101; CHECK-LABEL: define {{[^@]+}}@call_no_implicitarg_ptr102; CHECK-SAME: () #[[ATTR8:[0-9]+]] {103; CHECK-NEXT: call void @marked_no_implicitarg_ptr()104; CHECK-NEXT: ret void105;106 call void @marked_no_implicitarg_ptr()107 ret void108}109 110define void @call_no_dispatch_id() {111; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_id112; CHECK-SAME: () #[[ATTR9:[0-9]+]] {113; CHECK-NEXT: call void @marked_no_dispatch_id()114; CHECK-NEXT: ret void115;116 call void @marked_no_dispatch_id()117 ret void118}119;.120; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }121; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }122; CHECK: attributes #[[ATTR2]] = { "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }123; CHECK: attributes #[[ATTR3]] = { "amdgpu-no-workgroup-id-x" "uniform-work-group-size"="false" }124; CHECK: attributes #[[ATTR4]] = { "amdgpu-no-workgroup-id-y" "uniform-work-group-size"="false" }125; CHECK: attributes #[[ATTR5]] = { "amdgpu-no-workgroup-id-z" "uniform-work-group-size"="false" }126; CHECK: attributes #[[ATTR6]] = { "amdgpu-no-dispatch-ptr" "uniform-work-group-size"="false" }127; CHECK: attributes #[[ATTR7]] = { "amdgpu-no-queue-ptr" "uniform-work-group-size"="false" }128; CHECK: attributes #[[ATTR8]] = { "amdgpu-no-implicitarg-ptr" "uniform-work-group-size"="false" }129; CHECK: attributes #[[ATTR9]] = { "amdgpu-no-dispatch-id" "uniform-work-group-size"="false" }130;.131