diff options
| author | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2017-09-21 13:52:24 +0000 |
|---|---|---|
| committer | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2017-09-21 13:52:24 +0000 |
| commit | b0e8a2e62309b7a103f8dc23e6d1564e49384db7 (patch) | |
| tree | 1a7b2420bac5bfddd06622bef111048fe37d6b59 /llvm/test/CodeGen | |
| parent | 7d2f38d6006619721a037d31ef9a8459ad2a9be1 (diff) | |
| download | bcm5719-llvm-b0e8a2e62309b7a103f8dc23e6d1564e49384db7.tar.gz bcm5719-llvm-b0e8a2e62309b7a103f8dc23e6d1564e49384db7.zip | |
[SystemZ] Improve optimizeCompareZero()
More conversions to load-and-test can be made with this patch by adding a
forward search in optimizeCompareZero().
Review: Ulrich Weigand
https://reviews.llvm.org/D38076
llvm-svn: 313877
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/fp-cmp-07.mir | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/fp-cmp-07.mir b/llvm/test/CodeGen/SystemZ/fp-cmp-07.mir new file mode 100644 index 00000000000..1d766fe300a --- /dev/null +++ b/llvm/test/CodeGen/SystemZ/fp-cmp-07.mir @@ -0,0 +1,44 @@ +# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z10 -no-integrated-as -start-after=block-placement %s -o - | FileCheck %s +# Test that LTEBR is used without an unnecessary LER + +--- | + define float @f15(float %val, float %dummy, float* %dest) { + entry: + call void asm sideeffect "blah $0", "{f2}"(float %val) + %cmp = fcmp olt float %val, 0.000000e+00 + br i1 %cmp, label %exit, label %store + + store: ; preds = %entry + store float %val, float* %dest + br label %exit + + exit: ; preds = %store, %entry + ret float %val + } + +... + +# CHECK: ltebr %f2, %f0 + +--- +name: f15 +tracksRegLiveness: true +liveins: + - { reg: '%f0s', virtual-reg: '' } + - { reg: '%r2d', virtual-reg: '' } +body: | + bb.0.entry: + liveins: %f0s, %r2d + + LTEBRCompare %f0s, %f0s, implicit-def %cc + %f2s = LER %f0s + INLINEASM $"blah $0", 1, 9, %f2s + CondReturn 15, 4, implicit %f0s, implicit %cc + + bb.1.store: + liveins: %f0s, %r2d + + STE %f0s, killed %r2d, 0, _ :: (store 4 into %ir.dest) + Return implicit %f0s + +... |

