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