1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals 2; RUN: opt -mtriple=amdgcn-unknown-amdhsa -S -passes=amdgpu-attributor %s | FileCheck %s 3 4; Check handling for pre-existing attributes on function declarations 5 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_x 22; CHECK-SAME: () #[[ATTR0:[0-9]+]] { 23; CHECK-NEXT: call void @marked_no_workitem_id_x() 24; CHECK-NEXT: ret void 25; 26 call void @marked_no_workitem_id_x() 27 ret void 28} 29 30define void @call_no_workitem_id_y() { 31; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_y 32; CHECK-SAME: () #[[ATTR1:[0-9]+]] { 33; CHECK-NEXT: call void @marked_no_workitem_id_y() 34; CHECK-NEXT: ret void 35; 36 call void @marked_no_workitem_id_y() 37 ret void 38} 39 40define void @call_no_workitem_id_z() { 41; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_z 42; CHECK-SAME: () #[[ATTR2:[0-9]+]] { 43; CHECK-NEXT: call void @marked_no_workitem_id_z() 44; CHECK-NEXT: ret void 45; 46 call void @marked_no_workitem_id_z() 47 ret void 48} 49 50define void @call_no_workgroup_id_x() { 51; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_x 52; CHECK-SAME: () #[[ATTR3:[0-9]+]] { 53; CHECK-NEXT: call void @marked_no_workgroup_id_x() 54; CHECK-NEXT: ret void 55; 56 call void @marked_no_workgroup_id_x() 57 ret void 58} 59 60define void @call_no_workgroup_id_y() { 61; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_y 62; CHECK-SAME: () #[[ATTR4:[0-9]+]] { 63; CHECK-NEXT: call void @marked_no_workgroup_id_y() 64; CHECK-NEXT: ret void 65; 66 call void @marked_no_workgroup_id_y() 67 ret void 68} 69 70define void @call_no_workgroup_id_z() { 71; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_z 72; CHECK-SAME: () #[[ATTR5:[0-9]+]] { 73; CHECK-NEXT: call void @marked_no_workgroup_id_z() 74; CHECK-NEXT: ret void 75; 76 call void @marked_no_workgroup_id_z() 77 ret void 78} 79 80define void @call_no_dispatch_ptr() { 81; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_ptr 82; CHECK-SAME: () #[[ATTR6:[0-9]+]] { 83; CHECK-NEXT: call void @marked_no_dispatch_ptr() 84; CHECK-NEXT: ret void 85; 86 call void @marked_no_dispatch_ptr() 87 ret void 88} 89 90define void @call_no_queue_ptr() { 91; CHECK-LABEL: define {{[^@]+}}@call_no_queue_ptr 92; CHECK-SAME: () #[[ATTR7:[0-9]+]] { 93; CHECK-NEXT: call void @marked_no_queue_ptr() 94; CHECK-NEXT: ret void 95; 96 call void @marked_no_queue_ptr() 97 ret void 98} 99 100define void @call_no_implicitarg_ptr() { 101; CHECK-LABEL: define {{[^@]+}}@call_no_implicitarg_ptr 102; CHECK-SAME: () #[[ATTR8:[0-9]+]] { 103; CHECK-NEXT: call void @marked_no_implicitarg_ptr() 104; CHECK-NEXT: ret void 105; 106 call void @marked_no_implicitarg_ptr() 107 ret void 108} 109 110define void @call_no_dispatch_id() { 111; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_id 112; CHECK-SAME: () #[[ATTR9:[0-9]+]] { 113; CHECK-NEXT: call void @marked_no_dispatch_id() 114; CHECK-NEXT: ret void 115; 116 call void @marked_no_dispatch_id() 117 ret void 118} 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