mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
ADC and SBB uses EFLAGS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42640 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bca98326b6
commit
3154cb67d1
@ -1853,6 +1853,7 @@ let isTwoAddress = 0 in {
|
||||
[(store (add (load addr:$dst), i32immSExt8:$src2), addr:$dst)]>;
|
||||
}
|
||||
|
||||
let Uses = [EFLAGS] in {
|
||||
let isCommutable = 1 in { // X = ADC Y, Z --> X = ADC Z, Y
|
||||
def ADC32rr : I<0x11, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
|
||||
"adc{l}\t{$src2, $dst|$dst, $src2}",
|
||||
@ -1879,6 +1880,7 @@ let isTwoAddress = 0 in {
|
||||
"adc{l}\t{$src2, $dst|$dst, $src2}",
|
||||
[(store (adde (load addr:$dst), i32immSExt8:$src2), addr:$dst)]>;
|
||||
}
|
||||
} // Uses = [EFLAGS]
|
||||
|
||||
def SUB8rr : I<0x28, MRMDestReg, (outs GR8 :$dst), (ins GR8 :$src1, GR8 :$src2),
|
||||
"sub{b}\t{$src2, $dst|$dst, $src2}",
|
||||
@ -1945,6 +1947,7 @@ let isTwoAddress = 0 in {
|
||||
[(store (sub (load addr:$dst), i32immSExt8:$src2), addr:$dst)]>;
|
||||
}
|
||||
|
||||
let Uses = [EFLAGS] in {
|
||||
def SBB32rr : I<0x19, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
|
||||
"sbb{l}\t{$src2, $dst|$dst, $src2}",
|
||||
[(set GR32:$dst, (sube GR32:$src1, GR32:$src2))]>;
|
||||
@ -1972,6 +1975,7 @@ def SBB32ri : Ii32<0x81, MRM3r, (outs GR32:$dst), (ins GR32:$src1, i32imm:$src2
|
||||
def SBB32ri8 : Ii8<0x83, MRM3r, (outs GR32:$dst), (ins GR32:$src1, i32i8imm:$src2),
|
||||
"sbb{l}\t{$src2, $dst|$dst, $src2}",
|
||||
[(set GR32:$dst, (sube GR32:$src1, i32immSExt8:$src2))]>;
|
||||
} // Uses = [EFLAGS]
|
||||
} // Defs = [EFLAGS]
|
||||
|
||||
let Defs = [EFLAGS] in {
|
||||
|
@ -262,6 +262,7 @@ def ADD64mi8 : RIi8<0x83, MRM0m, (outs), (ins i64mem:$dst, i64i8imm :$src2),
|
||||
"add{q}\t{$src2, $dst|$dst, $src2}",
|
||||
[(store (add (load addr:$dst), i64immSExt8:$src2), addr:$dst)]>;
|
||||
|
||||
let Uses = [EFLAGS] in {
|
||||
let isTwoAddress = 1 in {
|
||||
let isCommutable = 1 in
|
||||
def ADC64rr : RI<0x11, MRMDestReg, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2),
|
||||
@ -289,6 +290,7 @@ def ADC64mi32 : RIi32<0x81, MRM2m, (outs), (ins i64mem:$dst, i64i32imm:$src2),
|
||||
def ADC64mi8 : RIi8<0x83, MRM2m, (outs), (ins i64mem:$dst, i64i8imm :$src2),
|
||||
"adc{q}\t{$src2, $dst|$dst, $src2}",
|
||||
[(store (adde (load addr:$dst), i64immSExt8:$src2), addr:$dst)]>;
|
||||
} // Uses = [EFLAGS]
|
||||
|
||||
let isTwoAddress = 1 in {
|
||||
def SUB64rr : RI<0x29, MRMDestReg, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2),
|
||||
@ -317,6 +319,7 @@ def SUB64mi8 : RIi8<0x83, MRM5m, (outs), (ins i64mem:$dst, i64i8imm :$src2),
|
||||
"sub{q}\t{$src2, $dst|$dst, $src2}",
|
||||
[(store (sub (load addr:$dst), i64immSExt8:$src2), addr:$dst)]>;
|
||||
|
||||
let Uses = [EFLAGS] in {
|
||||
let isTwoAddress = 1 in {
|
||||
def SBB64rr : RI<0x19, MRMDestReg, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2),
|
||||
"sbb{q}\t{$src2, $dst|$dst, $src2}",
|
||||
@ -343,6 +346,7 @@ def SBB64mi32 : RIi32<0x81, MRM3m, (outs), (ins i64mem:$dst, i64i32imm:$src2),
|
||||
def SBB64mi8 : RIi8<0x83, MRM3m, (outs), (ins i64mem:$dst, i64i8imm :$src2),
|
||||
"sbb{q}\t{$src2, $dst|$dst, $src2}",
|
||||
[(store (sube (load addr:$dst), i64immSExt8:$src2), addr:$dst)]>;
|
||||
} // Uses = [EFLAGS]
|
||||
} // Defs = [EFLAGS]
|
||||
|
||||
// Unsigned multiplication
|
||||
|
Loading…
Reference in New Issue
Block a user