forked from OSchip/llvm-project
[X86] Add an extra store address cycle to WriteRMW in the Sandy Bridge/Broadwell/Haswell/Skylake scheduler model.
Even those the address was calculated for the load, its calculated again for the store. llvm-svn: 329415
This commit is contained in:
parent
22d25a08ae
commit
f131b60049
|
@ -100,9 +100,9 @@ multiclass BWWriteResPair<X86FoldableSchedWrite SchedRW,
|
|||
}
|
||||
}
|
||||
|
||||
// A folded store needs a cycle on port 4 for the store data, but it does not
|
||||
// need an extra port 2/3 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [BWPort4]>;
|
||||
// A folded store needs a cycle on port 4 for the store data, and an extra port
|
||||
// 2/3/7 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [BWPort237,BWPort4]>;
|
||||
|
||||
// Arithmetic.
|
||||
defm : BWWriteResPair<WriteALU, [BWPort0156], 1>; // Simple integer ALU op.
|
||||
|
|
|
@ -101,9 +101,9 @@ multiclass HWWriteResPair<X86FoldableSchedWrite SchedRW,
|
|||
}
|
||||
}
|
||||
|
||||
// A folded store needs a cycle on port 4 for the store data, but it does not
|
||||
// need an extra port 2/3 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [HWPort4]>;
|
||||
// A folded store needs a cycle on port 4 for the store data, and an extra port
|
||||
// 2/3/7 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [HWPort237,HWPort4]>;
|
||||
|
||||
// Store_addr on 237.
|
||||
// Store_data on 4.
|
||||
|
|
|
@ -92,9 +92,9 @@ multiclass SBWriteResPair<X86FoldableSchedWrite SchedRW,
|
|||
}
|
||||
}
|
||||
|
||||
// A folded store needs a cycle on port 4 for the store data, but it does not
|
||||
// need an extra port 2/3 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [SBPort4]>;
|
||||
// A folded store needs a cycle on port 4 for the store data, and an extra port
|
||||
// 2/3 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [SBPort23,SBPort4]>;
|
||||
|
||||
def : WriteRes<WriteStore, [SBPort23, SBPort4]>;
|
||||
def : WriteRes<WriteLoad, [SBPort23]> { let Latency = 5; }
|
||||
|
|
|
@ -100,9 +100,9 @@ multiclass SKLWriteResPair<X86FoldableSchedWrite SchedRW,
|
|||
}
|
||||
}
|
||||
|
||||
// A folded store needs a cycle on port 4 for the store data, but it does not
|
||||
// need an extra port 2/3 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [SKLPort4]>;
|
||||
// A folded store needs a cycle on port 4 for the store data, and an extra port
|
||||
// 2/3/7 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [SKLPort237,SKLPort4]>;
|
||||
|
||||
// Arithmetic.
|
||||
defm : SKLWriteResPair<WriteALU, [SKLPort0156], 1>; // Simple integer ALU op.
|
||||
|
|
|
@ -100,9 +100,9 @@ multiclass SKXWriteResPair<X86FoldableSchedWrite SchedRW,
|
|||
}
|
||||
}
|
||||
|
||||
// A folded store needs a cycle on port 4 for the store data, but it does not
|
||||
// need an extra port 2/3 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [SKXPort4]>;
|
||||
// A folded store needs a cycle on port 4 for the store data, and an extra port
|
||||
// 2/3/7 cycle to recompute the address.
|
||||
def : WriteRes<WriteRMW, [SKXPort237,SKXPort4]>;
|
||||
|
||||
// Arithmetic.
|
||||
defm : SKXWriteResPair<WriteALU, [SKXPort0156], 1>; // Simple integer ALU op.
|
||||
|
|
Loading…
Reference in New Issue