brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 95b52c1 Raw
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