Index: lib/Target/X86/X86InstrFPStack.td =================================================================== --- lib/Target/X86/X86InstrFPStack.td +++ lib/Target/X86/X86InstrFPStack.td @@ -570,6 +570,14 @@ let SchedRW = [WriteFLD1] in def LD_F1 : FPI<0xD9, MRM_E8, (outs), (ins), "fld1">; +let SchedRW = [WriteFLDC], Defs = [FPSW] in { +def FLDL2T : I<0xD9, MRM_E9, (outs), (ins), "fldl2t", []>; +def FLDL2E : I<0xD9, MRM_EA, (outs), (ins), "fldl2e", []>; +def FLDPI : I<0xD9, MRM_EB, (outs), (ins), "fldpi", []>; +def FLDLG2 : I<0xD9, MRM_EC, (outs), (ins), "fldlg2", []>; +def FLDLN2 : I<0xD9, MRM_ED, (outs), (ins), "fldln2", []>; +} // SchedRW + // Floating point compares. let SchedRW = [WriteFCom] in { def UCOM_Fpr32 : FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP, @@ -649,11 +657,6 @@ let Defs = [FPSW] in { def WAIT : I<0x9B, RawFrm, (outs), (ins), "wait", []>; def FXAM : I<0xD9, MRM_E5, (outs), (ins), "fxam", []>; -def FLDL2T : I<0xD9, MRM_E9, (outs), (ins), "fldl2t", []>; -def FLDL2E : I<0xD9, MRM_EA, (outs), (ins), "fldl2e", []>; -def FLDPI : I<0xD9, MRM_EB, (outs), (ins), "fldpi", []>; -def FLDLG2 : I<0xD9, MRM_EC, (outs), (ins), "fldlg2", []>; -def FLDLN2 : I<0xD9, MRM_ED, (outs), (ins), "fldln2", []>; def F2XM1 : I<0xD9, MRM_F0, (outs), (ins), "f2xm1", []>; def FYL2X : I<0xD9, MRM_F1, (outs), (ins), "fyl2x", []>; def FPTAN : I<0xD9, MRM_F2, (outs), (ins), "fptan", []>; Index: lib/Target/X86/X86SchedBroadwell.td =================================================================== --- lib/Target/X86/X86SchedBroadwell.td +++ lib/Target/X86/X86SchedBroadwell.td @@ -168,6 +168,7 @@ // Floating point. This covers both scalar and vector operations. defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; Index: lib/Target/X86/X86SchedHaswell.td =================================================================== --- lib/Target/X86/X86SchedHaswell.td +++ lib/Target/X86/X86SchedHaswell.td @@ -158,6 +158,7 @@ // Scalar and vector floating point. defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; @@ -659,9 +660,6 @@ // r. def : InstRW<[HWWriteP01], (instregex "ST_(F|FP)rr")>; -// FLDPI FLDL2E etc. -def : InstRW<[HWWrite2P01], (instregex "FLDPI", "FLDL2(T|E)", "FLDL(G|N)2")>; - // FFREE. def : InstRW<[HWWriteP01], (instregex "FFREE")>; Index: lib/Target/X86/X86SchedSandyBridge.td =================================================================== --- lib/Target/X86/X86SchedSandyBridge.td +++ lib/Target/X86/X86SchedSandyBridge.td @@ -150,6 +150,7 @@ // Scalar and vector floating point. defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; Index: lib/Target/X86/X86SchedSkylakeClient.td =================================================================== --- lib/Target/X86/X86SchedSkylakeClient.td +++ lib/Target/X86/X86SchedSkylakeClient.td @@ -163,6 +163,7 @@ // Floating point. This covers both scalar and vector operations. defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; Index: lib/Target/X86/X86SchedSkylakeServer.td =================================================================== --- lib/Target/X86/X86SchedSkylakeServer.td +++ lib/Target/X86/X86SchedSkylakeServer.td @@ -163,6 +163,7 @@ // Floating point. This covers both scalar and vector operations. defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; Index: lib/Target/X86/X86Schedule.td =================================================================== --- lib/Target/X86/X86Schedule.td +++ lib/Target/X86/X86Schedule.td @@ -143,6 +143,7 @@ // Floating point. This covers both scalar and vector operations. def WriteFLD0 : SchedWrite; def WriteFLD1 : SchedWrite; +def WriteFLDC : SchedWrite; def WriteFLoad : SchedWrite; def WriteFLoadX : SchedWrite; def WriteFLoadY : SchedWrite; Index: lib/Target/X86/X86ScheduleAtom.td =================================================================== --- lib/Target/X86/X86ScheduleAtom.td +++ lib/Target/X86/X86ScheduleAtom.td @@ -605,7 +605,7 @@ let Latency = 10; let ResourceCycles = [10]; } -def : InstRW<[AtomWrite01_10], (instrs FLDL2E, FLDL2T, FLDLG2, FLDLN2, FLDPI)>; +def : SchedAlias; def : InstRW<[AtomWrite01_10], (instregex "(U)?COMIS(D|S)rm", "CVT(T)?SS2SI64rm(_Int)?")>; Index: lib/Target/X86/X86ScheduleBtVer2.td =================================================================== --- lib/Target/X86/X86ScheduleBtVer2.td +++ lib/Target/X86/X86ScheduleBtVer2.td @@ -273,6 +273,7 @@ defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; defm : X86WriteRes; Index: lib/Target/X86/X86ScheduleSLM.td =================================================================== --- lib/Target/X86/X86ScheduleSLM.td +++ lib/Target/X86/X86ScheduleSLM.td @@ -138,6 +138,7 @@ // Scalar and vector floating point. defm : X86WriteRes; defm : X86WriteRes; +defm : X86WriteRes; def : WriteRes { let Latency = 3; } def : WriteRes { let Latency = 3; } def : WriteRes { let Latency = 3; } Index: lib/Target/X86/X86ScheduleZnver1.td =================================================================== --- lib/Target/X86/X86ScheduleZnver1.td +++ lib/Target/X86/X86ScheduleZnver1.td @@ -821,7 +821,7 @@ def : SchedAlias; // FLDPI FLDL2E etc. -def : InstRW<[ZnWriteFPU3], (instregex "FLDPI", "FLDL2(T|E)", "FLDL(G|N)2")>; +def : SchedAlias; // FNSTSW. // AX. Index: test/CodeGen/X86/x87-schedule.ll =================================================================== --- test/CodeGen/X86/x87-schedule.ll +++ test/CodeGen/X86/x87-schedule.ll @@ -2850,11 +2850,11 @@ ; SLM: # %bb.0: ; SLM-NEXT: #APP ; SLM-NEXT: fld1 # sched: [1:0.50] -; SLM-NEXT: fldl2e # sched: [100:1.00] -; SLM-NEXT: fldl2t # sched: [100:1.00] -; SLM-NEXT: fldlg2 # sched: [100:1.00] -; SLM-NEXT: fldln2 # sched: [100:1.00] -; SLM-NEXT: fldpi # sched: [100:1.00] +; SLM-NEXT: fldl2e # sched: [1:1.00] +; SLM-NEXT: fldl2t # sched: [1:1.00] +; SLM-NEXT: fldlg2 # sched: [1:1.00] +; SLM-NEXT: fldln2 # sched: [1:1.00] +; SLM-NEXT: fldpi # sched: [1:1.00] ; SLM-NEXT: fldz # sched: [1:0.50] ; SLM-NEXT: #NO_APP ; SLM-NEXT: retl # sched: [4:1.00] @@ -2863,11 +2863,11 @@ ; SANDY: # %bb.0: ; SANDY-NEXT: #APP ; SANDY-NEXT: fld1 # sched: [1:1.00] -; SANDY-NEXT: fldl2e # sched: [100:0.33] -; SANDY-NEXT: fldl2t # sched: [100:0.33] -; SANDY-NEXT: fldlg2 # sched: [100:0.33] -; SANDY-NEXT: fldln2 # sched: [100:0.33] -; SANDY-NEXT: fldpi # sched: [100:0.33] +; SANDY-NEXT: fldl2e # sched: [1:1.00] +; SANDY-NEXT: fldl2t # sched: [1:1.00] +; SANDY-NEXT: fldlg2 # sched: [1:1.00] +; SANDY-NEXT: fldln2 # sched: [1:1.00] +; SANDY-NEXT: fldpi # sched: [1:1.00] ; SANDY-NEXT: fldz # sched: [1:1.00] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retl # sched: [6:1.00] @@ -2876,11 +2876,11 @@ ; HASWELL: # %bb.0: ; HASWELL-NEXT: #APP ; HASWELL-NEXT: fld1 # sched: [1:1.00] -; HASWELL-NEXT: fldl2e # sched: [1:0.50] -; HASWELL-NEXT: fldl2t # sched: [1:0.50] -; HASWELL-NEXT: fldlg2 # sched: [1:0.50] -; HASWELL-NEXT: fldln2 # sched: [1:0.50] -; HASWELL-NEXT: fldpi # sched: [1:0.50] +; HASWELL-NEXT: fldl2e # sched: [1:1.00] +; HASWELL-NEXT: fldl2t # sched: [1:1.00] +; HASWELL-NEXT: fldlg2 # sched: [1:1.00] +; HASWELL-NEXT: fldln2 # sched: [1:1.00] +; HASWELL-NEXT: fldpi # sched: [1:1.00] ; HASWELL-NEXT: fldz # sched: [1:0.50] ; HASWELL-NEXT: #NO_APP ; HASWELL-NEXT: retl # sched: [7:1.00] @@ -2889,11 +2889,11 @@ ; BROADWELL: # %bb.0: ; BROADWELL-NEXT: #APP ; BROADWELL-NEXT: fld1 # sched: [1:1.00] -; BROADWELL-NEXT: fldl2e # sched: [100:0.25] -; BROADWELL-NEXT: fldl2t # sched: [100:0.25] -; BROADWELL-NEXT: fldlg2 # sched: [100:0.25] -; BROADWELL-NEXT: fldln2 # sched: [100:0.25] -; BROADWELL-NEXT: fldpi # sched: [100:0.25] +; BROADWELL-NEXT: fldl2e # sched: [1:1.00] +; BROADWELL-NEXT: fldl2t # sched: [1:1.00] +; BROADWELL-NEXT: fldlg2 # sched: [1:1.00] +; BROADWELL-NEXT: fldln2 # sched: [1:1.00] +; BROADWELL-NEXT: fldpi # sched: [1:1.00] ; BROADWELL-NEXT: fldz # sched: [1:0.50] ; BROADWELL-NEXT: #NO_APP ; BROADWELL-NEXT: retl # sched: [6:0.50] @@ -2902,11 +2902,11 @@ ; SKYLAKE: # %bb.0: ; SKYLAKE-NEXT: #APP ; SKYLAKE-NEXT: fld1 # sched: [1:1.00] -; SKYLAKE-NEXT: fldl2e # sched: [100:0.25] -; SKYLAKE-NEXT: fldl2t # sched: [100:0.25] -; SKYLAKE-NEXT: fldlg2 # sched: [100:0.25] -; SKYLAKE-NEXT: fldln2 # sched: [100:0.25] -; SKYLAKE-NEXT: fldpi # sched: [100:0.25] +; SKYLAKE-NEXT: fldl2e # sched: [1:1.00] +; SKYLAKE-NEXT: fldl2t # sched: [1:1.00] +; SKYLAKE-NEXT: fldlg2 # sched: [1:1.00] +; SKYLAKE-NEXT: fldln2 # sched: [1:1.00] +; SKYLAKE-NEXT: fldpi # sched: [1:1.00] ; SKYLAKE-NEXT: fldz # sched: [1:0.50] ; SKYLAKE-NEXT: #NO_APP ; SKYLAKE-NEXT: retl # sched: [6:0.50] @@ -2915,11 +2915,11 @@ ; SKX: # %bb.0: ; SKX-NEXT: #APP ; SKX-NEXT: fld1 # sched: [1:1.00] -; SKX-NEXT: fldl2e # sched: [100:0.25] -; SKX-NEXT: fldl2t # sched: [100:0.25] -; SKX-NEXT: fldlg2 # sched: [100:0.25] -; SKX-NEXT: fldln2 # sched: [100:0.25] -; SKX-NEXT: fldpi # sched: [100:0.25] +; SKX-NEXT: fldl2e # sched: [1:1.00] +; SKX-NEXT: fldl2t # sched: [1:1.00] +; SKX-NEXT: fldlg2 # sched: [1:1.00] +; SKX-NEXT: fldln2 # sched: [1:1.00] +; SKX-NEXT: fldpi # sched: [1:1.00] ; SKX-NEXT: fldz # sched: [1:0.50] ; SKX-NEXT: #NO_APP ; SKX-NEXT: retl # sched: [6:0.50] @@ -2928,11 +2928,11 @@ ; BTVER2: # %bb.0: ; BTVER2-NEXT: #APP ; BTVER2-NEXT: fld1 # sched: [3:1.00] -; BTVER2-NEXT: fldl2e # sched: [100:0.50] -; BTVER2-NEXT: fldl2t # sched: [100:0.50] -; BTVER2-NEXT: fldlg2 # sched: [100:0.50] -; BTVER2-NEXT: fldln2 # sched: [100:0.50] -; BTVER2-NEXT: fldpi # sched: [100:0.50] +; BTVER2-NEXT: fldl2e # sched: [3:1.00] +; BTVER2-NEXT: fldl2t # sched: [3:1.00] +; BTVER2-NEXT: fldlg2 # sched: [3:1.00] +; BTVER2-NEXT: fldln2 # sched: [3:1.00] +; BTVER2-NEXT: fldpi # sched: [3:1.00] ; BTVER2-NEXT: fldz # sched: [3:1.00] ; BTVER2-NEXT: #NO_APP ; BTVER2-NEXT: retl # sched: [4:1.00] Index: test/tools/llvm-mca/X86/Broadwell/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/Broadwell/resources-x87.s +++ test/tools/llvm-mca/X86/Broadwell/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 3 7 1.00 * * fldcw (%eax) # CHECK-NEXT: 64 60 14.00 * fldenv (%eax) # CHECK-NEXT: 2 1 1.00 * fld1 -# CHECK-NEXT: 1 100 0.25 * fldl2e -# CHECK-NEXT: 1 100 0.25 * fldl2t -# CHECK-NEXT: 1 100 0.25 * fldlg2 -# CHECK-NEXT: 1 100 0.25 * fldln2 -# CHECK-NEXT: 1 100 0.25 * fldpi +# CHECK-NEXT: 2 1 1.00 * fldl2e +# CHECK-NEXT: 2 1 1.00 * fldl2t +# CHECK-NEXT: 2 1 1.00 * fldlg2 +# CHECK-NEXT: 2 1 1.00 * fldln2 +# CHECK-NEXT: 2 1 1.00 * fldpi # CHECK-NEXT: 1 1 0.50 * fldz # CHECK-NEXT: 1 5 1.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 5 1.00 * fmul %st(2) @@ -369,7 +369,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 9.00 113.17 142.17 49.00 49.00 27.00 60.67 71.00 9.00 +# CHECK-NEXT: - 9.00 116.92 145.92 49.00 49.00 27.00 59.42 69.75 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -449,11 +449,11 @@ # CHECK-NEXT: - - 1.50 0.50 0.50 0.50 - - - - fldcw (%eax) # CHECK-NEXT: - - 18.92 11.42 4.00 4.00 - 10.92 14.75 - fldenv (%eax) # CHECK-NEXT: - - 1.00 1.00 - - - - - - fld1 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldl2e -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldl2t -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldlg2 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldln2 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldpi +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldl2e +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldl2t +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldlg2 +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldln2 +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldpi # CHECK-NEXT: - - 0.50 0.50 - - - - - - fldz # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2) Index: test/tools/llvm-mca/X86/BtVer2/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/BtVer2/resources-x87.s +++ test/tools/llvm-mca/X86/BtVer2/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 1 5 1.00 * * fldcw (%eax) # CHECK-NEXT: 1 100 0.50 * fldenv (%eax) # CHECK-NEXT: 1 3 1.00 * fld1 -# CHECK-NEXT: 1 100 0.50 * fldl2e -# CHECK-NEXT: 1 100 0.50 * fldl2t -# CHECK-NEXT: 1 100 0.50 * fldlg2 -# CHECK-NEXT: 1 100 0.50 * fldln2 -# CHECK-NEXT: 1 100 0.50 * fldpi +# CHECK-NEXT: 1 3 1.00 * fldl2e +# CHECK-NEXT: 1 3 1.00 * fldl2t +# CHECK-NEXT: 1 3 1.00 * fldlg2 +# CHECK-NEXT: 1 3 1.00 * fldln2 +# CHECK-NEXT: 1 3 1.00 * fldpi # CHECK-NEXT: 1 3 1.00 * fldz # CHECK-NEXT: 1 2 1.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 2 1.00 * fmul %st(2) @@ -373,7 +373,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 44.50 22.50 - 54.00 349.00 54.00 29.00 39.00 - 13.00 2.00 - - - +# CHECK-NEXT: 42.00 20.00 - 54.00 349.00 54.00 34.00 39.00 - 13.00 7.00 - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -453,11 +453,11 @@ # CHECK-NEXT: - - - - - - - 1.00 - - - - - - fldcw (%eax) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fldenv (%eax) # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fld1 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fldl2e -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fldl2t -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fldlg2 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fldln2 -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fldpi +# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldl2e +# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldl2t +# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldlg2 +# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldln2 +# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldpi # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldz # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fmul %st(2) Index: test/tools/llvm-mca/X86/Haswell/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/Haswell/resources-x87.s +++ test/tools/llvm-mca/X86/Haswell/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 3 7 1.00 * * fldcw (%eax) # CHECK-NEXT: 64 61 14.00 * fldenv (%eax) # CHECK-NEXT: 2 1 1.00 * fld1 -# CHECK-NEXT: 2 1 0.50 * fldl2e -# CHECK-NEXT: 2 1 0.50 * fldl2t -# CHECK-NEXT: 2 1 0.50 * fldlg2 -# CHECK-NEXT: 2 1 0.50 * fldln2 -# CHECK-NEXT: 2 1 0.50 * fldpi +# CHECK-NEXT: 2 1 1.00 * fldl2e +# CHECK-NEXT: 2 1 1.00 * fldl2t +# CHECK-NEXT: 2 1 1.00 * fldlg2 +# CHECK-NEXT: 2 1 1.00 * fldln2 +# CHECK-NEXT: 2 1 1.00 * fldpi # CHECK-NEXT: 1 1 0.50 * fldz # CHECK-NEXT: 1 5 1.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 5 1.00 * fmul %st(2) @@ -369,7 +369,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 17.00 118.92 142.92 49.00 49.00 27.00 56.92 65.25 9.00 +# CHECK-NEXT: - 17.00 121.42 145.42 49.00 49.00 27.00 56.92 65.25 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -449,11 +449,11 @@ # CHECK-NEXT: - - 1.50 0.50 0.50 0.50 - - - - fldcw (%eax) # CHECK-NEXT: - - 18.92 11.42 4.00 4.00 - 10.92 14.75 - fldenv (%eax) # CHECK-NEXT: - - 1.00 1.00 - - - - - - fld1 -# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldl2e -# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldl2t -# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldlg2 -# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldln2 -# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldpi +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldl2e +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldl2t +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldlg2 +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldln2 +# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldpi # CHECK-NEXT: - - 0.50 0.50 - - - - - - fldz # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2) Index: test/tools/llvm-mca/X86/SLM/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/SLM/resources-x87.s +++ test/tools/llvm-mca/X86/SLM/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 1 3 1.00 * * fldcw (%eax) # CHECK-NEXT: 1 100 1.00 * fldenv (%eax) # CHECK-NEXT: 1 1 0.50 * fld1 -# CHECK-NEXT: 1 100 1.00 * fldl2e -# CHECK-NEXT: 1 100 1.00 * fldl2t -# CHECK-NEXT: 1 100 1.00 * fldlg2 -# CHECK-NEXT: 1 100 1.00 * fldln2 -# CHECK-NEXT: 1 100 1.00 * fldpi +# CHECK-NEXT: 2 1 1.00 * fldl2e +# CHECK-NEXT: 2 1 1.00 * fldl2t +# CHECK-NEXT: 2 1 1.00 * fldlg2 +# CHECK-NEXT: 2 1 1.00 * fldln2 +# CHECK-NEXT: 2 1 1.00 * fldpi # CHECK-NEXT: 1 1 0.50 * fldz # CHECK-NEXT: 1 5 2.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 5 2.00 * fmul %st(2) @@ -367,7 +367,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] -# CHECK-NEXT: - 312.00 16.00 65.00 56.00 9.50 9.50 52.00 +# CHECK-NEXT: - 312.00 16.00 65.00 61.00 9.50 9.50 52.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -447,11 +447,11 @@ # CHECK-NEXT: - - - - - - - 1.00 fldcw (%eax) # CHECK-NEXT: - - - 1.00 - - - - fldenv (%eax) # CHECK-NEXT: - - - 0.50 0.50 - - - fld1 -# CHECK-NEXT: - - - 1.00 - - - - fldl2e -# CHECK-NEXT: - - - 1.00 - - - - fldl2t -# CHECK-NEXT: - - - 1.00 - - - - fldlg2 -# CHECK-NEXT: - - - 1.00 - - - - fldln2 -# CHECK-NEXT: - - - 1.00 - - - - fldpi +# CHECK-NEXT: - - - 1.00 1.00 - - - fldl2e +# CHECK-NEXT: - - - 1.00 1.00 - - - fldl2t +# CHECK-NEXT: - - - 1.00 1.00 - - - fldlg2 +# CHECK-NEXT: - - - 1.00 1.00 - - - fldln2 +# CHECK-NEXT: - - - 1.00 1.00 - - - fldpi # CHECK-NEXT: - - - 0.50 0.50 - - - fldz # CHECK-NEXT: - - 2.00 1.00 - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - 2.00 1.00 - - - - fmul %st(2) Index: test/tools/llvm-mca/X86/SandyBridge/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/SandyBridge/resources-x87.s +++ test/tools/llvm-mca/X86/SandyBridge/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 5 8 2.00 * * fldcw (%eax) # CHECK-NEXT: 1 100 0.33 * fldenv (%eax) # CHECK-NEXT: 2 1 1.00 * fld1 -# CHECK-NEXT: 1 100 0.33 * fldl2e -# CHECK-NEXT: 1 100 0.33 * fldl2t -# CHECK-NEXT: 1 100 0.33 * fldlg2 -# CHECK-NEXT: 1 100 0.33 * fldln2 -# CHECK-NEXT: 1 100 0.33 * fldpi +# CHECK-NEXT: 2 1 1.00 * fldl2e +# CHECK-NEXT: 2 1 1.00 * fldl2t +# CHECK-NEXT: 2 1 1.00 * fldlg2 +# CHECK-NEXT: 2 1 1.00 * fldln2 +# CHECK-NEXT: 2 1 1.00 * fldpi # CHECK-NEXT: 1 1 1.00 * fldz # CHECK-NEXT: 1 5 1.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 5 1.00 * fmul %st(2) @@ -367,7 +367,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: - 136.00 49.33 87.33 17.00 56.33 34.00 34.00 +# CHECK-NEXT: - 136.00 52.67 90.67 17.00 54.67 34.00 34.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -447,11 +447,11 @@ # CHECK-NEXT: - - - - 1.00 2.00 1.00 1.00 fldcw (%eax) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fldenv (%eax) # CHECK-NEXT: - - 1.00 - - 1.00 - - fld1 -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fldl2e -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fldl2t -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fldlg2 -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fldln2 -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fldpi +# CHECK-NEXT: - - 1.00 1.00 - - - - fldl2e +# CHECK-NEXT: - - 1.00 1.00 - - - - fldl2t +# CHECK-NEXT: - - 1.00 1.00 - - - - fldlg2 +# CHECK-NEXT: - - 1.00 1.00 - - - - fldln2 +# CHECK-NEXT: - - 1.00 1.00 - - - - fldpi # CHECK-NEXT: - - - - - 1.00 - - fldz # CHECK-NEXT: - - 1.00 - - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - 1.00 - - - - - fmul %st(2) Index: test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s +++ test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 3 7 1.00 * * fldcw (%eax) # CHECK-NEXT: 64 62 14.00 * fldenv (%eax) # CHECK-NEXT: 2 1 1.00 * fld1 -# CHECK-NEXT: 1 100 0.25 * fldl2e -# CHECK-NEXT: 1 100 0.25 * fldl2t -# CHECK-NEXT: 1 100 0.25 * fldlg2 -# CHECK-NEXT: 1 100 0.25 * fldln2 -# CHECK-NEXT: 1 100 0.25 * fldpi +# CHECK-NEXT: 2 1 1.00 * fldl2e +# CHECK-NEXT: 2 1 1.00 * fldl2t +# CHECK-NEXT: 2 1 1.00 * fldlg2 +# CHECK-NEXT: 2 1 1.00 * fldln2 +# CHECK-NEXT: 2 1 1.00 * fldpi # CHECK-NEXT: 1 1 0.50 * fldz # CHECK-NEXT: 1 4 1.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 4 1.00 * fmul %st(2) @@ -369,7 +369,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 7.00 123.00 53.50 49.00 49.00 27.00 146.00 70.50 9.00 +# CHECK-NEXT: - 7.00 126.75 52.25 49.00 49.00 27.00 149.75 69.25 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -449,11 +449,11 @@ # CHECK-NEXT: - - 1.50 - 0.50 0.50 - 0.50 - - fldcw (%eax) # CHECK-NEXT: - - 19.25 9.75 4.00 4.00 - 12.25 14.75 - fldenv (%eax) # CHECK-NEXT: - - 1.00 - - - - 1.00 - - fld1 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldl2e -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldl2t -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldlg2 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldln2 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldpi +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldl2e +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldl2t +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldlg2 +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldln2 +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldpi # CHECK-NEXT: - - 0.50 - - - - 0.50 - - fldz # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2) Index: test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s =================================================================== --- test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s +++ test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s @@ -282,11 +282,11 @@ # CHECK-NEXT: 3 7 1.00 * * fldcw (%eax) # CHECK-NEXT: 64 62 14.00 * fldenv (%eax) # CHECK-NEXT: 2 1 1.00 * fld1 -# CHECK-NEXT: 1 100 0.25 * fldl2e -# CHECK-NEXT: 1 100 0.25 * fldl2t -# CHECK-NEXT: 1 100 0.25 * fldlg2 -# CHECK-NEXT: 1 100 0.25 * fldln2 -# CHECK-NEXT: 1 100 0.25 * fldpi +# CHECK-NEXT: 2 1 1.00 * fldl2e +# CHECK-NEXT: 2 1 1.00 * fldl2t +# CHECK-NEXT: 2 1 1.00 * fldlg2 +# CHECK-NEXT: 2 1 1.00 * fldln2 +# CHECK-NEXT: 2 1 1.00 * fldpi # CHECK-NEXT: 1 1 0.50 * fldz # CHECK-NEXT: 1 4 1.00 * fmul %st(0), %st(1) # CHECK-NEXT: 1 4 1.00 * fmul %st(2) @@ -369,7 +369,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: - 7.00 123.00 53.50 49.00 49.00 27.00 146.00 70.50 9.00 +# CHECK-NEXT: - 7.00 126.75 52.25 49.00 49.00 27.00 149.75 69.25 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -449,11 +449,11 @@ # CHECK-NEXT: - - 1.50 - 0.50 0.50 - 0.50 - - fldcw (%eax) # CHECK-NEXT: - - 19.25 9.75 4.00 4.00 - 12.25 14.75 - fldenv (%eax) # CHECK-NEXT: - - 1.00 - - - - 1.00 - - fld1 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldl2e -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldl2t -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldlg2 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldln2 -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fldpi +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldl2e +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldl2t +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldlg2 +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldln2 +# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldpi # CHECK-NEXT: - - 0.50 - - - - 0.50 - - fldz # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1) # CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2)