mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[X86] Add hasSideEffects=0 and mayLoad=1 to MOVZX64* instructions. While there remove a superfluous _Q from the instruction names.
llvm-svn: 257032
This commit is contained in:
parent
1be3f64baf
commit
1e8c72699f
@ -146,18 +146,22 @@ def MOVSX64rm32: RI<0x63, MRMSrcMem, (outs GR64:$dst), (ins i32mem:$src),
|
||||
Sched<[WriteALULd]>, Requires<[In64BitMode]>;
|
||||
|
||||
// movzbq and movzwq encodings for the disassembler
|
||||
def MOVZX64rr8_Q : RI<0xB6, MRMSrcReg, (outs GR64:$dst), (ins GR8:$src),
|
||||
"movz{bq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALU]>;
|
||||
def MOVZX64rm8_Q : RI<0xB6, MRMSrcMem, (outs GR64:$dst), (ins i8mem:$src),
|
||||
"movz{bq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALULd]>;
|
||||
def MOVZX64rr16_Q : RI<0xB7, MRMSrcReg, (outs GR64:$dst), (ins GR16:$src),
|
||||
"movz{wq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALU]>;
|
||||
def MOVZX64rm16_Q : RI<0xB7, MRMSrcMem, (outs GR64:$dst), (ins i16mem:$src),
|
||||
"movz{wq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALULd]>;
|
||||
let hasSideEffects = 0 in {
|
||||
def MOVZX64rr8 : RI<0xB6, MRMSrcReg, (outs GR64:$dst), (ins GR8:$src),
|
||||
"movz{bq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALU]>;
|
||||
let mayLoad = 1 in
|
||||
def MOVZX64rm8 : RI<0xB6, MRMSrcMem, (outs GR64:$dst), (ins i8mem:$src),
|
||||
"movz{bq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALULd]>;
|
||||
def MOVZX64rr16 : RI<0xB7, MRMSrcReg, (outs GR64:$dst), (ins GR16:$src),
|
||||
"movz{wq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALU]>;
|
||||
let mayLoad = 1 in
|
||||
def MOVZX64rm16 : RI<0xB7, MRMSrcMem, (outs GR64:$dst), (ins i16mem:$src),
|
||||
"movz{wq|x}\t{$src, $dst|$dst, $src}", [], IIC_MOVZX>,
|
||||
TB, Sched<[WriteALULd]>;
|
||||
}
|
||||
|
||||
// 64-bit zero-extension patterns use SUBREG_TO_REG and an operation writing a
|
||||
// 32-bit register.
|
||||
|
@ -2965,8 +2965,8 @@ def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX16rr8 GR16:$dst, GR8:$src
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX16rm8 GR16:$dst, i8mem:$src), 0>;
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX32rr8 GR32:$dst, GR8:$src), 0>;
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX32rr16 GR32:$dst, GR16:$src), 0>;
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX64rr8_Q GR64:$dst, GR8:$src), 0>;
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX64rr16_Q GR64:$dst, GR16:$src), 0>;
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX64rr8 GR64:$dst, GR8:$src), 0>;
|
||||
def : InstAlias<"movzx {$src, $dst|$dst, $src}", (MOVZX64rr16 GR64:$dst, GR16:$src), 0>;
|
||||
// Note: No GR32->GR64 movzx form.
|
||||
|
||||
// outb %dx -> outb %al, %dx
|
||||
|
Loading…
Reference in New Issue
Block a user