summaryrefslogtreecommitdiff
path: root/lib/Target/SystemZ/SystemZInstrInfo.td
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2009-07-16 14:06:27 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2009-07-16 14:06:27 +0000
commitcfca8b1f62f9a334467cc3e184f43b2097417ba7 (patch)
treef7484d4a9581f716f686f8eb0522bf2374d1c84e /lib/Target/SystemZ/SystemZInstrInfo.td
parent8c993e1632383a7cc6793568be43fdd6f626a8c6 (diff)
downloadllvm-cfca8b1f62f9a334467cc3e184f43b2097417ba7.tar.gz
llvm-cfca8b1f62f9a334467cc3e184f43b2097417ba7.tar.bz2
llvm-cfca8b1f62f9a334467cc3e184f43b2097417ba7.tar.xz
Add patterns for integer negate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75980 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SystemZ/SystemZInstrInfo.td')
-rw-r--r--lib/Target/SystemZ/SystemZInstrInfo.td15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.td b/lib/Target/SystemZ/SystemZInstrInfo.td
index 49fd403a18..b08d0423fc 100644
--- a/lib/Target/SystemZ/SystemZInstrInfo.td
+++ b/lib/Target/SystemZ/SystemZInstrInfo.td
@@ -340,6 +340,21 @@ def MOV64rmm : Pseudo<(outs GR64:$from, GR64:$to), (ins riaddr:$dst),
//===----------------------------------------------------------------------===//
// Arithmetic Instructions
+let Defs = [PSW] in {
+def NEG32rr : Pseudo<(outs GR32:$dst), (ins GR32:$src),
+ "lcr\t{$dst, $src}",
+ [(set GR32:$dst, (ineg GR32:$src)),
+ (implicit PSW)]>;
+def NEG64rr : Pseudo<(outs GR64:$dst), (ins GR64:$src),
+ "lcgr\t{$dst, $src}",
+ [(set GR64:$dst, (ineg GR64:$src)),
+ (implicit PSW)]>;
+def NEG64rr32 : Pseudo<(outs GR64:$dst), (ins GR32:$src),
+ "lcgfr\t{$dst, $src}",
+ [(set GR64:$dst, (ineg (sext GR32:$src))),
+ (implicit PSW)]>;
+}
+
let isTwoAddress = 1 in {
let Defs = [PSW] in {