brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 6e07986 Raw
78 lines · plain
1; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -mcpu=hawaii -passes=loop-unroll -unroll-threshold=100 -unroll-peel-count=0 -unroll-allow-partial=false -unroll-max-iteration-count-to-analyze=16 < %s | FileCheck %s2 3; CHECK-LABEL: @test_intrinsic_call_cost(4; CHECK-NOT: br i15define amdgpu_kernel void @test_intrinsic_call_cost(ptr addrspace(1) noalias nocapture %out, ptr addrspace(1) noalias nocapture %in) #0 {6entry:7  br label %for.body8 9for.body:10  %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ]11  %sum.02 = phi float [ %fmul, %for.body ], [ 0.0, %entry ]12  %arrayidx.in = getelementptr inbounds float, ptr addrspace(1) %in, i32 %indvars.iv13  %arrayidx.out = getelementptr inbounds float, ptr addrspace(1) %out, i32 %indvars.iv14  %load = load float, ptr addrspace(1) %arrayidx.in15  %call = call float @llvm.minnum.f32(float %load, float 1.0);16  %fmul = fmul float %call, %sum.0217  store float %fmul, ptr addrspace(1) %arrayidx.out18  %indvars.iv.next = add i32 %indvars.iv, 119  %exitcond = icmp eq i32 %indvars.iv.next, 1620  br i1 %exitcond, label %for.end, label %for.body21 22for.end:23  ret void24}25 26; CHECK-LABEL: @test_func_call_cost(27; CHECK: br i1 %exitcond28define amdgpu_kernel void @test_func_call_cost(ptr addrspace(1) noalias nocapture %out, ptr addrspace(1) noalias nocapture %in) #0 {29entry:30  br label %for.body31 32for.body:33  %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ]34  %sum.02 = phi float [ %fmul, %for.body ], [ 0.0, %entry ]35  %arrayidx.in = getelementptr inbounds float, ptr addrspace(1) %in, i32 %indvars.iv36  %arrayidx.out = getelementptr inbounds float, ptr addrspace(1) %out, i32 %indvars.iv37  %load = load float, ptr addrspace(1) %arrayidx.in38  %fptr = load ptr, ptr addrspace(4) null39  %call = tail call float %fptr(float %load, float 1.0)40  %fmul = fmul float %call, %sum.0241  store float %fmul, ptr addrspace(1) %arrayidx.out42  %indvars.iv.next = add i32 %indvars.iv, 143  %exitcond = icmp eq i32 %indvars.iv.next, 1644  br i1 %exitcond, label %for.end, label %for.body45 46for.end:47  ret void48}49 50; CHECK-LABEL: @test_indirect_call_cost(51; CHECK: br i1 %exitcond52define amdgpu_kernel void @test_indirect_call_cost(ptr addrspace(1) noalias nocapture %out, ptr addrspace(1) noalias nocapture %in) #0 {53entry:54  br label %for.body55 56for.body:57  %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ]58  %sum.02 = phi float [ %fmul, %for.body ], [ 0.0, %entry ]59  %arrayidx.in = getelementptr inbounds float, ptr addrspace(1) %in, i32 %indvars.iv60  %arrayidx.out = getelementptr inbounds float, ptr addrspace(1) %out, i32 %indvars.iv61  %load = load float, ptr addrspace(1) %arrayidx.in62  %min = call float @func(float %load, float 1.0);63  %fmul = fmul float %min, %sum.0264  store float %fmul, ptr addrspace(1) %arrayidx.out65  %indvars.iv.next = add i32 %indvars.iv, 166  %exitcond = icmp eq i32 %indvars.iv.next, 1667  br i1 %exitcond, label %for.end, label %for.body68 69for.end:70  ret void71}72 73declare float @llvm.minnum.f32(float, float) #174declare float @func(float, float) #175 76attributes #0 = { nounwind }77attributes #1 = { nounwind readnone speculatable }78