brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 955b538 Raw
45 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=gfx900 - < %s | FileCheck %s2 3@local = addrspace(3) global i32 poison4 5define amdgpu_kernel void @reducible() {6; CHECK-LABEL: reducible:7; CHECK-NOT: dpp8entry:9  %x = call i32 @llvm.amdgcn.workitem.id.x()10  br label %loop11loop:12  %i = phi i32 [ 0, %entry ], [ %i1, %loop ]13  %gep = getelementptr i32, ptr addrspace(3) @local, i32 %i14  %cond = icmp ult i32 %i, %x15  %i1 = add i32 %i, 116  br i1 %cond, label %loop, label %exit17exit:18  %old = atomicrmw add ptr addrspace(3) %gep, i32 %x acq_rel19  ret void20}21 22define amdgpu_kernel void @def_in_nested_cycle() {23; CHECK-LABEL: def_in_nested_cycle:24; CHECK-NOT: dpp25entry:26  %x = call i32 @llvm.amdgcn.workitem.id.x()27  br label %loop28loop:29  %i = phi i32 [ 0, %entry ], [ 0, %innerloop ], [ %i1, %loop ]30  %cond = icmp ult i32 %i, %x31  %i1 = add i32 %i, 132  br i1 %cond, label %innerloop, label %loop33innerloop:34  %i.inner = phi i32 [ 0, %loop ], [ %i1.inner, %innerloop ]35  %gep = getelementptr i32, ptr addrspace(3) @local, i32 %i36  %i1.inner = add i32 %i, 137  %cond.inner = icmp ult i32 %i, %x38  br i1 %cond, label %innerloop, label %loop39exit:40  %old = atomicrmw add ptr addrspace(3) %gep, i32 %x acq_rel41  ret void42}43 44declare i32 @llvm.amdgcn.workitem.id.x()45