100 lines · plain
1; RUN: llc -O0 -asm-verbose=0 -mtriple=amdgcn < %s | FileCheck -check-prefix=SI -check-prefix=COMMON %s2; RUN: llc -O0 -asm-verbose=0 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=SI -check-prefix=COMMON %s3; XUN: llc -O0 -asm-verbose=0 -mtriple=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=COMMON %s4 5; SI hits an assertion at -O0, evergreen hits a not implemented unreachable.6 7; COMMON-LABEL: {{^}}branch_true:8define amdgpu_kernel void @branch_true(ptr addrspace(1) nocapture %main, i32 %main_stride) #0 {9entry:10 br i1 true, label %for.end, label %for.body.lr.ph11 12for.body.lr.ph: ; preds = %entry13 %add.ptr.sum = shl i32 %main_stride, 114 %add.ptr1.sum = add i32 %add.ptr.sum, %main_stride15 %add.ptr4.sum = shl i32 %main_stride, 216 br label %for.body17 18for.body: ; preds = %for.body, %for.body.lr.ph19 %main.addr.011 = phi ptr addrspace(1) [ %main, %for.body.lr.ph ], [ %add.ptr6, %for.body ]20 %0 = load i32, ptr addrspace(1) %main.addr.011, align 421 %add.ptr = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %main_stride22 %1 = load i32, ptr addrspace(1) %add.ptr, align 423 %add.ptr1 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr.sum24 %2 = load i32, ptr addrspace(1) %add.ptr1, align 425 %add.ptr2 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr1.sum26 %3 = load i32, ptr addrspace(1) %add.ptr2, align 427 %add.ptr3 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr4.sum28 %4 = load i32, ptr addrspace(1) %add.ptr3, align 429 %add.ptr6 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 030 br i1 poison, label %for.end, label %for.body31 32for.end: ; preds = %for.body, %entry33 ret void34}35 36; COMMON-LABEL: {{^}}branch_false:37; SI: s_cbranch_scc138; SI: s_endpgm39define amdgpu_kernel void @branch_false(ptr addrspace(1) nocapture %main, i32 %main_stride) #0 {40entry:41 br i1 false, label %for.end, label %for.body.lr.ph42 43for.body.lr.ph: ; preds = %entry44 %add.ptr.sum = shl i32 %main_stride, 145 %add.ptr1.sum = add i32 %add.ptr.sum, %main_stride46 %add.ptr4.sum = shl i32 %main_stride, 247 br label %for.body48 49for.body: ; preds = %for.body, %for.body.lr.ph50 %main.addr.011 = phi ptr addrspace(1) [ %main, %for.body.lr.ph ], [ %add.ptr6, %for.body ]51 %0 = load i32, ptr addrspace(1) %main.addr.011, align 452 %add.ptr = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %main_stride53 %1 = load i32, ptr addrspace(1) %add.ptr, align 454 %add.ptr1 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr.sum55 %2 = load i32, ptr addrspace(1) %add.ptr1, align 456 %add.ptr2 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr1.sum57 %3 = load i32, ptr addrspace(1) %add.ptr2, align 458 %add.ptr3 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr4.sum59 %4 = load i32, ptr addrspace(1) %add.ptr3, align 460 %add.ptr6 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 061 br i1 poison, label %for.end, label %for.body62 63for.end: ; preds = %for.body, %entry64 ret void65}66 67; COMMON-LABEL: {{^}}branch_poison:68; SI: s_cbranch_scc169; SI: s_cbranch_scc170; SI: s_endpgm71define amdgpu_kernel void @branch_poison(ptr addrspace(1) nocapture %main, i32 %main_stride) #0 {72entry:73 br i1 poison, label %for.end, label %for.body.lr.ph74 75for.body.lr.ph: ; preds = %entry76 %add.ptr.sum = shl i32 %main_stride, 177 %add.ptr1.sum = add i32 %add.ptr.sum, %main_stride78 %add.ptr4.sum = shl i32 %main_stride, 279 br label %for.body80 81for.body: ; preds = %for.body, %for.body.lr.ph82 %main.addr.011 = phi ptr addrspace(1) [ %main, %for.body.lr.ph ], [ %add.ptr6, %for.body ]83 %0 = load i32, ptr addrspace(1) %main.addr.011, align 484 %add.ptr = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %main_stride85 %1 = load i32, ptr addrspace(1) %add.ptr, align 486 %add.ptr1 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr.sum87 %2 = load i32, ptr addrspace(1) %add.ptr1, align 488 %add.ptr2 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr1.sum89 %3 = load i32, ptr addrspace(1) %add.ptr2, align 490 %add.ptr3 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 %add.ptr4.sum91 %4 = load i32, ptr addrspace(1) %add.ptr3, align 492 %add.ptr6 = getelementptr inbounds i8, ptr addrspace(1) %main.addr.011, i32 093 br i1 poison, label %for.end, label %for.body94 95for.end: ; preds = %for.body, %entry96 ret void97}98 99attributes #0 = { nounwind }100