70 lines · plain
1; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri -debug-only=amdgpu-promote-alloca -amdgpu-promote-alloca-to-vector-limit=512 -passes=amdgpu-promote-alloca %s -o - 2>&1 | FileCheck %s2; REQUIRES: asserts3 4; CHECK: Scoring: %simpleuser = alloca [4 x i64], align 4, addrspace(5)5; CHECK-NEXT: [+1]: store i32 42, ptr addrspace(5) %simpleuser, align 46; CHECK-NEXT: => Final Score:17; CHECK-NEXT: Scoring: %manyusers = alloca [4 x i64], align 4, addrspace(5)8; CHECK-NEXT: [+1]: store i32 %v0.ext, ptr addrspace(5) %manyusers.1, align 49; CHECK-NEXT: [+1]: %v0 = load i8, ptr addrspace(5) %manyusers.1, align 110; CHECK-NEXT: [+1]: store i32 %v1.ext, ptr addrspace(5) %manyusers.2, align 411; CHECK-NEXT: [+1]: %v1 = load i8, ptr addrspace(5) %manyusers.2, align 112; CHECK-NEXT: => Final Score:413; CHECK-NEXT: Sorted Worklist:14; CHECK-NEXT: %manyusers = alloca [4 x i64], align 4, addrspace(5)15; CHECK-NEXT: %simpleuser = alloca [4 x i64], align 4, addrspace(5)16define amdgpu_kernel void @simple_users_scores() #0 {17entry:18 ; should get a score of 119 %simpleuser = alloca [4 x i64], align 4, addrspace(5)20 ; should get a score of 421 %manyusers = alloca [4 x i64], align 4, addrspace(5)22 23 store i32 42, ptr addrspace(5) %simpleuser24 25 %manyusers.1 = getelementptr i8, ptr addrspace(5) %manyusers, i64 226 %v0 = load i8, ptr addrspace(5) %manyusers.127 %v0.ext = zext i8 %v0 to i3228 store i32 %v0.ext, ptr addrspace(5) %manyusers.129 30 %manyusers.2 = getelementptr i8, ptr addrspace(5) %manyusers, i64 131 %v1 = load i8, ptr addrspace(5) %manyusers.232 %v1.ext = zext i8 %v0 to i3233 store i32 %v1.ext, ptr addrspace(5) %manyusers.234 35 ret void36}37 38; CHECK: Scoring: %stack = alloca [4 x i64], align 4, addrspace(5)39; CHECK-NEXT: [+5]: store i32 32, ptr addrspace(5) %stack, align 440; CHECK-NEXT: [+1]: store i32 42, ptr addrspace(5) %stack, align 441; CHECK-NEXT: [+9]: store i32 32, ptr addrspace(5) %stack.1, align 442; CHECK-NEXT: [+5]: %outer.cmp = load i1, ptr addrspace(5) %stack.1, align 143; CHECK-NEXT: [+1]: store i32 64, ptr addrspace(5) %stack.2, align 444; CHECK-NEXT: [+9]: %inner.cmp = load i1, ptr addrspace(5) %stack.2, align 145; CHECK-NEXT: => Final Score:3046define amdgpu_kernel void @loop_users_alloca(i1 %x, i2) #0 {47entry:48 ; should get a score of 149 %stack = alloca [4 x i64], align 4, addrspace(5)50 %stack.1 = getelementptr i8, ptr addrspace(5) %stack, i64 451 %stack.2 = getelementptr i8, ptr addrspace(5) %stack, i64 852 53 store i32 42, ptr addrspace(5) %stack54 br label %loop.outer55 56loop.outer:57 store i32 32, ptr addrspace(5) %stack58 %outer.cmp = load i1, ptr addrspace(5) %stack.159 br label %loop.inner60 61loop.inner:62 store i32 32, ptr addrspace(5) %stack.163 %inner.cmp = load i1, ptr addrspace(5) %stack.264 br i1 %inner.cmp, label %loop.inner, label %loop.outer65 66exit:67 store i32 64, ptr addrspace(5) %stack.268 ret void69}70