diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-04-12 11:01:40 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-04-12 11:01:40 +0000 |
| commit | 69e0e8e3d418a5031b082b69acb8f96adc1225dd (patch) | |
| tree | 4643c117ea31ecbd0e7785de9cb9394ecd5477ad | |
| parent | a8d916aad034d8d68faf1a024d016b55db5aa0f9 (diff) | |
| download | bcm5719-llvm-69e0e8e3d418a5031b082b69acb8f96adc1225dd.tar.gz bcm5719-llvm-69e0e8e3d418a5031b082b69acb8f96adc1225dd.zip | |
[X86] Remove CMOV/SETCC schedule itineraries (PR37093)
llvm-svn: 329898
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrCMovSetCC.td | 29 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86Schedule.td | 10 |
2 files changed, 13 insertions, 26 deletions
diff --git a/llvm/lib/Target/X86/X86InstrCMovSetCC.td b/llvm/lib/Target/X86/X86InstrCMovSetCC.td index 425b25a5a7d..2240e85de8e 100644 --- a/llvm/lib/Target/X86/X86InstrCMovSetCC.td +++ b/llvm/lib/Target/X86/X86InstrCMovSetCC.td @@ -21,20 +21,19 @@ multiclass CMOV<bits<8> opc, string Mnemonic, PatLeaf CondNode> { : I<opc, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src1, GR16:$src2), !strconcat(Mnemonic, "{w}\t{$src2, $dst|$dst, $src2}"), [(set GR16:$dst, - (X86cmov GR16:$src1, GR16:$src2, CondNode, EFLAGS))], - IIC_CMOV16_RR>, TB, OpSize16; + (X86cmov GR16:$src1, GR16:$src2, CondNode, EFLAGS))]>, + TB, OpSize16; def NAME#32rr : I<opc, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2), !strconcat(Mnemonic, "{l}\t{$src2, $dst|$dst, $src2}"), [(set GR32:$dst, - (X86cmov GR32:$src1, GR32:$src2, CondNode, EFLAGS))], - IIC_CMOV32_RR>, TB, OpSize32; + (X86cmov GR32:$src1, GR32:$src2, CondNode, EFLAGS))]>, + TB, OpSize32; def NAME#64rr :RI<opc, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2), !strconcat(Mnemonic, "{q}\t{$src2, $dst|$dst, $src2}"), [(set GR64:$dst, - (X86cmov GR64:$src1, GR64:$src2, CondNode, EFLAGS))], - IIC_CMOV64_RR>, TB; + (X86cmov GR64:$src1, GR64:$src2, CondNode, EFLAGS))]>, TB; } let Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst", @@ -43,19 +42,17 @@ multiclass CMOV<bits<8> opc, string Mnemonic, PatLeaf CondNode> { : I<opc, MRMSrcMem, (outs GR16:$dst), (ins GR16:$src1, i16mem:$src2), !strconcat(Mnemonic, "{w}\t{$src2, $dst|$dst, $src2}"), [(set GR16:$dst, (X86cmov GR16:$src1, (loadi16 addr:$src2), - CondNode, EFLAGS))], IIC_CMOV16_RM>, - TB, OpSize16; + CondNode, EFLAGS))]>, TB, OpSize16; def NAME#32rm : I<opc, MRMSrcMem, (outs GR32:$dst), (ins GR32:$src1, i32mem:$src2), !strconcat(Mnemonic, "{l}\t{$src2, $dst|$dst, $src2}"), [(set GR32:$dst, (X86cmov GR32:$src1, (loadi32 addr:$src2), - CondNode, EFLAGS))], IIC_CMOV32_RM>, - TB, OpSize32; + CondNode, EFLAGS))]>, TB, OpSize32; def NAME#64rm :RI<opc, MRMSrcMem, (outs GR64:$dst), (ins GR64:$src1, i64mem:$src2), !strconcat(Mnemonic, "{q}\t{$src2, $dst|$dst, $src2}"), [(set GR64:$dst, (X86cmov GR64:$src1, (loadi64 addr:$src2), - CondNode, EFLAGS))], IIC_CMOV64_RM>, TB; + CondNode, EFLAGS))]>, TB; } // Uses = [EFLAGS], Predicates = [HasCMov], Constraints = "$src1 = $dst" } // end multiclass @@ -84,12 +81,12 @@ multiclass SETCC<bits<8> opc, string Mnemonic, PatLeaf OpNode> { let Uses = [EFLAGS] in { def r : I<opc, MRMXr, (outs GR8:$dst), (ins), !strconcat(Mnemonic, "\t$dst"), - [(set GR8:$dst, (X86setcc OpNode, EFLAGS))], - IIC_SET_R>, TB, Sched<[WriteSETCC]>; + [(set GR8:$dst, (X86setcc OpNode, EFLAGS))]>, + TB, Sched<[WriteSETCC]>; def m : I<opc, MRMXm, (outs), (ins i8mem:$dst), !strconcat(Mnemonic, "\t$dst"), - [(store (X86setcc OpNode, EFLAGS), addr:$dst)], - IIC_SET_M>, 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 410f32166e5..c01a07ddf7a 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; |

