From: Craig Topper Date: Sun, 10 Dec 2017 17:42:44 +0000 (+0000) Subject: [X86] Rename some instructions from 'rb' to 'rrb' to make 'b' a proper suffix. Fix... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ec1b21823d6a102e183e3d481be8ba892989b80;p=llvm [X86] Rename some instructions from 'rb' to 'rrb' to make 'b' a proper suffix. Fix the scheduling information for some of them. Some of the scheduling information was only present for the 'rb' version' and not the 'rr' version. Now we match 'rr(b?)' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320320 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 3564dc48dd8..bb189698e80 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -6534,11 +6534,11 @@ multiclass avx512_cvt_s_int_round opc, X86VectorVTInfo SrcVT, !strconcat(asm,"\t{$src, $dst|$dst, $src}"), [(set DstVT.RC:$dst, (OpNode (SrcVT.VT SrcVT.RC:$src),(i32 FROUND_CURRENT)))], itins.rr>, EVEX, VEX_LIG, Sched<[itins.Sched]>; - def rb : SI, EVEX, VEX_LIG, EVEX_B, EVEX_RC, - Sched<[itins.Sched]>; + def rrb : SI, EVEX, VEX_LIG, EVEX_B, EVEX_RC, + Sched<[itins.Sched]>; def rm : SI, EVEX, Sched<[itins.Sched]>; let hasSideEffects = 0 in - def rb : AVX512, EVEX, EVEX_B, Sched<[itins.Sched]>; def rm : AVX512(NAME # "rr") _DstRC.RC:$dst, _SrcRC.FRC:$src), 0>; def : InstAlias(NAME # "rb") _DstRC.RC:$dst, _SrcRC.FRC:$src), 0>; + (!cast(NAME # "rrb") _DstRC.RC:$dst, _SrcRC.FRC:$src), 0>; def : InstAlias(NAME # "rm") _DstRC.RC:$dst, _SrcRC.ScalarMemOp:$src), 0>; @@ -6674,7 +6674,7 @@ let Predicates = [HasAVX512] in { [(set _DstRC.RC:$dst, (OpNodeRnd (_SrcRC.VT _SrcRC.RC:$src), (i32 FROUND_CURRENT)))], itins.rr>, EVEX, VEX_LIG, Sched<[itins.Sched]>; - def rb_Int : AVX512, @@ -7542,7 +7542,7 @@ multiclass avx512_cvtps2ph { let hasSideEffects = 0 in - defm rb : AVX512_maskable_in_asm<0x1D, MRMDestReg, _dest, + defm rrb : AVX512_maskable_in_asm<0x1D, MRMDestReg, _dest, (outs _dest.RC:$dst), (ins _src.RC:$src1, i32u8imm:$src2), "vcvtps2ph", "$src2, {sae}, $src1", "$src1, {sae}, $src2", diff --git a/lib/Target/X86/X86SchedSkylakeServer.td b/lib/Target/X86/X86SchedSkylakeServer.td index cfaa1ac1c0b..769c8215553 100755 --- a/lib/Target/X86/X86SchedSkylakeServer.td +++ b/lib/Target/X86/X86SchedSkylakeServer.td @@ -3369,13 +3369,13 @@ def: InstRW<[SKXWriteResGroup74], (instregex "VCVTSS2SI64rr")>; def: InstRW<[SKXWriteResGroup74], (instregex "VCVTSS2SIZrr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup74], (instregex "VCVTSS2SIrr")>; def: InstRW<[SKXWriteResGroup74], (instregex "VCVTSS2USIZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2SI64Zrb")>; +def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2SI64Zrr(b?)")>; def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2SI64rr")>; -def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2SIZrb")>; +def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2SIZrr(b?)")>; def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2SIrr")>; -def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2USI64Zrb")>; -def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2USIZrb")>; -def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSS2USIZrb")>; +def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2USI64Zrr(b?)")>; +def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSD2USIZrr(b?)")>; +def: InstRW<[SKXWriteResGroup74], (instregex "VCVTTSS2USIZrr(b?)")>; def SKXWriteResGroup75 : SchedWriteRes<[SKXPort5,SKXPort23]> { let Latency = 6; @@ -4174,11 +4174,11 @@ def SKXWriteResGroup100 : SchedWriteRes<[SKXPort0,SKXPort5,SKXPort015]> { def: InstRW<[SKXWriteResGroup100], (instregex "CVTTSS2SI64rr")>; def: InstRW<[SKXWriteResGroup100], (instregex "CVTTSS2SIrr")>; def: InstRW<[SKXWriteResGroup100], (instregex "VCVTSS2USI64Zrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2SI64Zrb")>; +def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2SI64Zrr(b?)")>; def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2SI64rr")>; -def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2SIZrb")>; +def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2SIZrr(b?)")>; def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2SIrr")>; -def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2USI64Zrb")>; +def: InstRW<[SKXWriteResGroup100], (instregex "VCVTTSS2USI64Zrr(b?)")>; def SKXWriteResGroup101 : SchedWriteRes<[SKXPort0,SKXPort23,SKXPort05]> { let Latency = 7; diff --git a/test/CodeGen/X86/avx512-schedule.ll b/test/CodeGen/X86/avx512-schedule.ll index 42b14835ffa..d79daf88f6b 100755 --- a/test/CodeGen/X86/avx512-schedule.ll +++ b/test/CodeGen/X86/avx512-schedule.ll @@ -2322,7 +2322,7 @@ define i32 @fptoui(float %a) nounwind { ; ; SKX-LABEL: fptoui: ; SKX: # %bb.0: -; SKX-NEXT: vcvttss2usi %xmm0, %eax # sched: [3:1.00] +; SKX-NEXT: vcvttss2usi %xmm0, %eax # sched: [6:1.00] ; SKX-NEXT: retq # sched: [7:1.00] %b = fptoui float %a to i32 ret i32 %b