diff options
author | Stephen Hines <srhines@google.com> | 2015-04-01 18:49:24 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-01 18:49:26 +0000 |
commit | 3fa16bd6062e23bcdb82ed4dd965674792e6b761 (patch) | |
tree | 9348fc507292f7e8715d22d64ce5a32131b4f875 /test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll | |
parent | beed47390a60f6f0c77532b3d3f76bb47ef49423 (diff) | |
parent | ebe69fe11e48d322045d5949c83283927a0d790b (diff) | |
download | external_llvm-3fa16bd6062e23bcdb82ed4dd965674792e6b761.zip external_llvm-3fa16bd6062e23bcdb82ed4dd965674792e6b761.tar.gz external_llvm-3fa16bd6062e23bcdb82ed4dd965674792e6b761.tar.bz2 |
Merge "Update aosp/master LLVM for rebase to r230699."
Diffstat (limited to 'test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll')
-rw-r--r-- | test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll b/test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll new file mode 100644 index 0000000..57577f9 --- /dev/null +++ b/test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll @@ -0,0 +1,47 @@ +; RUN: llc -mcpu=a2 < %s | FileCheck %s -check-prefix=INVFUNCDESC +; RUN: llc -mcpu=a2 -mattr=-invariant-function-descriptors < %s | FileCheck %s -check-prefix=NONINVFUNCDESC +target datalayout = "E-m:e-i64:64-n32:64" +target triple = "powerpc64-unknown-linux-gnu" + +; Function Attrs: nounwind +define void @bar(void (...)* nocapture %x) #0 { +entry: + %callee.knr.cast = bitcast void (...)* %x to void ()* + br label %for.body + +; INVFUNCDESC-LABEL: @bar +; INVFUNCDESC-DAG: ld [[REG1:[0-9]+]], 8(3) +; INVFUNCDESC-DAG: ld [[REG2:[0-9]+]], 16(3) +; INVFUNCDESC-DAG: ld [[REG3:[0-9]+]], 0(3) + +; INVFUNCDESC: %for.body +; INVFUNCDESC: std 2, 40(1) +; INVFUNCDESC-DAG: mtctr [[REG3]] +; INVFUNCDESC-DAG: mr 11, [[REG2]] +; INVFUNCDESC-DAG: mr 2, [[REG1]] +; INVFUNCDESC: bctrl +; INVFUNCDESC-NEXT: ld 2, 40(1) + +; NONINVFUNCDESC-LABEL: @bar +; NONINVFUNCDESC: %for.body +; NONINVFUNCDESC: std 2, 40(1) +; NONINVFUNCDESC-DAG: ld 3, 0(30) +; NONINVFUNCDESC-DAG: ld 11, 16(30) +; NONINVFUNCDESC-DAG: ld 2, 8(30) +; NONINVFUNCDESC: mtctr 3 +; NONINVFUNCDESC: bctrl +; NONINVFUNCDESC-NEXT: ld 2, 40(1) + +for.body: ; preds = %for.body, %entry + %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] + tail call void %callee.knr.cast() #0 + %inc = add nuw nsw i32 %i.02, 1 + %exitcond = icmp eq i32 %inc, 1600000000 + br i1 %exitcond, label %for.end, label %for.body + +for.end: ; preds = %for.body + ret void +} + +attributes #0 = { nounwind } + |