diff --git a/llvm/lib/Target/X86/X86InstrCMovSetCC.td b/llvm/lib/Target/X86/X86InstrCMovSetCC.td index 425b25a5a7d2..2240e85de8eb 100644 --- a/llvm/lib/Target/X86/X86InstrCMovSetCC.td +++ b/llvm/lib/Target/X86/X86InstrCMovSetCC.td @@ -21,20 +21,19 @@ multiclass CMOV opc, string Mnemonic, PatLeaf CondNode> { : I, TB, OpSize16; + (X86cmov GR16:$src1, GR16:$src2, CondNode, EFLAGS))]>, + TB, OpSize16; def NAME#32rr : I, TB, OpSize32; + (X86cmov GR32:$src1, GR32:$src2, CondNode, EFLAGS))]>, + TB, OpSize32; def NAME#64rr :RI, TB; + (X86cmov GR64:$src1, GR64:$src2, CondNode, EFLAGS))]>, TB; } let Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst", @@ -43,19 +42,17 @@ multiclass CMOV opc, string Mnemonic, PatLeaf CondNode> { : I, - TB, OpSize16; + CondNode, EFLAGS))]>, TB, OpSize16; def NAME#32rm : I, - TB, OpSize32; + CondNode, EFLAGS))]>, TB, OpSize32; def NAME#64rm :RI, TB; + CondNode, EFLAGS))]>, TB; } // Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst" } // end multiclass @@ -84,12 +81,12 @@ multiclass SETCC opc, string Mnemonic, PatLeaf OpNode> { let Uses = [EFLAGS] in { def r : I, TB, Sched<[WriteSETCC]>; + [(set GR8:$dst, (X86setcc OpNode, EFLAGS))]>, + TB, Sched<[WriteSETCC]>; def m : I, TB, Sched<[WriteSETCCStore]>; + [(store (X86setcc OpNode, EFLAGS), addr:$dst)]>, + TB, Sched<[WriteSETCCStore]>; } // Uses = [EFLAGS] } @@ -114,5 +111,5 @@ defm SETG : SETCC<0x9F, "setg", X86_COND_G>; // signed greater than // here http://www.rcollins.org/secrets/opcodes/SALC.html // Set AL if carry. let Uses = [EFLAGS], Defs = [AL], SchedRW = [WriteALU] in { - def SALC : I<0xD6, RawFrm, (outs), (ins), "salc", [], IIC_AHF>, Requires<[Not64BitMode]>; + def SALC : I<0xD6, RawFrm, (outs), (ins), "salc", []>, Requires<[Not64BitMode]>; } diff --git a/llvm/lib/Target/X86/X86Schedule.td b/llvm/lib/Target/X86/X86Schedule.td index 410f32166e56..c01a07ddf7a8 100644 --- a/llvm/lib/Target/X86/X86Schedule.td +++ b/llvm/lib/Target/X86/X86Schedule.td @@ -245,16 +245,6 @@ def IIC_SHD64_REG_IM : InstrItinClass; def IIC_SHD64_REG_CL : InstrItinClass; def IIC_SHD64_MEM_IM : InstrItinClass; def IIC_SHD64_MEM_CL : InstrItinClass; -// cmov -def IIC_CMOV16_RM : InstrItinClass; -def IIC_CMOV16_RR : InstrItinClass; -def IIC_CMOV32_RM : InstrItinClass; -def IIC_CMOV32_RR : InstrItinClass; -def IIC_CMOV64_RM : InstrItinClass; -def IIC_CMOV64_RR : InstrItinClass; -// set -def IIC_SET_R : InstrItinClass; -def IIC_SET_M : InstrItinClass; // jmp/jcc/jcxz def IIC_Jcc : InstrItinClass; def IIC_JCXZ : InstrItinClass;