71 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3; Test that we generate a hardware loop for long long counters.4; Tests signed/unsigned GT, EQ, and NEQ cases.5 6; signed GT case7; CHECK-LABEL: f0:8; CHECK: loop09define i32 @f0(ptr nocapture %a0) #0 {10b0:11 br label %b112b1: ; preds = %b1, %b013 %v0 = phi i32 [ 0, %b0 ], [ %v5, %b1 ]14 %v1 = phi i64 [ 0, %b0 ], [ %v6, %b1 ]15 %v2 = trunc i64 %v1 to i3216 %v3 = getelementptr inbounds i32, ptr %a0, i32 %v217 %v4 = load i32, ptr %v3, align 418 %v5 = add nsw i32 %v4, %v019 %v6 = add nsw i64 %v1, 120 %v7 = icmp slt i64 %v6, 821 br i1 %v7, label %b1, label %b222 23b2: ; preds = %b124 ret i32 %v525}26 27; unsigned signed GT case28; CHECK-LABEL: f1:29; CHECK: loop030define i32 @f1(ptr nocapture %a0) #0 {31b0:32 br label %b133b1: ; preds = %b1, %b034 %v0 = phi i32 [ 0, %b0 ], [ %v5, %b1 ]35 %v1 = phi i64 [ 0, %b0 ], [ %v6, %b1 ]36 %v2 = trunc i64 %v1 to i3237 %v3 = getelementptr inbounds i32, ptr %a0, i32 %v238 %v4 = load i32, ptr %v3, align 439 %v5 = add nsw i32 %v4, %v040 %v6 = add i64 %v1, 141 %v7 = icmp ult i64 %v6, 842 br i1 %v7, label %b1, label %b243 44b2: ; preds = %b145 ret i32 %v546}47 48; EQ case49; CHECK-LABEL: f2:50; CHECK: loop051define i32 @f2(ptr nocapture %a0) #0 {52b0:53 br label %b154 55b1: ; preds = %b1, %b056 %v0 = phi i32 [ 0, %b0 ], [ %v5, %b1 ]57 %v1 = phi i64 [ 0, %b0 ], [ %v6, %b1 ]58 %v2 = trunc i64 %v1 to i3259 %v3 = getelementptr inbounds i32, ptr %a0, i32 %v260 %v4 = load i32, ptr %v3, align 461 %v5 = add nsw i32 %v4, %v062 %v6 = add nsw i64 %v1, 163 %v7 = icmp eq i64 %v6, 864 br i1 %v7, label %b2, label %b165 66b2: ; preds = %b167 ret i32 %v568}69 70attributes #0 = { nounwind readonly "target-cpu"="hexagonv55" }71