diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2021-04-28 16:19:30 +0300 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2021-04-28 16:21:14 +0300 |
commit | aee44fcd348b3841210fead04ba83ea7b0bd663a (patch) | |
tree | 2812c8555352f9c563cd07af1bb38e50eb3f1f9c | |
parent | d7cb2305a1e86809af6f818a225af0fbe9441b2f (diff) | |
download | llvm-aee44fcd348b3841210fead04ba83ea7b0bd663a.tar.gz |
[NFC][InlineCost] Add tests for D101228
-rw-r--r-- | llvm/test/Transforms/Inline/X86/extractvalue.ll | 26 | ||||
-rw-r--r-- | llvm/test/Transforms/Inline/X86/insertvalue.ll | 26 |
2 files changed, 52 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Inline/X86/extractvalue.ll b/llvm/test/Transforms/Inline/X86/extractvalue.ll new file mode 100644 index 000000000000..1d1603a49a16 --- /dev/null +++ b/llvm/test/Transforms/Inline/X86/extractvalue.ll @@ -0,0 +1,26 @@ +; RUN: opt < %s -inline -inline-threshold=0 -debug-only=inline-cost -print-instruction-comments -S -mtriple=x86_64-unknown-linux-gnu 2>&1 | FileCheck %s +; RUN: opt < %s -passes='cgscc(inline)' -inline-threshold=0 -debug-only=inline-cost -print-instruction-comments -S -mtriple=x86_64-unknown-linux-gnu 2>&1 | FileCheck %s +; REQUIRES: asserts + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-unknown" + +; Check that extractvalue's are free. + +; CHECK: Analyzing call of callee... (caller:caller_range) +; CHECK-NEXT: define i32 @callee({ i32, i32 } %arg) { +; CHECK-NEXT: ; cost before = -35, cost after = -30, threshold before = 0, threshold after = 0, cost delta = 5 +; CHECK-NEXT: %r = extractvalue { i32, i32 } %arg, 0 +; CHECK-NEXT: ; cost before = -30, cost after = -30, threshold before = 0, threshold after = 0, cost delta = 0 +; CHECK-NEXT: ret i32 %r +; CHECK-NEXT: } + +define i32 @callee({i32, i32} %arg) { + %r = extractvalue {i32, i32} %arg, 0 + ret i32 %r +} + +define i32 @caller_range({i32, i32} %arg) { + %r = call i32 @callee({i32, i32} %arg) + ret i32 %r +} diff --git a/llvm/test/Transforms/Inline/X86/insertvalue.ll b/llvm/test/Transforms/Inline/X86/insertvalue.ll new file mode 100644 index 000000000000..20111df73b33 --- /dev/null +++ b/llvm/test/Transforms/Inline/X86/insertvalue.ll @@ -0,0 +1,26 @@ +; RUN: opt < %s -inline -inline-threshold=0 -debug-only=inline-cost -print-instruction-comments -S -mtriple=x86_64-unknown-linux-gnu 2>&1 | FileCheck %s +; RUN: opt < %s -passes='cgscc(inline)' -inline-threshold=0 -debug-only=inline-cost -print-instruction-comments -S -mtriple=x86_64-unknown-linux-gnu 2>&1 | FileCheck %s +; REQUIRES: asserts + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-unknown" + +; Check that insertvalue's aren't free. + +; CHECK: Analyzing call of callee... (caller:caller_range) +; CHECK-NEXT: define { i32, i32 } @callee({ i32, i32 } %arg, i32 %arg1) { +; CHECK-NEXT: ; cost before = -40, cost after = -35, threshold before = 0, threshold after = 0, cost delta = 5 +; CHECK-NEXT: %r = insertvalue { i32, i32 } %arg, i32 %arg1, 0 +; CHECK-NEXT: ; cost before = -35, cost after = -35, threshold before = 0, threshold after = 0, cost delta = 0 +; CHECK-NEXT: ret { i32, i32 } %r +; CHECK-NEXT: } + +define {i32, i32} @callee({i32, i32} %arg, i32 %arg1) { + %r = insertvalue {i32, i32} %arg, i32 %arg1, 0 + ret {i32, i32} %r +} + +define {i32, i32} @caller_range({i32, i32} %arg, i32 %arg1) { + %r = call {i32, i32} @callee({i32, i32} %arg, i32 %arg1) + ret {i32, i32} %r +} |