[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