diff options
| author | Eric Christopher <echristo@gmail.com> | 2019-04-17 04:52:47 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@gmail.com> | 2019-04-17 04:52:47 +0000 |
| commit | cee313d288a4faf0355d76fb6e0e927e211d08a5 (patch) | |
| tree | d386075318d761197779a96e5d8fc0dc7b06342b /llvm/test/Transforms/PartiallyInlineLibCalls | |
| parent | c3d6a929fdd92fd06d4304675ade8d7210ee711a (diff) | |
| download | bcm5719-llvm-cee313d288a4faf0355d76fb6e0e927e211d08a5.tar.gz bcm5719-llvm-cee313d288a4faf0355d76fb6e0e927e211d08a5.zip | |
Revert "Temporarily Revert "Add basic loop fusion pass.""
The reversion apparently deleted the test/Transforms directory.
Will be re-reverting again.
llvm-svn: 358552
Diffstat (limited to 'llvm/test/Transforms/PartiallyInlineLibCalls')
4 files changed, 60 insertions, 0 deletions
diff --git a/llvm/test/Transforms/PartiallyInlineLibCalls/X86/good-prototype.ll b/llvm/test/Transforms/PartiallyInlineLibCalls/X86/good-prototype.ll new file mode 100644 index 00000000000..98aa4621986 --- /dev/null +++ b/llvm/test/Transforms/PartiallyInlineLibCalls/X86/good-prototype.ll @@ -0,0 +1,23 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -S -partially-inline-libcalls -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s +; RUN: opt -S -passes=partially-inline-libcalls -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s + +define float @f(float %val) { +; CHECK-LABEL: @f( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[RES:%.*]] = tail call float @sqrtf(float [[VAL:%.*]]) #0 +; CHECK-NEXT: [[TMP0:%.*]] = fcmp oge float [[VAL]], 0.000000e+00 +; CHECK-NEXT: br i1 [[TMP0]], label [[ENTRY_SPLIT:%.*]], label [[CALL_SQRT:%.*]] +; CHECK: call.sqrt: +; CHECK-NEXT: [[TMP1:%.*]] = tail call float @sqrtf(float [[VAL]]) +; CHECK-NEXT: br label [[ENTRY_SPLIT]] +; CHECK: entry.split: +; CHECK-NEXT: [[TMP2:%.*]] = phi float [ [[RES]], [[ENTRY:%.*]] ], [ [[TMP1]], [[CALL_SQRT]] ] +; CHECK-NEXT: ret float [[TMP2]] +; +entry: + %res = tail call float @sqrtf(float %val) + ret float %res +} + +declare float @sqrtf(float) diff --git a/llvm/test/Transforms/PartiallyInlineLibCalls/X86/lit.local.cfg b/llvm/test/Transforms/PartiallyInlineLibCalls/X86/lit.local.cfg new file mode 100644 index 00000000000..afde89be896 --- /dev/null +++ b/llvm/test/Transforms/PartiallyInlineLibCalls/X86/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'X86' in config.root.targets: + config.unsupported = True diff --git a/llvm/test/Transforms/PartiallyInlineLibCalls/bad-prototype.ll b/llvm/test/Transforms/PartiallyInlineLibCalls/bad-prototype.ll new file mode 100644 index 00000000000..78c192e8c5c --- /dev/null +++ b/llvm/test/Transforms/PartiallyInlineLibCalls/bad-prototype.ll @@ -0,0 +1,23 @@ +; RUN: opt -S -partially-inline-libcalls < %s | FileCheck %s +; RUN: opt -S -passes=partially-inline-libcalls < %s | FileCheck %s + +target triple = "x86_64-unknown-linux-gnu" + +declare i32 @sqrt() +declare float @sqrtf() + +; CHECK-LABEL: @foo +define i32 @foo() { + ; CHECK: call{{.*}}@sqrt + ; CHECK-NOT: call{{.*}}@sqrt + %r = call i32 @sqrt() + ret i32 %r +} + +; CHECK-LABEL: @bar +define float @bar() { + ; CHECK: call{{.*}}@sqrtf + ; CHECK-NOT: call{{.*}}@sqrtf + %r = call float @sqrtf() + ret float %r +} diff --git a/llvm/test/Transforms/PartiallyInlineLibCalls/nobuiltin.ll b/llvm/test/Transforms/PartiallyInlineLibCalls/nobuiltin.ll new file mode 100644 index 00000000000..c648ce07cf5 --- /dev/null +++ b/llvm/test/Transforms/PartiallyInlineLibCalls/nobuiltin.ll @@ -0,0 +1,12 @@ +; RUN: opt -S -partially-inline-libcalls -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s +; RUN: opt -S -passes=partially-inline-libcalls -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s + +define float @f(float %val) { +; CHECK-LABEL: @f +; CHECK: call{{.*}}@sqrtf +; CHECK-NOT: call{{.*}}@sqrtf + %res = tail call float @sqrtf(float %val) nobuiltin + ret float %res +} + +declare float @sqrtf(float) |

