[llvm] b36d214 - [X86] Add description of FXAM instruction
Serge Pavlov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 24 23:07:24 PDT 2021
Author: Serge Pavlov
Date: 2021-06-25T12:26:51+07:00
New Revision: b36d214beda522ecea7062862be07b26cd36b5ba
URL: https://github.com/llvm/llvm-project/commit/b36d214beda522ecea7062862be07b26cd36b5ba
DIFF: https://github.com/llvm/llvm-project/commit/b36d214beda522ecea7062862be07b26cd36b5ba.diff
LOG: [X86] Add description of FXAM instruction
Previously this instruction could be used only in assembler. This change
makes it available for compiler also. Scheduling information was copied
from FTST instruction, hopefully this can be a satisfactory approximation.
Differential Revision: https://reviews.llvm.org/D104853
Added:
Modified:
llvm/lib/Target/X86/X86FloatingPoint.cpp
llvm/lib/Target/X86/X86InstrFPStack.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86ScheduleAtom.td
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/lib/Target/X86/X86ScheduleZnver2.td
llvm/test/tools/llvm-mca/X86/Barcelona/resources-x87.s
llvm/test/tools/llvm-mca/X86/BdVer2/resources-x87.s
llvm/test/tools/llvm-mca/X86/Broadwell/resources-x87.s
llvm/test/tools/llvm-mca/X86/BtVer2/resources-x87.s
llvm/test/tools/llvm-mca/X86/Generic/resources-x87.s
llvm/test/tools/llvm-mca/X86/SLM/resources-x87.s
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x87.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x87.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x87.s
llvm/test/tools/llvm-mca/X86/Znver3/resources-x87.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86FloatingPoint.cpp b/llvm/lib/Target/X86/X86FloatingPoint.cpp
index 1268d15fc334..ef45cfb7a14f 100644
--- a/llvm/lib/Target/X86/X86FloatingPoint.cpp
+++ b/llvm/lib/Target/X86/X86FloatingPoint.cpp
@@ -785,6 +785,9 @@ static const TableEntry OpcodeTable[] = {
{ 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
index b538da0d4853..cda28d18f4aa 100644
--- a/llvm/lib/Target/X86/X86InstrFPStack.td
+++ b/llvm/lib/Target/X86/X86InstrFPStack.td
@@ -377,6 +377,13 @@ def TST_F : FPI<0xD9, MRM_E4, (outs), (ins), "ftst">;
} // 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 @@ def FNOP : I<0xD9, MRM_D0, (outs), (ins), "fnop", []>, Sched<[WriteNop]>;
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
index 7ce259b20cb3..99fddcd4b2d5 100644
--- a/llvm/lib/Target/X86/X86SchedHaswell.td
+++ b/llvm/lib/Target/X86/X86SchedHaswell.td
@@ -782,7 +782,7 @@ def : InstRW<[HWWrite3P01], (instrs COM_FIPr, COM_FIr, UCOM_FIPr, UCOM_FIr)>;
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
index d441969c58e1..704919cbafb0 100644
--- a/llvm/lib/Target/X86/X86ScheduleAtom.td
+++ b/llvm/lib/Target/X86/X86ScheduleAtom.td
@@ -499,7 +499,7 @@ def AtomWrite0_1 : SchedWriteRes<[AtomPort0]> {
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<WriteALURMW, AtomWrite0_1>;
def : SchedAlias<WriteADCRMW, AtomWrite0_1>;
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td
index 3cb2f17d674e..12f8e7cc76f7 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver1.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td
@@ -974,7 +974,7 @@ def : InstRW<[ZnWriteFPU03], (instregex "FICOM(P?)(16|32)m")>;
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
index f5576c972bb0..5b4b151d2938 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver2.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver2.td
@@ -983,7 +983,7 @@ def : InstRW<[Zn2WriteFPU03], (instregex "FICOM(P?)(16|32)m")>;
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
index 715e62b3c25d..eb5ad7cb8d01 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 8c3d5a63d21c..ff43e756d5eb 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 8c0d61ee209c..ca39f54aa45b 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 571db6861bb5..50e75731b53f 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 715e62b3c25d..eb5ad7cb8d01 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 4531d50e1df0..ee30d55b36ff 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index b90d0cb5c6bd..eb6f47d75ceb 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 93ed46fe309a..50c9effad88b 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index af5e5f2d567f..5774dfc6c482 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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
index 815593d5cdad..9a92bd0f2e7d 100644
--- 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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 @@ fyl2xp1
# 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)
More information about the llvm-commits
mailing list