diff options
| author | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2018-01-15 15:41:26 +0000 |
|---|---|---|
| committer | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2018-01-15 15:41:26 +0000 |
| commit | 776a81a483da73b52f8d73ce441b0f03dbf5411b (patch) | |
| tree | 741f6d0c18061180376d244be6a0d01830cfab21 /llvm/test/CodeGen/SystemZ | |
| parent | 264a683ec89b676fabce9ebdce671a86859caa73 (diff) | |
| download | bcm5719-llvm-776a81a483da73b52f8d73ce441b0f03dbf5411b.tar.gz bcm5719-llvm-776a81a483da73b52f8d73ce441b0f03dbf5411b.zip | |
[SystemZ] Check for legality before doing LOAD AND TEST transformations.
Since a load and test instruction treat its operands as signed, it can only
replace a logical compare for EQ/NE uses.
Review: Ulrich Weigand
https://bugs.llvm.org/show_bug.cgi?id=35662
llvm-svn: 322488
Diffstat (limited to 'llvm/test/CodeGen/SystemZ')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/load-and-test.mir | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/load-and-test.mir b/llvm/test/CodeGen/SystemZ/load-and-test.mir new file mode 100644 index 00000000000..da01dbc79a9 --- /dev/null +++ b/llvm/test/CodeGen/SystemZ/load-and-test.mir @@ -0,0 +1,52 @@ +# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 -start-before=postrapseudos %s -o - \ +# RUN: | FileCheck %s +# +# Check that integer load and test instructions are not emitted for unsigned +# comparisons unless checking for equality. That would be wrong, since the +# operands are implicitly treated as signed values. + +# Not legal: Logical comparison used for >= (CCMask is 10). +# CHECK-LABEL: fun0 +# CHECK-NOT: lt +--- +name: fun0 +tracksRegLiveness: true +body: | + bb.0 (): + liveins: %r1d + renamable %r0l = L %r1d, 0, %noreg + CLFIMux killed renamable %r0l, 0, implicit-def %cc + BRC 14, 10, %bb.2, implicit %cc + + bb.1 (): + liveins: %r0l + ST killed renamable %r0l, %r15d, 164, %noreg + + bb.2 (): + liveins: %r0l + ST killed renamable %r0l, %r15d, 164, %noreg + Return +... + +# Legal: Logical comparison used for == (CCMask is 8). +# CHECK-LABEL: fun1 +# CHECK: lt +--- +name: fun1 +tracksRegLiveness: true +body: | + bb.0 (): + liveins: %r1d + renamable %r0l = L %r1d, 0, %noreg + CLFIMux killed renamable %r0l, 0, implicit-def %cc + BRC 14, 8, %bb.2, implicit %cc + + bb.1 (): + liveins: %r0l + ST killed renamable %r0l, %r15d, 164, %noreg + + bb.2 (): + liveins: %r0l + ST killed renamable %r0l, %r15d, 164, %noreg + Return +... |

