forked from OSchip/llvm-project
X86: Mark MOV.*_{TC,NOREX} instruction as code gen only, they aren't real.
llvm-svn: 108680
This commit is contained in:
parent
961543377d
commit
150d948d3a
|
@ -374,6 +374,7 @@ def MOV64mi32 : RIi32<0xC7, MRM0m, (outs), (ins i64mem:$dst, i64i32imm:$src),
|
|||
[(store i64immSExt32:$src, addr:$dst)]>;
|
||||
|
||||
/// Versions of MOV64rr, MOV64rm, and MOV64mr for i64mem_TC and GR64_TC.
|
||||
let isCodeGenOnly = 1 in {
|
||||
let neverHasSideEffects = 1 in
|
||||
def MOV64rr_TC : RI<0x89, MRMDestReg, (outs GR64_TC:$dst), (ins GR64_TC:$src),
|
||||
"mov{q}\t{$src, $dst|$dst, $src}", []>;
|
||||
|
@ -388,6 +389,7 @@ let mayStore = 1 in
|
|||
def MOV64mr_TC : RI<0x89, MRMDestMem, (outs), (ins i64mem_TC:$dst, GR64_TC:$src),
|
||||
"mov{q}\t{$src, $dst|$dst, $src}",
|
||||
[]>;
|
||||
}
|
||||
|
||||
def MOV64o8a : RIi8<0xA0, RawFrm, (outs), (ins offset8:$src),
|
||||
"mov{q}\t{$src, %rax|%rax, $src}", []>;
|
||||
|
|
|
@ -1093,6 +1093,7 @@ def MOV32mr : I<0x89, MRMDestMem, (outs), (ins i32mem:$dst, GR32:$src),
|
|||
[(store GR32:$src, addr:$dst)]>;
|
||||
|
||||
/// Versions of MOV32rr, MOV32rm, and MOV32mr for i32mem_TC and GR32_TC.
|
||||
let isCodeGenOnly = 1 in {
|
||||
let neverHasSideEffects = 1 in
|
||||
def MOV32rr_TC : I<0x89, MRMDestReg, (outs GR32_TC:$dst), (ins GR32_TC:$src),
|
||||
"mov{l}\t{$src, $dst|$dst, $src}", []>;
|
||||
|
@ -1107,10 +1108,12 @@ let mayStore = 1 in
|
|||
def MOV32mr_TC : I<0x89, MRMDestMem, (outs), (ins i32mem_TC:$dst, GR32_TC:$src),
|
||||
"mov{l}\t{$src, $dst|$dst, $src}",
|
||||
[]>;
|
||||
}
|
||||
|
||||
// Versions of MOV8rr, MOV8mr, and MOV8rm that use i8mem_NOREX and GR8_NOREX so
|
||||
// that they can be used for copying and storing h registers, which can't be
|
||||
// encoded when a REX prefix is present.
|
||||
let isCodeGenOnly = 1 in {
|
||||
let neverHasSideEffects = 1 in
|
||||
def MOV8rr_NOREX : I<0x88, MRMDestReg,
|
||||
(outs GR8_NOREX:$dst), (ins GR8_NOREX:$src),
|
||||
|
@ -1124,6 +1127,7 @@ let mayLoad = 1,
|
|||
def MOV8rm_NOREX : I<0x8A, MRMSrcMem,
|
||||
(outs GR8_NOREX:$dst), (ins i8mem_NOREX:$src),
|
||||
"mov{b}\t{$src, $dst|$dst, $src} # NOREX", []>;
|
||||
}
|
||||
|
||||
// Moves to and from debug registers
|
||||
def MOV32rd : I<0x21, MRMDestReg, (outs GR32:$dst), (ins DEBUG_REG:$src),
|
||||
|
|
Loading…
Reference in New Issue