mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
Add patterns for integer negate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75980 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8c993e1632
commit
cfca8b1f62
@ -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 {
|
||||
|
7
test/CodeGen/SystemZ/02-RetNeg.ll
Normal file
7
test/CodeGen/SystemZ/02-RetNeg.ll
Normal file
@ -0,0 +1,7 @@
|
||||
; RUN: llvm-as < %s | llc -march=systemz | grep lcgr | count 1
|
||||
|
||||
define i64 @foo(i64 %a) {
|
||||
entry:
|
||||
%c = sub i64 0, %a
|
||||
ret i64 %c
|
||||
}
|
8
test/CodeGen/SystemZ/03-RetNegImmSubreg.ll
Normal file
8
test/CodeGen/SystemZ/03-RetNegImmSubreg.ll
Normal file
@ -0,0 +1,8 @@
|
||||
; RUN: llvm-as < %s | llc -march=systemz | grep lcr | count 1
|
||||
|
||||
define i32 @foo(i32 %a) {
|
||||
entry:
|
||||
%c = sub i32 0, %a
|
||||
ret i32 %c
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user