[X86] Add sched class WriteLAHFSAHF and fix values.
authorClement Courbet <courbet@google.com>
Wed, 20 Jun 2018 06:13:39 +0000 (06:13 +0000)
committerClement Courbet <courbet@google.com>
Wed, 20 Jun 2018 06:13:39 +0000 (06:13 +0000)
Summary:
I ran llvm-exegesis on SKX, SKL, BDW, HSW, SNB.
Atom is from Agner and SLM is a guess.
I've left AMD processors alone.

Reviewers: RKSimon, craig.topper

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D48079

llvm-svn: 335097

22 files changed:
llvm/lib/Target/X86/X86InstrInfo.td
llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/lib/Target/X86/X86Schedule.td
llvm/lib/Target/X86/X86ScheduleAtom.td
llvm/lib/Target/X86/X86ScheduleBtVer2.td
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/lib/Target/X86/X86ScheduleZnver1.td
llvm/test/CodeGen/X86/schedule-x86_64.ll
llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/Generic/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/SLM/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s

index b4d11b8..81ab1e0 100644 (file)
@@ -199,9 +199,9 @@ def X86call    : SDNode<"X86ISD::CALL",     SDT_X86Call,
                          SDNPVariadic]>;
 
 def X86NoTrackCall : SDNode<"X86ISD::NT_CALL", SDT_X86Call,
-                            [SDNPHasChain, SDNPOutGlue, SDNPOptInGlue, 
+                            [SDNPHasChain, SDNPOutGlue, SDNPOptInGlue,
                              SDNPVariadic]>;
-def X86NoTrackBrind : SDNode<"X86ISD::NT_BRIND", SDT_X86NtBrind, 
+def X86NoTrackBrind : SDNode<"X86ISD::NT_BRIND", SDT_X86NtBrind,
                              [SDNPHasChain]>;
 
 def X86rep_stos: SDNode<"X86ISD::REP_STOS", SDTX86RepStr,
@@ -1189,7 +1189,7 @@ let Defs = [ESP], Uses = [ESP], hasSideEffects=0 in {
 let mayLoad = 1, SchedRW = [WriteLoad] in {
 def POP16r  : I<0x58, AddRegFrm, (outs GR16:$reg), (ins), "pop{w}\t$reg", []>,
                 OpSize16;
-def POP32r  : I<0x58, AddRegFrm, (outs GR32:$reg), (ins), "pop{l}\t$reg", []>, 
+def POP32r  : I<0x58, AddRegFrm, (outs GR32:$reg), (ins), "pop{l}\t$reg", []>,
                 OpSize32, Requires<[Not64BitMode]>;
 // Long form for the disassembler.
 let isCodeGenOnly = 1, ForceDisassemble = 1 in {
@@ -1724,7 +1724,7 @@ def MOV8rm_NOREX : I<0x8A, MRMSrcMem,
 
 
 // Condition code ops, incl. set if equal/not equal/...
-let SchedRW = [WriteALU] in {
+let SchedRW = [WriteLAHFSAHF] in {
 let Defs = [EFLAGS], Uses = [AH] in
 def SAHF     : I<0x9E, RawFrm, (outs),  (ins), "sahf",
                  [(set EFLAGS, (X86sahf AH))]>,
index 4e30718..2691d35 100755 (executable)
@@ -134,6 +134,7 @@ def  : WriteRes<WriteSETCCStore, [BWPort06,BWPort4,BWPort237]> {
   let Latency = 2;
   let NumMicroOps = 3;
 }
+def  : WriteRes<WriteLAHFSAHF, [BWPort06]>;
 
 // Bit counts.
 defm : BWWriteResPair<WriteBitScan, [BWPort1], 3>;
@@ -624,7 +625,6 @@ def BWWriteResGroup9 : SchedWriteRes<[BWPort0156]> {
   let NumMicroOps = 1;
   let ResourceCycles = [1];
 }
-def: InstRW<[BWWriteResGroup9], (instrs LAHF, SAHF)>; // TODO: This doesnt match Agner's data
 def: InstRW<[BWWriteResGroup9], (instregex "SGDT64m",
                                            "SIDT64m",
                                            "SMSW16m",
index 2c0520f..5e10368 100644 (file)
@@ -135,6 +135,7 @@ def  : WriteRes<WriteSETCCStore, [HWPort06,HWPort4,HWPort237]> {
   let Latency = 2;
   let NumMicroOps = 3;
 }
+def  : WriteRes<WriteLAHFSAHF, [HWPort06]>;
 
 // This is for simple LEAs with one or two input operands.
 // The complex ones can only execute on port 1, and they require two cycles on
@@ -912,7 +913,6 @@ def HWWriteResGroup10 : SchedWriteRes<[HWPort0156]> {
 }
 def: InstRW<[HWWriteResGroup10], (instrs CBW, CWDE, CDQE,
                                          CMC, STC)>;
-def: InstRW<[HWWriteResGroup10], (instrs LAHF, SAHF)>; // TODO: This doesn't match Agner's data
 def: InstRW<[HWWriteResGroup10], (instregex "SGDT64m",
                                             "SIDT64m",
                                             "SMSW16m",
index 396706e..e8c51f5 100644 (file)
@@ -134,6 +134,7 @@ def  : WriteRes<WriteSETCCStore, [SBPort05,SBPort4,SBPort23]> {
   let Latency = 2;
   let NumMicroOps = 3;
 }
+def  : WriteRes<WriteLAHFSAHF, [SBPort05]>;
 
 // This is for simple LEAs with one or two input operands.
 // The complex ones can only execute on port 1, and they require two cycles on
@@ -558,7 +559,6 @@ def SBWriteResGroup4 : SchedWriteRes<[SBPort05]> {
   let ResourceCycles = [1];
 }
 def: InstRW<[SBWriteResGroup4], (instrs CDQ, CQO)>;
-def: InstRW<[SBWriteResGroup4], (instrs LAHF, SAHF)>;
 def: InstRW<[SBWriteResGroup4], (instregex "BT(16|32|64)ri8",
                                            "BT(16|32|64)rr",
                                            "BTC(16|32|64)ri8",
index ea0d146..82449b6 100644 (file)
@@ -132,6 +132,7 @@ def  : WriteRes<WriteSETCCStore, [SKLPort06,SKLPort4,SKLPort237]> {
   let Latency = 2;
   let NumMicroOps = 3;
 }
+def  : WriteRes<WriteLAHFSAHF, [SKLPort06]>;
 
 // Bit counts.
 defm : SKLWriteResPair<WriteBitScan, [SKLPort1], 3>;
@@ -629,7 +630,6 @@ def SKLWriteResGroup10 : SchedWriteRes<[SKLPort0156]> {
 }
 def: InstRW<[SKLWriteResGroup10], (instrs CBW, CWDE, CDQE,
                                           CMC, STC)>;
-def: InstRW<[SKLWriteResGroup10], (instrs LAHF, SAHF)>; // TODO: This doesn't match Agner's data
 def: InstRW<[SKLWriteResGroup10], (instregex "SGDT64m",
                                              "SIDT64m",
                                              "SMSW16m",
index 9080d84..2a95f81 100755 (executable)
@@ -132,6 +132,7 @@ def  : WriteRes<WriteSETCCStore, [SKXPort06,SKXPort4,SKXPort237]> {
   let Latency = 2;
   let NumMicroOps = 3;
 }
+def  : WriteRes<WriteLAHFSAHF, [SKXPort06]>;
 
 // Integer shifts and rotates.
 defm : SKXWriteResPair<WriteShift, [SKXPort06],  1>;
@@ -652,7 +653,6 @@ def SKXWriteResGroup10 : SchedWriteRes<[SKXPort0156]> {
 }
 def: InstRW<[SKXWriteResGroup10], (instrs CBW, CWDE, CDQE,
                                           CMC, STC)>;
-def: InstRW<[SKXWriteResGroup10], (instrs LAHF, SAHF)>; // TODO: This doesn't match Agner's data
 def: InstRW<[SKXWriteResGroup10], (instregex "SGDT64m",
                                              "SIDT64m",
                                              "SMSW16m",
index be3ff86..237699e 100644 (file)
@@ -137,6 +137,7 @@ defm WriteCMOV2 : X86SchedWritePair; // Conditional (CF + ZF flag) move.
 def  WriteFCMOV : SchedWrite; // X87 conditional move.
 def  WriteSETCC : SchedWrite; // Set register based on condition code.
 def  WriteSETCCStore : SchedWrite;
+def  WriteLAHFSAHF : SchedWrite; // Load/Store flags in AH.
 
 // Integer shifts and rotates.
 defm WriteShift : X86SchedWritePair;
index 83ee19b..8c9338b 100644 (file)
@@ -101,6 +101,10 @@ def  : WriteRes<WriteSETCCStore, [AtomPort01]> {
   let Latency = 2;
   let ResourceCycles = [2];
 }
+def  : WriteRes<WriteLAHFSAHF, [AtomPort01]> {
+  let Latency = 2;
+  let ResourceCycles = [2];
+}
 
 defm : X86WriteResUnsupported<WriteIMulH>;
 
index e39d96a..3dfb051 100644 (file)
@@ -177,6 +177,7 @@ defm : JWriteResIntPair<WriteCMOV2, [JALU01], 1>; // Conditional (CF + ZF flag)
 defm : X86WriteRes<WriteFCMOV, [JFPU0, JFPA], 3, [1,1], 1>; // x87 conditional move.
 def  : WriteRes<WriteSETCC, [JALU01]>; // Setcc.
 def  : WriteRes<WriteSETCCStore, [JALU01,JSAGU]>;
+def  : WriteRes<WriteLAHFSAHF, [JALU01]>;
 
 // This is for simple LEAs with one or two input operands.
 // FIXME: SAGU 3-operand LEA
index 1ac3123..64d3e1e 100644 (file)
@@ -109,6 +109,7 @@ def  : WriteRes<WriteSETCCStore, [SLM_IEC_RSV01, SLM_MEC_RSV]> {
   // FIXME Latency and NumMicrOps?
   let ResourceCycles = [2,1];
 }
+def  : WriteRes<WriteLAHFSAHF, [SLM_IEC_RSV01]>;
 
 // This is for simple LEAs with one or two input operands.
 // The complex ones can only execute on port 1, and they require two cycles on
index 6e6fe14..ec7c861 100644 (file)
@@ -162,6 +162,7 @@ defm : ZnWriteResPair<WriteCMOV,   [ZnALU], 1>;
 defm : ZnWriteResPair<WriteCMOV2,  [ZnALU], 1>;
 def  : WriteRes<WriteSETCC,  [ZnALU]>;
 def  : WriteRes<WriteSETCCStore,  [ZnALU, ZnAGU]>;
+defm : X86WriteRes<WriteLAHFSAHF, [ZnALU], 2, [1], 2>;
 
 // Bit counts.
 defm : ZnWriteResPair<WriteBitScan, [ZnALU], 3>;
@@ -509,13 +510,6 @@ def : InstRW<[ZnWritePushA], (instregex "PUSHA(16|32)")>;
 //LAHF
 def : InstRW<[WriteMicrocoded], (instrs LAHF)>;
 
-// SAHF.
-def ZnWriteSAHF : SchedWriteRes<[ZnALU]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-}
-def : InstRW<[ZnWriteSAHF], (instrs SAHF)>;
-
 // BSWAP.
 def ZnWriteBSwap : SchedWriteRes<[ZnALU]> {
   let ResourceCycles = [4];
index fca6b45..06c586c 100644 (file)
@@ -7301,8 +7301,8 @@ define void @test_lahf_sahf() optsize {
 ; ATOM-LABEL: test_lahf_sahf:
 ; ATOM:       # %bb.0:
 ; ATOM-NEXT:    #APP
-; ATOM-NEXT:    lahf # sched: [1:0.50]
-; ATOM-NEXT:    sahf # sched: [1:0.50]
+; ATOM-NEXT:    lahf # sched: [2:1.00]
+; ATOM-NEXT:    sahf # sched: [2:1.00]
 ; ATOM-NEXT:    #NO_APP
 ; ATOM-NEXT:    retq # sched: [79:39.50]
 ;
@@ -7325,32 +7325,32 @@ define void @test_lahf_sahf() optsize {
 ; HASWELL-LABEL: test_lahf_sahf:
 ; HASWELL:       # %bb.0:
 ; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    lahf # sched: [1:0.25]
-; HASWELL-NEXT:    sahf # sched: [1:0.25]
+; HASWELL-NEXT:    lahf # sched: [1:0.50]
+; HASWELL-NEXT:    sahf # sched: [1:0.50]
 ; HASWELL-NEXT:    #NO_APP
 ; HASWELL-NEXT:    retq # sched: [7:1.00]
 ;
 ; BROADWELL-LABEL: test_lahf_sahf:
 ; BROADWELL:       # %bb.0:
 ; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    lahf # sched: [1:0.25]
-; BROADWELL-NEXT:    sahf # sched: [1:0.25]
+; BROADWELL-NEXT:    lahf # sched: [1:0.50]
+; BROADWELL-NEXT:    sahf # sched: [1:0.50]
 ; BROADWELL-NEXT:    #NO_APP
 ; BROADWELL-NEXT:    retq # sched: [7:1.00]
 ;
 ; SKYLAKE-LABEL: test_lahf_sahf:
 ; SKYLAKE:       # %bb.0:
 ; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    lahf # sched: [1:0.25]
-; SKYLAKE-NEXT:    sahf # sched: [1:0.25]
+; SKYLAKE-NEXT:    lahf # sched: [1:0.50]
+; SKYLAKE-NEXT:    sahf # sched: [1:0.50]
 ; SKYLAKE-NEXT:    #NO_APP
 ; SKYLAKE-NEXT:    retq # sched: [7:1.00]
 ;
 ; SKX-LABEL: test_lahf_sahf:
 ; SKX:       # %bb.0:
 ; SKX-NEXT:    #APP
-; SKX-NEXT:    lahf # sched: [1:0.25]
-; SKX-NEXT:    sahf # sched: [1:0.25]
+; SKX-NEXT:    lahf # sched: [1:0.50]
+; SKX-NEXT:    sahf # sched: [1:0.50]
 ; SKX-NEXT:    #NO_APP
 ; SKX-NEXT:    retq # sched: [7:1.00]
 ;
index 0913419..95668eb 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.50                        incq   %rdi
 # CHECK-NEXT:  1      1     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      2     1.00                        lahf
 # CHECK-NEXT:  1      7     3.50                        mulb   %dil
 # CHECK-NEXT:  1      7     3.50    *                   mulb   (%rax)
 # CHECK-NEXT:  1      7     3.50                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     1.00                        rorq   %cl, %rdi
 # CHECK-NEXT:  1      1     1.00    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  1      1     1.00    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      2     1.00                        sahf
 # CHECK-NEXT:  1      1     1.00                        sarb   %dil
 # CHECK-NEXT:  1      1     1.00                        shlb   %dil
 # CHECK-NEXT:  1      1     1.00                        shrb   %dil
@@ -1156,7 +1162,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]
-# CHECK-NEXT: 1258.50 963.50
+# CHECK-NEXT: 1260.50 965.50
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    Instructions:
@@ -1357,6 +1363,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 1.00    -     incl       (%rax)
 # CHECK-NEXT: 0.50   0.50   incq       %rdi
 # CHECK-NEXT: 1.00    -     incq       (%rax)
+# CHECK-NEXT: 1.00   1.00   lahf
 # CHECK-NEXT: 3.50   3.50   mulb       %dil
 # CHECK-NEXT: 3.50   3.50   mulb       (%rax)
 # CHECK-NEXT: 3.50   3.50   mulw       %si
@@ -1514,6 +1521,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 1.00    -     rorq       %cl, %rdi
 # CHECK-NEXT: 1.00    -     rolq       %cl, (%rax)
 # CHECK-NEXT: 1.00    -     rorq       %cl, (%rax)
+# CHECK-NEXT: 1.00   1.00   sahf
 # CHECK-NEXT: 1.00    -     sarb       %dil
 # CHECK-NEXT: 1.00    -     shlb       %dil
 # CHECK-NEXT: 1.00    -     shrb       %dil
index 0cc3521..ded5f14 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.25                        incq   %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  1      3     1.00                        mulb   %dil
 # CHECK-NEXT:  2      8     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  4      4     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      3     1.00                        rorq   %cl, %rdi
 # CHECK-NEXT:  6      8     1.00    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     0.50                        sarb   %dil
 # CHECK-NEXT:  1      1     0.50                        shlb   %dil
 # CHECK-NEXT:  1      1     0.50                        shrb   %dil
@@ -1164,7 +1170,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 50.00   -     362.00 242.50 202.00 202.00 167.00 148.00 327.50 69.00
+# CHECK-NEXT: 50.00   -     363.00 242.50 202.00 202.00 167.00 148.00 328.50 69.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1365,6 +1371,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incl       (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     incq       %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incq       (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     lahf
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     mulb       %dil
 # CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     mulb       (%rax)
 # CHECK-NEXT:  -      -     1.00   1.50    -      -      -     0.50   1.00    -     mulw       %si
@@ -1522,6 +1529,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rorq       %cl, %rdi
 # CHECK-NEXT:  -      -     1.25   0.25   0.83   0.83   1.00   0.25   1.25   0.33   rolq       %cl, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25   0.83   0.83    -     0.25   1.25   0.33   rorq       %cl, (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sahf
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sarb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shlb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shrb       %dil
index 853f4c0..dc3570b 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      5     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.50                        incq   %rdi
 # CHECK-NEXT:  2      5     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  2      3     1.00                        mulb   %dil
 # CHECK-NEXT:  2      6     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  2      3     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.50                        rorq   %cl, %rdi
 # CHECK-NEXT:  2      4     1.00    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  2      4     1.00    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     0.50                        sarb   %dil
 # CHECK-NEXT:  1      1     0.50                        shlb   %dil
 # CHECK-NEXT:  1      1     0.50                        shrb   %dil
@@ -1168,7 +1174,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
-# CHECK-NEXT: 437.00 487.00 380.00  -      -      -      -     263.00 64.00  195.00  -      -      -      -
+# CHECK-NEXT: 438.00 488.00 380.00  -      -      -      -     263.00 64.00  195.00  -      -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
@@ -1369,6 +1375,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     incl   (%rax)
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     incq   %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     incq   (%rax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     lahf
 # CHECK-NEXT:  -     1.00    -      -      -      -      -      -     1.00    -      -      -      -      -     mulb   %dil
 # CHECK-NEXT:  -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -      -     mulb   (%rax)
 # CHECK-NEXT:  -     1.00    -      -      -      -      -      -     1.00    -      -      -      -      -     mulw   %si
@@ -1526,6 +1533,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     rorq   %cl, %rdi
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     rolq   %cl, (%rax)
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -     1.00    -     1.00    -      -      -      -     rorq   %cl, (%rax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     sahf
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     sarb   %dil
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     shlb   %dil
 # CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     shrb   %dil
index ca655c4..8419eb4 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
index 667904c..acb4383 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.25                        incq   %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  1      3     1.00                        mulb   %dil
 # CHECK-NEXT:  2      8     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  4      4     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      3     1.00                        rorq   %cl, %rdi
 # CHECK-NEXT:  6      9     1.00    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  5      9     1.00    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     0.50                        sarb   %dil
 # CHECK-NEXT:  1      1     0.50                        shlb   %dil
 # CHECK-NEXT:  1      1     0.50                        shrb   %dil
@@ -1164,7 +1170,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 80.00   -     413.00 263.50 193.00 193.00 158.00 171.00 407.50 66.00
+# CHECK-NEXT: 80.00   -     414.00 263.50 193.00 193.00 158.00 171.00 408.50 66.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1365,6 +1371,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incl       (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     incq       %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incq       (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     lahf
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     mulb       %dil
 # CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     mulb       (%rax)
 # CHECK-NEXT:  -      -     1.00   1.50    -      -      -     0.50   1.00    -     mulw       %si
@@ -1522,6 +1529,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rorq       %cl, %rdi
 # CHECK-NEXT:  -      -     1.25   0.25   0.83   0.83   1.00   0.25   1.25   0.33   rolq       %cl, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25   0.83   0.83    -     0.25   1.25   0.33   rorq       %cl, (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sahf
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sarb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shlb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shrb       %dil
index 58cfbe5..bf7e3cc 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      5     2.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.50                        incq   %rdi
 # CHECK-NEXT:  2      5     2.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  1      3     1.00                        mulb   %dil
 # CHECK-NEXT:  1      6     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  1      3     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     1.00                        rorq   %cl, %rdi
 # CHECK-NEXT:  2      4     2.00    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  2      4     2.00    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     1.00                        sarb   %dil
 # CHECK-NEXT:  1      1     1.00                        shlb   %dil
 # CHECK-NEXT:  1      1     1.00                        shrb   %dil
@@ -1162,7 +1168,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
-# CHECK-NEXT: 400.00  -      -      -      -     392.00 234.00 470.00
+# CHECK-NEXT: 400.00  -      -      -      -     393.00 235.00 470.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
@@ -1363,6 +1369,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -      -      -      -     1.00   1.00   2.00   incl     (%rax)
 # CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     incq     %rdi
 # CHECK-NEXT:  -      -      -      -      -     1.00   1.00   2.00   incq     (%rax)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     lahf
 # CHECK-NEXT:  -      -      -      -      -      -     1.00    -     mulb     %dil
 # CHECK-NEXT:  -      -      -      -      -      -     1.00   1.00   mulb     (%rax)
 # CHECK-NEXT:  -      -      -      -      -      -     1.00    -     mulw     %si
@@ -1520,6 +1527,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     rorq     %cl, %rdi
 # CHECK-NEXT:  -      -      -      -      -     1.00    -     2.00   rolq     %cl, (%rax)
 # CHECK-NEXT:  -      -      -      -      -     1.00    -     2.00   rorq     %cl, (%rax)
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     sahf
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     sarb     %dil
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     shlb     %dil
 # CHECK-NEXT:  -      -      -      -      -     1.00    -      -     shrb     %dil
index 931d97f..2a75e80 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.33                        incq   %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  1      3     1.00                        mulb   %dil
 # CHECK-NEXT:  2      8     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  4      4     1.33                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      3     1.50                        rorq   %cl, %rdi
 # CHECK-NEXT:  6      9     1.50    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  6      9     1.50    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     0.50                        sarb   %dil
 # CHECK-NEXT:  1      1     0.50                        shlb   %dil
 # CHECK-NEXT:  1      1     0.50                        shrb   %dil
@@ -1162,7 +1168,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
-# CHECK-NEXT: 160.00  -     346.33 141.33 210.00 338.33 238.00 238.00
+# CHECK-NEXT: 160.00  -     347.33 141.33 210.00 339.33 238.00 238.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
@@ -1363,6 +1369,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   incl     (%rax)
 # CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     incq     %rdi
 # CHECK-NEXT:  -      -     0.33   0.33   1.00   0.33   1.00   1.00   incq     (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     lahf
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -     mulb     %dil
 # CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   mulb     (%rax)
 # CHECK-NEXT:  -      -     1.17   1.67    -     1.17    -      -     mulw     %si
@@ -1520,6 +1527,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.50    -      -     1.50    -      -     rorq     %cl, %rdi
 # CHECK-NEXT:  -      -     1.50    -     1.00   1.50   1.00   1.00   rolq     %cl, (%rax)
 # CHECK-NEXT:  -      -     1.50    -     1.00   1.50   1.00   1.00   rorq     %cl, (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     sahf
 # CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     sarb     %dil
 # CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     shlb     %dil
 # CHECK-NEXT:  -      -     0.50    -      -     0.50    -      -     shrb     %dil
index 03caa3e..e881759 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.25                        incq   %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  1      3     1.00                        mulb   %dil
 # CHECK-NEXT:  2      8     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  4      4     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      3     1.50                        rorq   %cl, %rdi
 # CHECK-NEXT:  6      8     1.50    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  5      8     1.50    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     0.50                        sarb   %dil
 # CHECK-NEXT:  1      1     0.50                        shlb   %dil
 # CHECK-NEXT:  1      1     0.50                        shrb   %dil
@@ -1164,7 +1170,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 60.00   -     429.50 223.50 202.00 202.00 167.00 184.00 414.00 69.00
+# CHECK-NEXT: 60.00   -     430.50 223.50 202.00 202.00 167.00 184.00 415.00 69.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1365,6 +1371,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incl       (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     incq       %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incq       (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     lahf
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     mulb       %dil
 # CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     mulb       (%rax)
 # CHECK-NEXT:  -      -     1.00   1.50    -      -      -     0.50   1.00    -     mulw       %si
@@ -1522,6 +1529,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rorq       %cl, %rdi
 # CHECK-NEXT:  -      -     1.50    -     0.83   0.83   1.00    -     1.50   0.33   rolq       %cl, (%rax)
 # CHECK-NEXT:  -      -     1.50    -     0.83   0.83    -      -     1.50   0.33   rorq       %cl, (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sahf
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sarb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shlb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shrb       %dil
index fd5823e..c8c5015 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.25                        incq   %rdi
 # CHECK-NEXT:  3      7     1.00    *      *            incq   (%rax)
+# CHECK-NEXT:  1      1     0.50                        lahf
 # CHECK-NEXT:  1      3     1.00                        mulb   %dil
 # CHECK-NEXT:  2      8     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  4      4     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  3      3     1.50                        rorq   %cl, %rdi
 # CHECK-NEXT:  6      8     1.50    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  5      8     1.50    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  1      1     0.50                        sahf
 # CHECK-NEXT:  1      1     0.50                        sarb   %dil
 # CHECK-NEXT:  1      1     0.50                        shlb   %dil
 # CHECK-NEXT:  1      1     0.50                        shrb   %dil
@@ -1164,7 +1170,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 60.00   -     429.75 223.75 202.00 202.00 167.00 184.25 414.25 69.00
+# CHECK-NEXT: 60.00   -     430.75 223.75 202.00 202.00 167.00 184.25 415.25 69.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -1365,6 +1371,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incl       (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     incq       %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.83   0.83   1.00   0.25   0.25   0.33   incq       (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     lahf
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -     mulb       %dil
 # CHECK-NEXT:  -      -      -     1.00   0.50   0.50    -      -      -      -     mulb       (%rax)
 # CHECK-NEXT:  -      -     1.00   1.50    -      -      -     0.50   1.00    -     mulw       %si
@@ -1522,6 +1529,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rorq       %cl, %rdi
 # CHECK-NEXT:  -      -     1.50    -     0.83   0.83   1.00    -     1.50   0.33   rolq       %cl, (%rax)
 # CHECK-NEXT:  -      -     1.50    -     0.83   0.83    -      -     1.50   0.33   rorq       %cl, (%rax)
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sahf
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     sarb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shlb       %dil
 # CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     shrb       %dil
index fd06768..6f51903 100644 (file)
@@ -222,6 +222,8 @@ incl (%rax)
 incq %rdi
 incq (%rax)
 
+lahf
+
 mulb %dil
 mulb (%rax)
 mulw %si
@@ -395,6 +397,8 @@ rorq %cl, %rdi
 rolq %cl, (%rax)
 rorq %cl, (%rax)
 
+sahf
+
 sarb %dil
 shlb %dil
 shrb %dil
@@ -806,6 +810,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      5     0.50    *      *            incl   (%rax)
 # CHECK-NEXT:  1      1     0.25                        incq   %rdi
 # CHECK-NEXT:  2      5     0.50    *      *            incq   (%rax)
+# CHECK-NEXT:  1      100   0.25                        lahf
 # CHECK-NEXT:  1      4     1.00                        mulb   %dil
 # CHECK-NEXT:  2      8     1.00    *                   mulb   (%rax)
 # CHECK-NEXT:  1      3     1.00                        mulw   %si
@@ -963,6 +968,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  1      1     0.25                        rorq   %cl, %rdi
 # CHECK-NEXT:  3      5     1.00    *      *            rolq   %cl, (%rax)
 # CHECK-NEXT:  3      5     1.00    *      *            rorq   %cl, (%rax)
+# CHECK-NEXT:  2      2     0.25                        sahf
 # CHECK-NEXT:  1      1     0.25                        sarb   %dil
 # CHECK-NEXT:  1      1     0.25                        shlb   %dil
 # CHECK-NEXT:  1      1     0.25                        shrb   %dil
@@ -1166,7 +1172,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
-# CHECK-NEXT: 131.50 131.50 111.75 145.75 127.75 111.75 392.00  -      -      -      -     34.00
+# CHECK-NEXT: 131.50 131.50 112.00 146.00 128.00 112.00 392.00  -      -      -      -     34.00
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
@@ -1367,6 +1373,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     incl (%rax)
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     incq %rdi
 # CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     incq (%rax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     lahf
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -      -     1.00   mulb %dil
 # CHECK-NEXT: 0.50   0.50    -     1.00    -      -      -      -      -      -      -     1.00   mulb (%rax)
 # CHECK-NEXT:  -      -      -     1.00    -      -      -      -      -      -      -     1.00   mulw %si
@@ -1524,6 +1531,7 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     rorq %cl, %rdi
 # CHECK-NEXT: 1.00   1.00   0.25   0.25   0.25   0.25    -      -      -      -      -      -     rolq %cl, (%rax)
 # CHECK-NEXT: 1.00   1.00   0.25   0.25   0.25   0.25    -      -      -      -      -      -     rorq %cl, (%rax)
+# CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     sahf
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     sarb %dil
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     shlb %dil
 # CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     shrb %dil