113 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 --check-prefixes=CHECK,OW %s3; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes='amdgpu-attributor<closed-world>' %s | FileCheck --check-prefixes=CHECK,CW %s4; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes='amdgpu-attributor<closed-world>' -amdgpu-indirect-call-specialization-threshold=0 %s | FileCheck --check-prefixes=CHECK,NO %s5 6@G = global i32 0, align 47 8;.9; CHECK: @G = global i32 0, align 410;.11define void @bar1() {12; CHECK-LABEL: define {{[^@]+}}@bar113; CHECK-SAME: () #[[ATTR0:[0-9]+]] {14; CHECK-NEXT: entry:15; CHECK-NEXT: store i32 1, ptr @G, align 416; CHECK-NEXT: ret void17;18entry:19 store i32 1, ptr @G, align 420 ret void21}22 23define void @bar2() {24; CHECK-LABEL: define {{[^@]+}}@bar225; CHECK-SAME: () #[[ATTR0]] {26; CHECK-NEXT: entry:27; CHECK-NEXT: store i32 2, ptr @G, align 428; CHECK-NEXT: ret void29;30entry:31 store i32 2, ptr @G, align 432 ret void33}34 35define ptr @helper1() {36; CHECK-LABEL: define {{[^@]+}}@helper137; CHECK-SAME: () #[[ATTR0]] {38; CHECK-NEXT: entry:39; CHECK-NEXT: ret ptr @bar140;41entry:42 ret ptr @bar143}44 45define ptr @helper2() {46; CHECK-LABEL: define {{[^@]+}}@helper247; CHECK-SAME: () #[[ATTR0]] {48; CHECK-NEXT: entry:49; CHECK-NEXT: ret ptr @bar250;51entry:52 ret ptr @bar253}54 55define amdgpu_kernel void @foo(ptr noundef %fp) {56; OW-LABEL: define {{[^@]+}}@foo57; OW-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR1:[0-9]+]] {58; OW-NEXT: entry:59; OW-NEXT: [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)60; OW-NEXT: store ptr [[FP]], ptr addrspace(5) [[FP_ADDR]], align 861; OW-NEXT: [[LOAD:%.*]] = load ptr, ptr addrspace(5) [[FP_ADDR]], align 862; OW-NEXT: call void [[LOAD]]()63; OW-NEXT: ret void64;65; CW-LABEL: define {{[^@]+}}@foo66; CW-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR0]] {67; CW-NEXT: entry:68; CW-NEXT: [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)69; CW-NEXT: store ptr [[FP]], ptr addrspace(5) [[FP_ADDR]], align 870; CW-NEXT: [[LOAD:%.*]] = load ptr, ptr addrspace(5) [[FP_ADDR]], align 871; CW-NEXT: [[TMP0:%.*]] = icmp eq ptr [[LOAD]], @bar172; CW-NEXT: br i1 [[TMP0]], label [[TMP1:%.*]], label [[TMP2:%.*]]73; CW: 1:74; CW-NEXT: call void @bar1()75; CW-NEXT: br label [[TMP5:%.*]]76; CW: 2:77; CW-NEXT: br i1 true, label [[TMP3:%.*]], label [[TMP4:%.*]]78; CW: 3:79; CW-NEXT: call void @bar2()80; CW-NEXT: br label [[TMP5]]81; CW: 4:82; CW-NEXT: unreachable83; CW: 5:84; CW-NEXT: ret void85;86; NO-LABEL: define {{[^@]+}}@foo87; NO-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR0]] {88; NO-NEXT: entry:89; NO-NEXT: [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)90; NO-NEXT: store ptr [[FP]], ptr addrspace(5) [[FP_ADDR]], align 891; NO-NEXT: [[LOAD:%.*]] = load ptr, ptr addrspace(5) [[FP_ADDR]], align 892; NO-NEXT: call void [[LOAD]](), !callees [[META0:![0-9]+]]93; NO-NEXT: ret void94;95entry:96 %fp.addr = alloca ptr, addrspace(5)97 store ptr %fp, ptr addrspace(5) %fp.addr98 %load = load ptr, ptr addrspace(5) %fp.addr99 call void %load()100 ret void101}102 103;.104; NO: 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" }105;.106; OW: 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" }107; OW: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }108;.109; CW: 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" }110;.111; NO: [[META0]] = !{ptr @bar1, ptr @bar2}112;.113