summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-09-21 13:52:24 +0000
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-09-21 13:52:24 +0000
commitb0e8a2e62309b7a103f8dc23e6d1564e49384db7 (patch)
tree1a7b2420bac5bfddd06622bef111048fe37d6b59 /llvm/test/CodeGen
parent7d2f38d6006619721a037d31ef9a8459ad2a9be1 (diff)
downloadbcm5719-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.mir44
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
+
+...
OpenPOWER on IntegriCloud