diff --git a/llvm/lib/Target/X86/X86FloatingPoint.cpp b/llvm/lib/Target/X86/X86FloatingPoint.cpp --- a/llvm/lib/Target/X86/X86FloatingPoint.cpp +++ b/llvm/lib/Target/X86/X86FloatingPoint.cpp @@ -785,6 +785,9 @@ { X86::UCOM_Fpr32 , X86::UCOM_Fr }, { X86::UCOM_Fpr64 , X86::UCOM_Fr }, { X86::UCOM_Fpr80 , X86::UCOM_Fr }, + { X86::XAM_Fp32 , X86::XAM_F }, + { X86::XAM_Fp64 , X86::XAM_F }, + { X86::XAM_Fp80 , X86::XAM_F }, }; static unsigned getConcreteOpcode(unsigned Opcode) { diff --git a/llvm/lib/Target/X86/X86InstrFPStack.td b/llvm/lib/Target/X86/X86InstrFPStack.td --- a/llvm/lib/Target/X86/X86InstrFPStack.td +++ b/llvm/lib/Target/X86/X86InstrFPStack.td @@ -377,6 +377,13 @@ } // SchedRW } // Uses = [FPCW], mayRaiseFPException = 1 +let SchedRW = [WriteFTest] in { +def XAM_Fp32 : FpIf32<(outs), (ins RFP32:$src), OneArgFP, []>; +def XAM_Fp64 : FpIf64<(outs), (ins RFP64:$src), OneArgFP, []>; +def XAM_Fp80 : FpI_<(outs), (ins RFP80:$src), OneArgFP, []>; +def XAM_F : FPI<0xD9, MRM_E5, (outs), (ins), "fxam">; +} // SchedRW + // Versions of FP instructions that take a single memory operand. Added for the // disassembler; remove as they are included with patterns elsewhere. let SchedRW = [WriteFComLd], Uses = [FPCW], mayRaiseFPException = 1, @@ -732,7 +739,6 @@ let SchedRW = [WriteMicrocoded] in { let Defs = [FPSW] in { def WAIT : I<0x9B, RawFrm, (outs), (ins), "wait", []>; -def FXAM : I<0xD9, MRM_E5, (outs), (ins), "fxam", []>; def FDECSTP : I<0xD9, MRM_F6, (outs), (ins), "fdecstp", []>; def FINCSTP : I<0xD9, MRM_F7, (outs), (ins), "fincstp", []>; let Uses = [FPCW], mayRaiseFPException = 1 in { diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -782,7 +782,7 @@ def : InstRW<[HWWriteP1], (instregex "TST_F")>; // FXAM. -def : InstRW<[HWWrite2P1], (instrs FXAM)>; +def : InstRW<[HWWrite2P1], (instrs XAM_F)>; // FPREM. def HWWriteFPREM : SchedWriteRes<[]> { diff --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td --- a/llvm/lib/Target/X86/X86ScheduleAtom.td +++ b/llvm/lib/Target/X86/X86ScheduleAtom.td @@ -499,7 +499,7 @@ let Latency = 1; let ResourceCycles = [1]; } -def : InstRW<[AtomWrite0_1], (instrs FXAM, LD_Frr, +def : InstRW<[AtomWrite0_1], (instrs XAM_F, LD_Frr, MOVSX64rr32)>; def : SchedAlias; def : SchedAlias; diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td --- a/llvm/lib/Target/X86/X86ScheduleZnver1.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td @@ -974,7 +974,7 @@ def : InstRW<[ZnWriteFPU0Lat1], (instregex "TST_F")>; // FXAM. -def : InstRW<[ZnWriteFPU3Lat1], (instrs FXAM)>; +def : InstRW<[ZnWriteFPU3Lat1], (instrs XAM_F)>; // FPREM. def : InstRW<[WriteMicrocoded], (instrs FPREM)>; diff --git a/llvm/lib/Target/X86/X86ScheduleZnver2.td b/llvm/lib/Target/X86/X86ScheduleZnver2.td --- a/llvm/lib/Target/X86/X86ScheduleZnver2.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver2.td @@ -983,7 +983,7 @@ def : InstRW<[Zn2WriteFPU0Lat1], (instregex "TST_F")>; // FXAM. -def : InstRW<[Zn2WriteFPU3Lat1], (instrs FXAM)>; +def : InstRW<[Zn2WriteFPU3Lat1], (instrs XAM_F)>; // FPREM. def : InstRW<[WriteMicrocoded], (instrs FPREM)>; diff --git a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x87.s b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/Barcelona/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 3 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 3 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 1 100 0.33 U wait -# CHECK-NEXT: 1 100 0.33 U fxam +# CHECK-NEXT: 1 1 1.00 U fxam # CHECK-NEXT: 1 1 0.33 U fxch %st(1) # CHECK-NEXT: 1 1 0.33 U fxch %st(3) # CHECK-NEXT: 5 5 2.00 * * U fxrstor (%eax) @@ -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 52.67 90.67 17.00 54.67 34.00 34.00 +# CHECK-NEXT: - 136.00 53.33 90.33 17.00 54.33 34.00 34.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -511,7 +511,7 @@ # CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fucomi %st(3), %st # CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fucompi %st(3), %st # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - wait -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxam +# CHECK-NEXT: - - 1.00 - - - - - fxam # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxch %st(1) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxch %st(3) # CHECK-NEXT: - - 0.50 0.50 1.00 2.00 0.50 0.50 fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x87.s b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 2 1 1.00 U fucomi %st(3), %st # CHECK-NEXT: 2 1 1.00 U fucompi %st(3), %st # CHECK-NEXT: 1 100 0.50 U wait -# CHECK-NEXT: 1 100 0.50 U fxam +# CHECK-NEXT: 2 1 1.00 U fxam # CHECK-NEXT: 1 1 1.00 U fxch %st(1) # CHECK-NEXT: 1 1 1.00 U fxch %st(3) # CHECK-NEXT: 1 100 0.50 * * U fxrstor (%eax) @@ -382,7 +382,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] -# CHECK-NEXT: 55.50 55.50 - - - 39.50 23.50 - 224.00 224.00 - - - 7.00 56.00 32.00 - - - 49.00 49.00 - 13.00 +# CHECK-NEXT: 55.50 55.50 - - - 40.00 23.00 - 224.50 224.50 - - - 7.00 57.00 32.00 - - - 49.00 49.00 - 13.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions: @@ -526,7 +526,7 @@ # CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - fucomi %st(3), %st # CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - fucompi %st(3), %st # CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - wait -# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fxam +# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - fxam # CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - - - - - - - - - - - fxch %st(1) # CHECK-NEXT: - - - - - 1.00 1.00 - - - - - - - - - - - - - - - - fxch %st(3) # CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x87.s b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 1 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 1 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 2 2 0.50 U wait -# CHECK-NEXT: 1 100 0.25 U fxam +# CHECK-NEXT: 1 1 1.00 U fxam # CHECK-NEXT: 12 14 4.00 U fxch %st(1) # CHECK-NEXT: 12 14 4.00 U fxch %st(3) # CHECK-NEXT: 90 63 16.50 * * U fxrstor (%eax) @@ -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 116.92 145.92 49.00 49.00 27.00 59.42 69.75 9.00 +# CHECK-NEXT: - 9.00 117.67 145.67 49.00 49.00 27.00 59.17 69.50 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -513,7 +513,7 @@ # CHECK-NEXT: - - - 1.00 - - - - - - fucomi %st(3), %st # CHECK-NEXT: - - - 1.00 - - - - - - fucompi %st(3), %st # CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fxam +# CHECK-NEXT: - - 1.00 - - - - - - - fxam # CHECK-NEXT: - - 3.25 2.25 - - - 1.25 5.25 - fxch %st(1) # CHECK-NEXT: - - 3.25 2.25 - - - 1.25 5.25 - fxch %st(3) # CHECK-NEXT: - - 17.25 12.25 16.50 16.50 - 12.75 14.75 - fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x87.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 1 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 1 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 1 100 0.50 U wait -# CHECK-NEXT: 1 100 0.50 U fxam +# CHECK-NEXT: 1 3 1.00 U fxam # CHECK-NEXT: 1 1 0.50 U fxch %st(1) # CHECK-NEXT: 1 1 0.50 U fxch %st(3) # CHECK-NEXT: 1 100 0.50 * * U fxrstor (%eax) @@ -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: 42.00 20.00 - 54.00 349.00 54.00 34.00 39.00 - 13.00 7.00 - - - +# CHECK-NEXT: 42.50 19.50 - 55.00 349.00 55.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: @@ -517,7 +517,7 @@ # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - fucomi %st(3), %st # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - fucompi %st(3), %st # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - wait -# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fxam +# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - fxam # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fxch %st(1) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fxch %st(3) # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-x87.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/Generic/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/Generic/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 3 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 3 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 1 100 0.33 U wait -# CHECK-NEXT: 1 100 0.33 U fxam +# CHECK-NEXT: 1 1 1.00 U fxam # CHECK-NEXT: 1 1 0.33 U fxch %st(1) # CHECK-NEXT: 1 1 0.33 U fxch %st(3) # CHECK-NEXT: 5 5 2.00 * * U fxrstor (%eax) @@ -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 52.67 90.67 17.00 54.67 34.00 34.00 +# CHECK-NEXT: - 136.00 53.33 90.33 17.00 54.33 34.00 34.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -511,7 +511,7 @@ # CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fucomi %st(3), %st # CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fucompi %st(3), %st # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - wait -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxam +# CHECK-NEXT: - - 1.00 - - - - - fxam # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxch %st(1) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxch %st(3) # CHECK-NEXT: - - 0.50 0.50 1.00 2.00 0.50 0.50 fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-x87.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/SLM/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 1 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 1 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 1 100 1.00 U wait -# CHECK-NEXT: 1 100 1.00 U fxam +# CHECK-NEXT: 1 1 0.50 U fxam # CHECK-NEXT: 1 1 0.50 U fxch %st(1) # CHECK-NEXT: 1 1 0.50 U fxch %st(3) # CHECK-NEXT: 1 100 1.00 * * U fxrstor (%eax) @@ -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 61.00 9.50 9.50 52.00 +# CHECK-NEXT: - 312.00 16.00 64.50 61.50 9.50 9.50 52.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -511,7 +511,7 @@ # CHECK-NEXT: - - - - 1.00 - - - fucomi %st(3), %st # CHECK-NEXT: - - - - 1.00 - - - fucompi %st(3), %st # CHECK-NEXT: - - - 1.00 - - - - wait -# CHECK-NEXT: - - - 1.00 - - - - fxam +# CHECK-NEXT: - - - 0.50 0.50 - - - fxam # CHECK-NEXT: - - - - - 0.50 0.50 - fxch %st(1) # CHECK-NEXT: - - - - - 0.50 0.50 - fxch %st(3) # CHECK-NEXT: - - - 1.00 - - - - fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 3 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 3 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 1 100 0.33 U wait -# CHECK-NEXT: 1 100 0.33 U fxam +# CHECK-NEXT: 1 1 1.00 U fxam # CHECK-NEXT: 1 1 0.33 U fxch %st(1) # CHECK-NEXT: 1 1 0.33 U fxch %st(3) # CHECK-NEXT: 5 5 2.00 * * U fxrstor (%eax) @@ -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 52.67 90.67 17.00 54.67 34.00 34.00 +# CHECK-NEXT: - 136.00 53.33 90.33 17.00 54.33 34.00 34.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -511,7 +511,7 @@ # CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fucomi %st(3), %st # CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fucompi %st(3), %st # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - wait -# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxam +# CHECK-NEXT: - - 1.00 - - - - - fxam # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxch %st(1) # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fxch %st(3) # CHECK-NEXT: - - 0.50 0.50 1.00 2.00 0.50 0.50 fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 1 2 1.00 U fucomi %st(3), %st # CHECK-NEXT: 1 2 1.00 U fucompi %st(3), %st # CHECK-NEXT: 2 2 0.50 U wait -# CHECK-NEXT: 1 100 0.25 U fxam +# CHECK-NEXT: 1 2 1.00 U fxam # CHECK-NEXT: 15 17 4.00 U fxch %st(1) # CHECK-NEXT: 15 17 4.00 U fxch %st(3) # CHECK-NEXT: 90 63 16.50 * * U fxrstor (%eax) @@ -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 126.75 52.25 49.00 49.00 27.00 149.75 69.25 9.00 +# CHECK-NEXT: - 7.00 127.50 52.00 49.00 49.00 27.00 149.50 69.00 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -513,7 +513,7 @@ # CHECK-NEXT: - - 1.00 - - - - - - - fucomi %st(3), %st # CHECK-NEXT: - - 1.00 - - - - - - - fucompi %st(3), %st # CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fxam +# CHECK-NEXT: - - 1.00 - - - - - - - fxam # CHECK-NEXT: - - 4.00 2.00 - - - 4.00 5.00 - fxch %st(1) # CHECK-NEXT: - - 4.00 2.00 - - - 4.00 5.00 - fxch %st(3) # CHECK-NEXT: - - 17.25 12.25 16.50 16.50 - 12.75 14.75 - fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 1 2 1.00 U fucomi %st(3), %st # CHECK-NEXT: 1 2 1.00 U fucompi %st(3), %st # CHECK-NEXT: 2 2 0.50 U wait -# CHECK-NEXT: 1 100 0.25 U fxam +# CHECK-NEXT: 1 2 1.00 U fxam # CHECK-NEXT: 15 17 4.00 U fxch %st(1) # CHECK-NEXT: 15 17 4.00 U fxch %st(3) # CHECK-NEXT: 90 63 16.50 * * U fxrstor (%eax) @@ -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 126.75 52.25 49.00 49.00 27.00 149.75 69.25 9.00 +# CHECK-NEXT: - 7.00 127.50 52.00 49.00 49.00 27.00 149.50 69.00 9.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -513,7 +513,7 @@ # CHECK-NEXT: - - 1.00 - - - - - - - fucomi %st(3), %st # CHECK-NEXT: - - 1.00 - - - - - - - fucompi %st(3), %st # CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait -# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fxam +# CHECK-NEXT: - - 1.00 - - - - - - - fxam # CHECK-NEXT: - - 4.00 2.00 - - - 4.00 5.00 - fxch %st(1) # CHECK-NEXT: - - 4.00 2.00 - - - 4.00 5.00 - fxch %st(3) # CHECK-NEXT: - - 17.25 12.25 16.50 16.50 - 12.75 14.75 - fxrstor (%eax) diff --git a/llvm/test/tools/llvm-mca/X86/Znver3/resources-x87.s b/llvm/test/tools/llvm-mca/X86/Znver3/resources-x87.s --- a/llvm/test/tools/llvm-mca/X86/Znver3/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/Znver3/resources-x87.s @@ -346,7 +346,7 @@ # CHECK-NEXT: 1 3 1.00 U fucomi %st(3), %st # CHECK-NEXT: 1 3 1.00 U fucompi %st(3), %st # CHECK-NEXT: 100 100 25.00 U wait -# CHECK-NEXT: 100 100 25.00 U fxam +# CHECK-NEXT: 2 1 1.00 U fxam # CHECK-NEXT: 1 1 1.00 U fxch %st(1) # CHECK-NEXT: 1 1 1.00 U fxch %st(3) # CHECK-NEXT: 100 100 25.00 * * U fxrstor (%eax) @@ -382,7 +382,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] -# CHECK-NEXT: 10.67 10.67 10.67 886.50 886.50 886.50 886.50 - 137.00 203.00 119.00 119.00 13.50 13.50 - 24.00 24.00 24.00 15.33 15.33 15.33 13.00 13.00 +# CHECK-NEXT: 10.67 10.67 10.67 861.50 861.50 861.50 861.50 - 137.00 204.00 120.00 119.00 13.50 13.50 - 24.00 24.00 24.00 15.33 15.33 15.33 13.00 13.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions: @@ -526,7 +526,7 @@ # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - - - - - - - - fucomi %st(3), %st # CHECK-NEXT: - - - - - - - - 1.00 1.00 - - - - - - - - - - - - - fucompi %st(3), %st # CHECK-NEXT: - - - 25.00 25.00 25.00 25.00 - - - - - - - - - - - - - - - - wait -# CHECK-NEXT: - - - 25.00 25.00 25.00 25.00 - - - - - - - - - - - - - - - - fxam +# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - fxam # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - - - - - - - - - - fxch %st(1) # CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - - - - - - - - - - fxch %st(3) # CHECK-NEXT: - - - 25.00 25.00 25.00 25.00 - - - - - - - - - - - - - - - - fxrstor (%eax)