mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Mark all the _REV instructions as not having side effects. They aren't really emitted by the backend, but it reduces the number of instructions in the output files with unmodelled side effects to make auditing easier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171118 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a85cbfeba7
commit
37cb8398c8
@ -690,6 +690,7 @@ class BinOpRR_Rev<bits<8> opcode, string mnemonic, X86TypeInfo typeinfo>
|
|||||||
mnemonic, "{$src2, $dst|$dst, $src2}", [], IIC_BIN_NONMEM> {
|
mnemonic, "{$src2, $dst|$dst, $src2}", [], IIC_BIN_NONMEM> {
|
||||||
// The disassembler should know about this, but not the asmparser.
|
// The disassembler should know about this, but not the asmparser.
|
||||||
let isCodeGenOnly = 1;
|
let isCodeGenOnly = 1;
|
||||||
|
let hasSideEffects = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// BinOpRR_F_Rev - Instructions like "cmp reg, reg" (reversed encoding).
|
// BinOpRR_F_Rev - Instructions like "cmp reg, reg" (reversed encoding).
|
||||||
|
@ -220,7 +220,7 @@ multiclass fma4s<bits<8> opc, string OpcodeStr, RegisterClass RC,
|
|||||||
[(set RC:$dst,
|
[(set RC:$dst,
|
||||||
(OpNode RC:$src1, (mem_frag addr:$src2), RC:$src3))]>;
|
(OpNode RC:$src1, (mem_frag addr:$src2), RC:$src3))]>;
|
||||||
// For disassembler
|
// For disassembler
|
||||||
let isCodeGenOnly = 1 in
|
let isCodeGenOnly = 1, hasSideEffects = 0 in
|
||||||
def rr_REV : FMA4<opc, MRMSrcReg, (outs RC:$dst),
|
def rr_REV : FMA4<opc, MRMSrcReg, (outs RC:$dst),
|
||||||
(ins RC:$src1, RC:$src2, RC:$src3),
|
(ins RC:$src1, RC:$src2, RC:$src3),
|
||||||
!strconcat(OpcodeStr,
|
!strconcat(OpcodeStr,
|
||||||
@ -294,7 +294,7 @@ multiclass fma4p<bits<8> opc, string OpcodeStr, SDNode OpNode,
|
|||||||
[(set VR256:$dst, (OpNode VR256:$src1,
|
[(set VR256:$dst, (OpNode VR256:$src1,
|
||||||
(ld_frag256 addr:$src2), VR256:$src3))]>, VEX_L;
|
(ld_frag256 addr:$src2), VR256:$src3))]>, VEX_L;
|
||||||
// For disassembler
|
// For disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def rr_REV : FMA4<opc, MRMSrcReg, (outs VR128:$dst),
|
def rr_REV : FMA4<opc, MRMSrcReg, (outs VR128:$dst),
|
||||||
(ins VR128:$src1, VR128:$src2, VR128:$src3),
|
(ins VR128:$src1, VR128:$src2, VR128:$src3),
|
||||||
!strconcat(OpcodeStr,
|
!strconcat(OpcodeStr,
|
||||||
|
@ -1043,7 +1043,7 @@ def MOV64ao64 : RIi32<0xA3, RawFrm, (outs offset64:$dst), (ins),
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def MOV8rr_REV : I<0x8A, MRMSrcReg, (outs GR8:$dst), (ins GR8:$src),
|
def MOV8rr_REV : I<0x8A, MRMSrcReg, (outs GR8:$dst), (ins GR8:$src),
|
||||||
"mov{b}\t{$src, $dst|$dst, $src}", [], IIC_MOV>;
|
"mov{b}\t{$src, $dst|$dst, $src}", [], IIC_MOV>;
|
||||||
def MOV16rr_REV : I<0x8B, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src),
|
def MOV16rr_REV : I<0x8B, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src),
|
||||||
|
@ -480,7 +480,7 @@ def VMOVSDrr : sse12_move_rr<FR64, X86Movsd, v2f64,
|
|||||||
VEX_LIG;
|
VEX_LIG;
|
||||||
|
|
||||||
// For the disassembler
|
// For the disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def VMOVSSrr_REV : SI<0x11, MRMDestReg, (outs VR128:$dst),
|
def VMOVSSrr_REV : SI<0x11, MRMDestReg, (outs VR128:$dst),
|
||||||
(ins VR128:$src1, FR32:$src2),
|
(ins VR128:$src1, FR32:$src2),
|
||||||
"movss\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
|
"movss\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
|
||||||
@ -518,7 +518,7 @@ let Constraints = "$src1 = $dst" in {
|
|||||||
"movsd\t{$src2, $dst|$dst, $src2}">, XD;
|
"movsd\t{$src2, $dst|$dst, $src2}">, XD;
|
||||||
|
|
||||||
// For the disassembler
|
// For the disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def MOVSSrr_REV : SI<0x11, MRMDestReg, (outs VR128:$dst),
|
def MOVSSrr_REV : SI<0x11, MRMDestReg, (outs VR128:$dst),
|
||||||
(ins VR128:$src1, FR32:$src2),
|
(ins VR128:$src1, FR32:$src2),
|
||||||
"movss\t{$src2, $dst|$dst, $src2}", [],
|
"movss\t{$src2, $dst|$dst, $src2}", [],
|
||||||
@ -869,7 +869,7 @@ def VMOVUPDYmr : VPDI<0x11, MRMDestMem, (outs), (ins f256mem:$dst, VR256:$src),
|
|||||||
IIC_SSE_MOVU_P_MR>, VEX, VEX_L;
|
IIC_SSE_MOVU_P_MR>, VEX, VEX_L;
|
||||||
|
|
||||||
// For disassembler
|
// For disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def VMOVAPSrr_REV : VPSI<0x29, MRMDestReg, (outs VR128:$dst),
|
def VMOVAPSrr_REV : VPSI<0x29, MRMDestReg, (outs VR128:$dst),
|
||||||
(ins VR128:$src),
|
(ins VR128:$src),
|
||||||
"movaps\t{$src, $dst|$dst, $src}", [],
|
"movaps\t{$src, $dst|$dst, $src}", [],
|
||||||
@ -943,7 +943,7 @@ def MOVUPDmr : PDI<0x11, MRMDestMem, (outs), (ins f128mem:$dst, VR128:$src),
|
|||||||
IIC_SSE_MOVU_P_MR>;
|
IIC_SSE_MOVU_P_MR>;
|
||||||
|
|
||||||
// For disassembler
|
// For disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def MOVAPSrr_REV : PSI<0x29, MRMDestReg, (outs VR128:$dst), (ins VR128:$src),
|
def MOVAPSrr_REV : PSI<0x29, MRMDestReg, (outs VR128:$dst), (ins VR128:$src),
|
||||||
"movaps\t{$src, $dst|$dst, $src}", [],
|
"movaps\t{$src, $dst|$dst, $src}", [],
|
||||||
IIC_SSE_MOVA_P_RR>;
|
IIC_SSE_MOVA_P_RR>;
|
||||||
@ -3485,7 +3485,7 @@ def VMOVDQUYrr : VSSI<0x6F, MRMSrcReg, (outs VR256:$dst), (ins VR256:$src),
|
|||||||
}
|
}
|
||||||
|
|
||||||
// For Disassembler
|
// For Disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def VMOVDQArr_REV : VPDI<0x7F, MRMDestReg, (outs VR128:$dst), (ins VR128:$src),
|
def VMOVDQArr_REV : VPDI<0x7F, MRMDestReg, (outs VR128:$dst), (ins VR128:$src),
|
||||||
"movdqa\t{$src, $dst|$dst, $src}", [],
|
"movdqa\t{$src, $dst|$dst, $src}", [],
|
||||||
IIC_SSE_MOVA_P_RR>,
|
IIC_SSE_MOVA_P_RR>,
|
||||||
@ -3548,7 +3548,7 @@ def MOVDQUrr : I<0x6F, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src),
|
|||||||
[], IIC_SSE_MOVU_P_RR>, XS, Requires<[UseSSE2]>;
|
[], IIC_SSE_MOVU_P_RR>, XS, Requires<[UseSSE2]>;
|
||||||
|
|
||||||
// For Disassembler
|
// For Disassembler
|
||||||
let isCodeGenOnly = 1 in {
|
let isCodeGenOnly = 1, hasSideEffects = 0 in {
|
||||||
def MOVDQArr_REV : PDI<0x7F, MRMDestReg, (outs VR128:$dst), (ins VR128:$src),
|
def MOVDQArr_REV : PDI<0x7F, MRMDestReg, (outs VR128:$dst), (ins VR128:$src),
|
||||||
"movdqa\t{$src, $dst|$dst, $src}", [],
|
"movdqa\t{$src, $dst|$dst, $src}", [],
|
||||||
IIC_SSE_MOVA_P_RR>;
|
IIC_SSE_MOVA_P_RR>;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user