98 lines · plain
1; RUN: llc -verify-machineinstrs < %s -relocation-model=pic | FileCheck %s2target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"3target triple = "powerpc64-unknown-freebsd10.0"4 5@a = common global i32 0, align 46 7define void @test1(i32 %c) nounwind {8entry:9 br label %for.body10 11for.body: ; preds = %for.body, %entry12 %i.01 = phi i32 [ 0, %entry ], [ %inc, %for.body ]13 %0 = load volatile i32, ptr @a, align 414 %add = add nsw i32 %0, %c15 store volatile i32 %add, ptr @a, align 416 %inc = add nsw i32 %i.01, 117 %exitcond = icmp eq i32 %inc, 204818 br i1 %exitcond, label %for.end, label %for.body19 20for.end: ; preds = %for.body21 ret void22; CHECK: @test123; CHECK-NOT: or 3, 3, 324; CHECK: mtctr25; CHECK-NOT: addi {[0-9]+}26; CHECK-NOT: cmplwi27; CHECK: bdnz28}29 30define void @test2(i32 %c, i32 %d) nounwind {31entry:32 %cmp1 = icmp sgt i32 %d, 033 br i1 %cmp1, label %for.body, label %for.end34 35for.body: ; preds = %entry, %for.body36 %i.02 = phi i32 [ %inc, %for.body ], [ 0, %entry ]37 %0 = load volatile i32, ptr @a, align 438 %add = add nsw i32 %0, %c39 store volatile i32 %add, ptr @a, align 440 %inc = add nsw i32 %i.02, 141 %exitcond = icmp eq i32 %inc, %d42 br i1 %exitcond, label %for.end, label %for.body43 44for.end: ; preds = %for.body, %entry45 ret void46; CHECK: @test247; CHECK: mtctr48; CHECK-NOT: addi {[0-9]+}49; CHECK-NOT: cmplwi50; CHECK: bdnz51}52 53define void @test3(i32 %c, i32 %d) nounwind {54entry:55 %cmp1 = icmp sgt i32 %d, 056 br i1 %cmp1, label %for.body, label %for.end57 58for.body: ; preds = %entry, %for.body59 %i.02 = phi i32 [ %inc, %for.body ], [ 0, %entry ]60 %mul = mul nsw i32 %i.02, %c61 %0 = load volatile i32, ptr @a, align 462 %add = add nsw i32 %0, %mul63 store volatile i32 %add, ptr @a, align 464 %inc = add nsw i32 %i.02, 165 %exitcond = icmp eq i32 %inc, %d66 br i1 %exitcond, label %for.end, label %for.body67 68for.end: ; preds = %for.body, %entry69 ret void70; CHECK: @test371; CHECK: mtctr72; CHECK-NOT: addi {[0-9]+}73; CHECK-NOT: cmplwi74; CHECK: bdnz75}76 77@tls_var = external thread_local global i878 79define i32 @test4(i32 %inp) {80entry:81 br label %for.body82 83for.body: ; preds = %for.body, %entry84 %phi = phi i32 [ %dec, %for.body ], [ %inp, %entry ]85 %load = ptrtoint ptr @tls_var to i3286 %val = add i32 %load, %phi87 %dec = add i32 %phi, -188 %cmp = icmp sgt i32 %phi, 189 br i1 %cmp, label %for.body, label %return90 91return: ; preds = %for.body92 ret i32 %val93; CHECK-LABEL: @test494; CHECK: mtctr95; CHECK: bdnz96; CHECK: __tls_get_addr97}98