brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · a0f5d2f Raw
74 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 -o - | FileCheck %s3 4@g_fn = addrspace(1) global ptr null5 6;.7; CHECK: @g_fn = addrspace(1) global ptr null8;.9define void @set_fn(ptr %fn) {10; CHECK-LABEL: define {{[^@]+}}@set_fn11; CHECK-SAME: (ptr [[FN:%.*]]) #[[ATTR0:[0-9]+]] {12; CHECK-NEXT:  entry:13; CHECK-NEXT:    store ptr [[FN]], ptr addrspace(1) @g_fn, align 814; CHECK-NEXT:    ret void15;16entry:17  store ptr %fn, ptr addrspace(1) @g_fn18  ret void19}20 21define void @get_fn(ptr %fn) {22; CHECK-LABEL: define {{[^@]+}}@get_fn23; CHECK-SAME: (ptr [[FN:%.*]]) #[[ATTR0]] {24; CHECK-NEXT:  entry:25; CHECK-NEXT:    [[LOAD:%.*]] = load ptr, ptr addrspace(1) @g_fn, align 826; CHECK-NEXT:    store ptr [[LOAD]], ptr [[FN]], align 827; CHECK-NEXT:    ret void28;29entry:30  %load = load ptr, ptr addrspace(1) @g_fn31  store ptr %load, ptr %fn32  ret void33}34 35define void @foo() {36; CHECK-LABEL: define {{[^@]+}}@foo37; CHECK-SAME: () #[[ATTR1:[0-9]+]] {38; CHECK-NEXT:  entry:39; CHECK-NEXT:    [[FN:%.*]] = alloca ptr, align 8, addrspace(5)40; CHECK-NEXT:    store ptr null, ptr addrspace(5) [[FN]], align 841; CHECK-NEXT:    [[FN_CAST:%.*]] = addrspacecast ptr addrspace(5) [[FN]] to ptr42; CHECK-NEXT:    call void @get_fn(ptr [[FN_CAST]])43; CHECK-NEXT:    [[LOAD:%.*]] = load ptr, ptr addrspace(5) [[FN]], align 844; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne ptr [[LOAD]], null45; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]46; CHECK:       if.then:47; CHECK-NEXT:    [[LOAD_1:%.*]] = load ptr, ptr addrspace(5) [[FN]], align 848; CHECK-NEXT:    call void [[LOAD_1]]()49; CHECK-NEXT:    br label [[IF_END]]50; CHECK:       if.end:51; CHECK-NEXT:    ret void52;53entry:54  %fn = alloca ptr, addrspace(5)55  store ptr null, ptr addrspace(5) %fn56  %fn.cast = addrspacecast ptr addrspace(5) %fn to ptr57  call void @get_fn(ptr %fn.cast)58  %load = load ptr, ptr addrspace(5) %fn59  %tobool = icmp ne ptr %load, null60  br i1 %tobool, label %if.then, label %if.end61 62if.then:63  %load.1 = load ptr, ptr addrspace(5) %fn64  call void %load.1()65  br label %if.end66 67if.end:68  ret void69}70;.71; CHECK: attributes #[[ATTR0]] = { "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" }72; CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }73;.74