brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · ab03177 Raw
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