mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-05 18:17:00 +00:00
[X86][Haswell][SchedModel] Add architecture specific scheduling models.
Group: Floating Point XMM and YMM instructions. Sub-group: Math instructions. <rdar://problem/15607571> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215921 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3d6a30ea3b
commit
487ecab8d4
@ -2029,4 +2029,72 @@ def : InstRW<[WriteFMADDm],
|
||||
// 4p forms.
|
||||
"VF(N?)M(ADD|SUB)P(S|D)4(rm|mr)(Y)?")>;
|
||||
|
||||
//-- Math instructions --//
|
||||
|
||||
// VSQRTPS.
|
||||
// y,y.
|
||||
def WriteVSQRTPSYr : SchedWriteRes<[HWPort0, HWPort15]> {
|
||||
let Latency = 19;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2, 1];
|
||||
}
|
||||
def : InstRW<[WriteVSQRTPSYr], (instregex "VSQRTPSYr")>;
|
||||
|
||||
// y,m256.
|
||||
def WriteVSQRTPSYm : SchedWriteRes<[HWPort0, HWPort15, HWPort23]> {
|
||||
let Latency = 23;
|
||||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [2, 1, 1];
|
||||
}
|
||||
def : InstRW<[WriteVSQRTPSYm], (instregex "VSQRTPSYm")>;
|
||||
|
||||
// VSQRTPD.
|
||||
// y,y.
|
||||
def WriteVSQRTPDYr : SchedWriteRes<[HWPort0, HWPort15]> {
|
||||
let Latency = 28;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2, 1];
|
||||
}
|
||||
def : InstRW<[WriteVSQRTPDYr], (instregex "VSQRTPDYr")>;
|
||||
|
||||
// y,m256.
|
||||
def WriteVSQRTPDYm : SchedWriteRes<[HWPort0, HWPort15, HWPort23]> {
|
||||
let Latency = 32;
|
||||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [2, 1, 1];
|
||||
}
|
||||
def : InstRW<[WriteVSQRTPDYm], (instregex "VSQRTPDYm")>;
|
||||
|
||||
// RSQRT SS/PS.
|
||||
// x,x.
|
||||
def WriteRSQRTr : SchedWriteRes<[HWPort0]> {
|
||||
let Latency = 5;
|
||||
}
|
||||
def : InstRW<[WriteRSQRTr], (instregex "(V?)RSQRT(SS|PS)r(_Int)?")>;
|
||||
|
||||
// x,m128.
|
||||
def WriteRSQRTm : SchedWriteRes<[HWPort0, HWPort23]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 2;
|
||||
let ResourceCycles = [1, 1];
|
||||
}
|
||||
def : InstRW<[WriteRSQRTm], (instregex "(V?)RSQRT(SS|PS)m(_Int)?")>;
|
||||
|
||||
// RSQRTPS 256.
|
||||
// y,y.
|
||||
def WriteRSQRTPSYr : SchedWriteRes<[HWPort0, HWPort15]> {
|
||||
let Latency = 7;
|
||||
let NumMicroOps = 3;
|
||||
let ResourceCycles = [2, 1];
|
||||
}
|
||||
def : InstRW<[WriteRSQRTPSYr], (instregex "VRSQRTPSYr(_Int)?")>;
|
||||
|
||||
// y,m256.
|
||||
def WriteRSQRTPSYm : SchedWriteRes<[HWPort0, HWPort15, HWPort23]> {
|
||||
let Latency = 11;
|
||||
let NumMicroOps = 4;
|
||||
let ResourceCycles = [2, 1, 1];
|
||||
}
|
||||
def : InstRW<[WriteRSQRTPSYm], (instregex "VRSQRTPSYm(_Int)?")>;
|
||||
|
||||
} // SchedModel
|
||||
|
Loading…
x
Reference in New Issue
Block a user