brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · a590bbc Raw
49 lines · plain
1; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=amdgpu-promote-alloca < %s | FileCheck %s2 3; Make sure this allocates the correct size if the alloca has a non-04; number of elements.5 6; CHECK-LABEL: @array_alloca(7; CHECK: %stack = alloca i32, i32 5, align 4, addrspace(5)8define amdgpu_kernel void @array_alloca(ptr addrspace(1) nocapture %out, ptr addrspace(1) nocapture %in) #0 {9entry:10  %stack = alloca i32, i32 5, align 4, addrspace(5)11  %ld0 = load i32, ptr addrspace(1) %in, align 412  %arrayidx1 = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 %ld013  store i32 4, ptr addrspace(5) %arrayidx1, align 414  %arrayidx2 = getelementptr inbounds i32, ptr addrspace(1) %in, i32 115  %ld1 = load i32, ptr addrspace(1) %arrayidx2, align 416  %arrayidx3 = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 %ld117  store i32 5, ptr addrspace(5) %arrayidx3, align 418  %ld2 = load i32, ptr addrspace(5) %stack, align 419  store i32 %ld2, ptr addrspace(1) %out, align 420  %arrayidx12 = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 121  %ld3 = load i32, ptr addrspace(5) %arrayidx1222  %arrayidx13 = getelementptr inbounds i32, ptr addrspace(1) %out, i32 123  store i32 %ld3, ptr addrspace(1) %arrayidx1324  ret void25}26 27; CHECK-LABEL: @array_alloca_dynamic(28; CHECK: %stack = alloca i32, i32 %size, align 4, addrspace(5)29define amdgpu_kernel void @array_alloca_dynamic(ptr addrspace(1) nocapture %out, ptr addrspace(1) nocapture %in, i32 %size) #0 {30entry:31  %stack = alloca i32, i32 %size, align 4, addrspace(5)32  %ld0 = load i32, ptr addrspace(1) %in, align 433  %arrayidx1 = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 %ld034  store i32 4, ptr addrspace(5) %arrayidx1, align 435  %arrayidx2 = getelementptr inbounds i32, ptr addrspace(1) %in, i32 136  %ld1 = load i32, ptr addrspace(1) %arrayidx2, align 437  %arrayidx3 = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 %ld138  store i32 5, ptr addrspace(5) %arrayidx3, align 439  %ld2 = load i32, ptr addrspace(5) %stack, align 440  store i32 %ld2, ptr addrspace(1) %out, align 441  %arrayidx12 = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 142  %ld3 = load i32, ptr addrspace(5) %arrayidx1243  %arrayidx13 = getelementptr inbounds i32, ptr addrspace(1) %out, i32 144  store i32 %ld3, ptr addrspace(1) %arrayidx1345  ret void46}47 48attributes #0 = { nounwind }49