mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-08 19:25:47 +00:00
Add a WriteMicrocoded for ancient microcoded instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177611 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1513,6 +1513,7 @@ def CLTS : I<0x06, RawFrm, (outs), (ins), "clts", [], IIC_CLTS>, TB;
|
|||||||
// Table lookup instructions
|
// Table lookup instructions
|
||||||
def XLAT : I<0xD7, RawFrm, (outs), (ins), "xlatb", [], IIC_XLAT>;
|
def XLAT : I<0xD7, RawFrm, (outs), (ins), "xlatb", [], IIC_XLAT>;
|
||||||
|
|
||||||
|
let SchedRW = [WriteMicrocoded] in {
|
||||||
// ASCII Adjust After Addition
|
// ASCII Adjust After Addition
|
||||||
// sets AL, AH and CF and AF of EFLAGS and uses AL and AF of EFLAGS
|
// sets AL, AH and CF and AF of EFLAGS and uses AL and AF of EFLAGS
|
||||||
def AAA : I<0x37, RawFrm, (outs), (ins), "aaa", [], IIC_AAA>,
|
def AAA : I<0x37, RawFrm, (outs), (ins), "aaa", [], IIC_AAA>,
|
||||||
@@ -1542,7 +1543,9 @@ def DAA : I<0x27, RawFrm, (outs), (ins), "daa", [], IIC_DAA>,
|
|||||||
// sets AL, CF and AF of EFLAGS and uses AL, CF and AF of EFLAGS
|
// sets AL, CF and AF of EFLAGS and uses AL, CF and AF of EFLAGS
|
||||||
def DAS : I<0x2F, RawFrm, (outs), (ins), "das", [], IIC_DAS>,
|
def DAS : I<0x2F, RawFrm, (outs), (ins), "das", [], IIC_DAS>,
|
||||||
Requires<[In32BitMode]>;
|
Requires<[In32BitMode]>;
|
||||||
|
} // SchedRW
|
||||||
|
|
||||||
|
let SchedRW = [WriteSystem] in {
|
||||||
// Check Array Index Against Bounds
|
// Check Array Index Against Bounds
|
||||||
def BOUNDS16rm : I<0x62, MRMSrcMem, (outs GR16:$dst), (ins i16mem:$src),
|
def BOUNDS16rm : I<0x62, MRMSrcMem, (outs GR16:$dst), (ins i16mem:$src),
|
||||||
"bound\t{$src, $dst|$dst, $src}", [], IIC_BOUND>, OpSize,
|
"bound\t{$src, $dst|$dst, $src}", [], IIC_BOUND>, OpSize,
|
||||||
@@ -1558,6 +1561,7 @@ def ARPL16rr : I<0x63, MRMDestReg, (outs GR16:$dst), (ins GR16:$src),
|
|||||||
def ARPL16mr : I<0x63, MRMDestMem, (outs), (ins i16mem:$dst, GR16:$src),
|
def ARPL16mr : I<0x63, MRMDestMem, (outs), (ins i16mem:$dst, GR16:$src),
|
||||||
"arpl\t{$src, $dst|$dst, $src}", [], IIC_ARPL_MEM>,
|
"arpl\t{$src, $dst|$dst, $src}", [], IIC_ARPL_MEM>,
|
||||||
Requires<[In32BitMode]>;
|
Requires<[In32BitMode]>;
|
||||||
|
} // SchedRW
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// MOVBE Instructions
|
// MOVBE Instructions
|
||||||
|
@@ -86,6 +86,9 @@ defm WriteCvtF2F : X86SchedWritePair; // Float -> Float size conversion.
|
|||||||
// Catch-all for expensive system instructions.
|
// Catch-all for expensive system instructions.
|
||||||
def WriteSystem : SchedWrite;
|
def WriteSystem : SchedWrite;
|
||||||
|
|
||||||
|
// Old microcoded instructions that nobody use.
|
||||||
|
def WriteMicrocoded : SchedWrite;
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Instruction Itinerary classes used for X86
|
// Instruction Itinerary classes used for X86
|
||||||
def IIC_DEFAULT : InstrItinClass;
|
def IIC_DEFAULT : InstrItinClass;
|
||||||
|
Reference in New Issue
Block a user