X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FPowerPC%2Fctrloops.ll;h=fff9e20d262603cacc9aa30b3e28673a5c6c8868;hb=1f9ea3a230a5cbebb20c30aad34d6cabade898e1;hp=f11e332d5fbc5487f353224a6ea2900fe44f1933;hpb=2dc50d306752c8672d1543feb88517705cdb25e7;p=oota-llvm.git diff --git a/test/CodeGen/PowerPC/ctrloops.ll b/test/CodeGen/PowerPC/ctrloops.ll index f11e332d5fb..fff9e20d262 100644 --- a/test/CodeGen/PowerPC/ctrloops.ll +++ b/test/CodeGen/PowerPC/ctrloops.ll @@ -1,6 +1,6 @@ target 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" target triple = "powerpc64-unknown-freebsd10.0" -; RUN: llc < %s -march=ppc64 | FileCheck %s +; RUN: llc < %s -march=ppc64 -relocation-model=pic | FileCheck %s @a = common global i32 0, align 4 @@ -10,7 +10,7 @@ entry: for.body: ; preds = %for.body, %entry %i.01 = phi i32 [ 0, %entry ], [ %inc, %for.body ] - %0 = load volatile i32* @a, align 4 + %0 = load volatile i32, i32* @a, align 4 %add = add nsw i32 %0, %c store volatile i32 %add, i32* @a, align 4 %inc = add nsw i32 %i.01, 1 @@ -22,7 +22,7 @@ for.end: ; preds = %for.body ; CHECK: @test1 ; CHECK-NOT: or 3, 3, 3 ; CHECK: mtctr -; CHECK-NOT: addi +; CHECK-NOT: addi {[0-9]+} ; CHECK-NOT: cmplwi ; CHECK: bdnz } @@ -34,7 +34,7 @@ entry: for.body: ; preds = %entry, %for.body %i.02 = phi i32 [ %inc, %for.body ], [ 0, %entry ] - %0 = load volatile i32* @a, align 4 + %0 = load volatile i32, i32* @a, align 4 %add = add nsw i32 %0, %c store volatile i32 %add, i32* @a, align 4 %inc = add nsw i32 %i.02, 1 @@ -45,7 +45,7 @@ for.end: ; preds = %for.body, %entry ret void ; CHECK: @test2 ; CHECK: mtctr -; CHECK-NOT: addi +; CHECK-NOT: addi {[0-9]+} ; CHECK-NOT: cmplwi ; CHECK: bdnz } @@ -58,7 +58,7 @@ entry: for.body: ; preds = %entry, %for.body %i.02 = phi i32 [ %inc, %for.body ], [ 0, %entry ] %mul = mul nsw i32 %i.02, %c - %0 = load volatile i32* @a, align 4 + %0 = load volatile i32, i32* @a, align 4 %add = add nsw i32 %0, %mul store volatile i32 %add, i32* @a, align 4 %inc = add nsw i32 %i.02, 1 @@ -69,7 +69,30 @@ for.end: ; preds = %for.body, %entry ret void ; CHECK: @test3 ; CHECK: mtctr -; CHECK-NOT: addi +; CHECK-NOT: addi {[0-9]+} ; CHECK-NOT: cmplwi ; CHECK: bdnz } + +@tls_var = external thread_local global i8 + +define i32 @test4() { +entry: + br label %for.body + +for.body: ; preds = %for.body, %entry + %phi = phi i32 [ %dec, %for.body ], [ undef, %entry ] + %load = ptrtoint i8* @tls_var to i32 + %dec = add i32 %phi, -1 + %cmp = icmp sgt i32 %phi, 1 + br i1 %cmp, label %for.body, label %return + +return: ; preds = %for.body + ret i32 %load +; CHECK-LABEL: @test4 +; CHECK-NOT: mtctr +; CHECK: addi {{[0-9]+}} +; CHECK: cmpwi +; CHECK-NOT: bdnz +; CHECK: bgt +}