brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 9426f44 Raw
52 lines · plain
1; RUN: llc -mtriple=hexagon -mcpu=hexagonv5 -enable-pipeliner -verify-machineinstrs < %s | FileCheck %s2 3; If the trip count is a compile-time constant, then decrement it instead4; of computing a new LC0 value.5 6; CHECK-LABEL: @test7; CHECK: loop0(.LBB0_1,#999)8 9define i32 @test(ptr %A, ptr %B, i32 %count) {10entry:11  br label %for.body12 13for.body:14  %sum.02 = phi i32 [ 0, %entry ], [ %add, %for.body ]15  %arrayidx.phi = phi ptr [ %A, %entry ], [ %arrayidx.inc, %for.body ]16  %i.01 = phi i32 [ 0, %entry ], [ %inc, %for.body ]17  %0 = load i32, ptr %arrayidx.phi, align 418  %add = add nsw i32 %0, %sum.0219  %inc = add nsw i32 %i.01, 120  %exitcond = icmp eq i32 %inc, 100021  %arrayidx.inc = getelementptr i32, ptr %arrayidx.phi, i32 122  br i1 %exitcond, label %for.end, label %for.body23 24for.end:25  ret i32 %add26}27 28; The constant trip count is small enough that the kernel is not executed.29 30; CHECK-LABEL: @test131; CHECK-NOT: loop0(32 33define i32 @test1(ptr %A, ptr %B, i32 %count) {34entry:35  br label %for.body36 37for.body:38  %sum.02 = phi i32 [ 0, %entry ], [ %add, %for.body ]39  %arrayidx.phi = phi ptr [ %A, %entry ], [ %arrayidx.inc, %for.body ]40  %i.01 = phi i32 [ 0, %entry ], [ %inc, %for.body ]41  %0 = load i32, ptr %arrayidx.phi, align 442  %add = add nsw i32 %0, %sum.0243  %inc = add nsw i32 %i.01, 144  %exitcond = icmp eq i32 %inc, 145  %arrayidx.inc = getelementptr i32, ptr %arrayidx.phi, i32 146  br i1 %exitcond, label %for.end, label %for.body47 48for.end:49  ret i32 %add50}51 52