47 lines · plain
1; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri -passes=amdgpu-promote-alloca < %s | FileCheck %s2; Nothing should be done if the addrspacecast is captured.3 4declare void @consume_ptr2int(i32) #05 6; CHECK-LABEL: @addrspacecast_captured(7; CHECK: %data = alloca i32, align 4, addrspace(5)8; CHECK: %cast = addrspacecast ptr addrspace(5) %data to ptr9; CHECK: %ptr2int = ptrtoint ptr %cast to i3210; CHECK: store i32 %ptr2int, ptr addrspace(1) %out11define amdgpu_kernel void @addrspacecast_captured(ptr addrspace(1) %out) #0 {12entry:13 %data = alloca i32, align 4, addrspace(5)14 %cast = addrspacecast ptr addrspace(5) %data to ptr15 %ptr2int = ptrtoint ptr %cast to i3216 store i32 %ptr2int, ptr addrspace(1) %out17 ret void18}19 20; CHECK-LABEL: @addrspacecast_captured_store(21; CHECK: %data = alloca i32, align 4, addrspace(5)22; CHECK: %cast = addrspacecast ptr addrspace(5) %data to ptr23; CHECK: store ptr %cast, ptr addrspace(1) %out24define amdgpu_kernel void @addrspacecast_captured_store(ptr addrspace(1) %out) #0 {25entry:26 %data = alloca i32, align 4, addrspace(5)27 %cast = addrspacecast ptr addrspace(5) %data to ptr28 store ptr %cast, ptr addrspace(1) %out29 ret void30}31 32; CHECK-LABEL: @addrspacecast_captured_call(33; CHECK: %data = alloca i32, align 4, addrspace(5)34; CHECK: %cast = addrspacecast ptr addrspace(5) %data to ptr35; CHECK: %ptr2int = ptrtoint ptr %cast to i3236; CHECK: call void @consume_ptr2int(i32 %ptr2int)37define amdgpu_kernel void @addrspacecast_captured_call() #0 {38entry:39 %data = alloca i32, align 4, addrspace(5)40 %cast = addrspacecast ptr addrspace(5) %data to ptr41 %ptr2int = ptrtoint ptr %cast to i3242 call void @consume_ptr2int(i32 %ptr2int)43 ret void44}45 46attributes #0 = { nounwind }47