summaryrefslogtreecommitdiff
path: root/test/CodeGen/SystemZ
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
commitd4b6c99f73cfe8288fa51df32ecbd7054bd8a43a (patch)
tree133c0f87db2eeed421a11a387e1bef9b4cee8095 /test/CodeGen/SystemZ
parent4b02ed37e6b925f978b5839aaa7ba6ef3c62f887 (diff)
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313877 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/SystemZ')
-rw-r--r--test/CodeGen/SystemZ/fp-cmp-07.mir44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/CodeGen/SystemZ/fp-cmp-07.mir b/test/CodeGen/SystemZ/fp-cmp-07.mir
new file mode 100644
index 00000000000..1d766fe300a
--- /dev/null
+++ b/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
+
+...