105 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-unknown-unknown -passes=amdgpu-attributor < %s | FileCheck %s3 4;.5; CHECK: @G1 = global ptr null6; CHECK: @G2 = global i32 07;.8define weak void @weak() {9; CHECK-LABEL: define {{[^@]+}}@weak10; CHECK-SAME: () #[[ATTR0:[0-9]+]] {11; CHECK-NEXT: call void @internal1()12; CHECK-NEXT: ret void13;14 call void @internal1()15 ret void16}17 18@G1 = global ptr null19 20define internal void @internal1() {21; CHECK-LABEL: define {{[^@]+}}@internal122; CHECK-SAME: () #[[ATTR1:[0-9]+]] {23; CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr @G1, align 824; CHECK-NEXT: store i32 0, ptr [[TMP1]], align 425; CHECK-NEXT: ret void26;27 %1 = load ptr, ptr @G128 store i32 0, ptr %129 ret void30}31 32define amdgpu_kernel void @kernel1() #0 {33; CHECK-LABEL: define {{[^@]+}}@kernel134; CHECK-SAME: () #[[ATTR2:[0-9]+]] {35; CHECK-NEXT: call void @weak()36; CHECK-NEXT: ret void37;38 call void @weak()39 ret void40}41 42@G2 = global i32 043 44define internal void @internal3() {45; CHECK-LABEL: define {{[^@]+}}@internal346; CHECK-SAME: () #[[ATTR3:[0-9]+]] {47; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @G2, align 448; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 049; CHECK-NEXT: br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]50; CHECK: 3:51; CHECK-NEXT: call void @internal4()52; CHECK-NEXT: call void @internal3()53; CHECK-NEXT: br label [[TMP4]]54; CHECK: 4:55; CHECK-NEXT: ret void56;57 %1 = load i32, ptr @G2, align 458 %2 = icmp eq i32 %1, 059 br i1 %2, label %3, label %4603:61 call void @internal4()62 call void @internal3()63 br label %4644:65 ret void66}67 68define internal void @internal4() {69; CHECK-LABEL: define {{[^@]+}}@internal470; CHECK-SAME: () #[[ATTR3]] {71; CHECK-NEXT: store i32 1, ptr @G2, align 472; CHECK-NEXT: ret void73;74 store i32 1, ptr @G2, align 475 ret void76}77 78define internal void @internal2() {79; CHECK-LABEL: define {{[^@]+}}@internal280; CHECK-SAME: () #[[ATTR3]] {81; CHECK-NEXT: call void @internal3()82; CHECK-NEXT: ret void83;84 call void @internal3()85 ret void86}87 88define amdgpu_kernel void @kernel2() #0 {89; CHECK-LABEL: define {{[^@]+}}@kernel290; CHECK-SAME: () #[[ATTR3]] {91; CHECK-NEXT: call void @internal2()92; CHECK-NEXT: ret void93;94 call void @internal2()95 ret void96}97 98attributes #0 = { "uniform-work-group-size"="true" }99;.100; CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }101; CHECK: attributes #[[ATTR1]] = { "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" }102; CHECK: attributes #[[ATTR2]] = { "uniform-work-group-size"="true" }103; CHECK: attributes #[[ATTR3]] = { "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"="true" }104;.105