mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
Annotate remaining IIC_BIN_* instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177539 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -932,7 +932,8 @@ class BinOpMI8<string mnemonic, X86TypeInfo typeinfo,
|
|||||||
Format f, list<dag> pattern>
|
Format f, list<dag> pattern>
|
||||||
: ITy<0x82, f, typeinfo,
|
: ITy<0x82, f, typeinfo,
|
||||||
(outs), (ins typeinfo.MemOperand:$dst, typeinfo.Imm8Operand:$src),
|
(outs), (ins typeinfo.MemOperand:$dst, typeinfo.Imm8Operand:$src),
|
||||||
mnemonic, "{$src, $dst|$dst, $src}", pattern, IIC_BIN_MEM> {
|
mnemonic, "{$src, $dst|$dst, $src}", pattern, IIC_BIN_MEM>,
|
||||||
|
Sched<[WriteALULd, WriteRMW]> {
|
||||||
let ImmT = Imm8; // Always 8-bit immediate.
|
let ImmT = Imm8; // Always 8-bit immediate.
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -964,7 +965,7 @@ class BinOpAI<bits<8> opcode, string mnemonic, X86TypeInfo typeinfo,
|
|||||||
Register areg, string operands>
|
Register areg, string operands>
|
||||||
: ITy<opcode, RawFrm, typeinfo,
|
: ITy<opcode, RawFrm, typeinfo,
|
||||||
(outs), (ins typeinfo.ImmOperand:$src),
|
(outs), (ins typeinfo.ImmOperand:$src),
|
||||||
mnemonic, operands, []> {
|
mnemonic, operands, []>, Sched<[WriteALU]> {
|
||||||
let ImmT = typeinfo.ImmEncoding;
|
let ImmT = typeinfo.ImmEncoding;
|
||||||
let Uses = [areg];
|
let Uses = [areg];
|
||||||
let Defs = [areg];
|
let Defs = [areg];
|
||||||
@@ -1250,7 +1251,7 @@ let isCompare = 1, Defs = [EFLAGS] in {
|
|||||||
// register class is constrained to GR8_NOREX.
|
// register class is constrained to GR8_NOREX.
|
||||||
let isPseudo = 1 in
|
let isPseudo = 1 in
|
||||||
def TEST8ri_NOREX : I<0, Pseudo, (outs), (ins GR8_NOREX:$src, i8imm:$mask),
|
def TEST8ri_NOREX : I<0, Pseudo, (outs), (ins GR8_NOREX:$src, i8imm:$mask),
|
||||||
"", [], IIC_BIN_NONMEM>;
|
"", [], IIC_BIN_NONMEM>, Sched<[WriteALU]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
@@ -1313,6 +1314,7 @@ let Predicates = [HasBMI2] in {
|
|||||||
// ADCX Instruction
|
// ADCX Instruction
|
||||||
//
|
//
|
||||||
let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
||||||
|
let SchedRW = [WriteALU] in {
|
||||||
def ADCX32rr : I<0xF6, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
|
def ADCX32rr : I<0xF6, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
|
||||||
"adcx{l}\t{$src, $dst|$dst, $src}",
|
"adcx{l}\t{$src, $dst|$dst, $src}",
|
||||||
[], IIC_BIN_NONMEM>, T8, OpSize;
|
[], IIC_BIN_NONMEM>, T8, OpSize;
|
||||||
@@ -1320,8 +1322,9 @@ let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
|||||||
def ADCX64rr : I<0xF6, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
|
def ADCX64rr : I<0xF6, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
|
||||||
"adcx{q}\t{$src, $dst|$dst, $src}",
|
"adcx{q}\t{$src, $dst|$dst, $src}",
|
||||||
[], IIC_BIN_NONMEM>, T8, OpSize, REX_W, Requires<[In64BitMode]>;
|
[], IIC_BIN_NONMEM>, T8, OpSize, REX_W, Requires<[In64BitMode]>;
|
||||||
|
} // SchedRW
|
||||||
|
|
||||||
let mayLoad = 1 in {
|
let mayLoad = 1, SchedRW = [WriteALULd] in {
|
||||||
def ADCX32rm : I<0xF6, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src),
|
def ADCX32rm : I<0xF6, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src),
|
||||||
"adcx{l}\t{$src, $dst|$dst, $src}",
|
"adcx{l}\t{$src, $dst|$dst, $src}",
|
||||||
[], IIC_BIN_MEM>, T8, OpSize;
|
[], IIC_BIN_MEM>, T8, OpSize;
|
||||||
@@ -1336,6 +1339,7 @@ let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
|||||||
// ADOX Instruction
|
// ADOX Instruction
|
||||||
//
|
//
|
||||||
let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
||||||
|
let SchedRW = [WriteALU] in {
|
||||||
def ADOX32rr : I<0xF6, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
|
def ADOX32rr : I<0xF6, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
|
||||||
"adox{l}\t{$src, $dst|$dst, $src}",
|
"adox{l}\t{$src, $dst|$dst, $src}",
|
||||||
[], IIC_BIN_NONMEM>, T8XS;
|
[], IIC_BIN_NONMEM>, T8XS;
|
||||||
@@ -1343,8 +1347,9 @@ let hasSideEffects = 0, Predicates = [HasADX], Defs = [EFLAGS] in {
|
|||||||
def ADOX64rr : I<0xF6, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
|
def ADOX64rr : I<0xF6, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
|
||||||
"adox{q}\t{$src, $dst|$dst, $src}",
|
"adox{q}\t{$src, $dst|$dst, $src}",
|
||||||
[], IIC_BIN_NONMEM>, T8XS, REX_W, Requires<[In64BitMode]>;
|
[], IIC_BIN_NONMEM>, T8XS, REX_W, Requires<[In64BitMode]>;
|
||||||
|
} // SchedRW
|
||||||
|
|
||||||
let mayLoad = 1 in {
|
let mayLoad = 1, SchedRW = [WriteALULd] in {
|
||||||
def ADOX32rm : I<0xF6, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src),
|
def ADOX32rm : I<0xF6, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src),
|
||||||
"adox{l}\t{$src, $dst|$dst, $src}",
|
"adox{l}\t{$src, $dst|$dst, $src}",
|
||||||
[], IIC_BIN_MEM>, T8XS;
|
[], IIC_BIN_MEM>, T8XS;
|
||||||
|
Reference in New Issue
Block a user