[llvm] [Attributor][AMDGPU] Enable AAIndirectCallInfo for AMDAttributor (PR #100952)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 31 10:46:50 PDT 2024


================
@@ -0,0 +1,69 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals
+; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=amdgpu-attributor %s | FileCheck --check-prefixes=CHECK,OW %s
+; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=amdgpu-attributor -attributor-assume-closed-world=1 %s | FileCheck --check-prefixes=CHECK,CW %s
+
+target datalayout = "A5"
+
+ at G = global i32 0, align 4
+
+;.
+; CHECK: @G = global i32 0, align 4
+;.
+define void @bar() {
+; CHECK-LABEL: define {{[^@]+}}@bar
+; CHECK-SAME: () #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    store i32 1, ptr @G, align 4
+; CHECK-NEXT:    ret void
+;
+entry:
+  store i32 1, ptr @G, align 4
+  ret void
+}
+
+define ptr @helper() {
+; CHECK-LABEL: define {{[^@]+}}@helper
+; CHECK-SAME: () #[[ATTR0]] {
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    ret ptr @bar
+;
+entry:
+  ret ptr @bar
+}
+
+define amdgpu_kernel void @foo(ptr noundef %fp) {
+; OW-LABEL: define {{[^@]+}}@foo
+; OW-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR1:[0-9]+]] {
+; OW-NEXT:  entry:
+; OW-NEXT:    [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)
+; OW-NEXT:    [[FPTR_CAST:%.*]] = addrspacecast ptr addrspace(5) [[FP_ADDR]] to ptr
+; OW-NEXT:    store ptr [[FP]], ptr [[FPTR_CAST]], align 8
+; OW-NEXT:    call void [[FP]]()
+; OW-NEXT:    ret void
+;
+; CW-LABEL: define {{[^@]+}}@foo
+; CW-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR1:[0-9]+]] {
+; CW-NEXT:  entry:
+; CW-NEXT:    [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)
+; CW-NEXT:    [[FPTR_CAST:%.*]] = addrspacecast ptr addrspace(5) [[FP_ADDR]] to ptr
+; CW-NEXT:    store ptr [[FP]], ptr [[FPTR_CAST]], align 8
+; CW-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[FPTR_CAST]], align 8
+; CW-NEXT:    call void @bar()
+; CW-NEXT:    ret void
+;
+entry:
+  %fp.addr = alloca ptr, addrspace(5)
+  %fptr.cast = addrspacecast ptr addrspace(5) %fp.addr to ptr
+  store ptr %fp, ptr %fptr.cast
+  %0 = load ptr, ptr %fptr.cast
----------------
arsenm wrote:

Use named values 

https://github.com/llvm/llvm-project/pull/100952


More information about the llvm-commits mailing list