2017-07-19 04:45:14 +02:00
|
|
|
//=- X86ScheduleZnver1.td - X86 Znver1 Scheduling -------------*- tablegen -*-=//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
|
|
|
// This file defines the machine model for Znver1 to support instruction
|
|
|
|
// scheduling and other instruction cost heuristics.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
def Znver1Model : SchedMachineModel {
|
|
|
|
// Zen can decode 4 instructions per cycle.
|
|
|
|
let IssueWidth = 4;
|
|
|
|
// Based on the reorder buffer we define MicroOpBufferSize
|
|
|
|
let MicroOpBufferSize = 192;
|
|
|
|
let LoadLatency = 4;
|
|
|
|
let MispredictPenalty = 17;
|
|
|
|
let HighLatency = 25;
|
|
|
|
let PostRAScheduler = 1;
|
2017-12-12 17:12:53 +01:00
|
|
|
|
|
|
|
// FIXME: This variable is required for incomplete model.
|
|
|
|
// We haven't catered all instructions.
|
|
|
|
// So, we reset the value of this variable so as to
|
|
|
|
// say that the model is incomplete.
|
|
|
|
let CompleteModel = 0;
|
2017-07-19 04:45:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
let SchedModel = Znver1Model in {
|
|
|
|
|
|
|
|
// Zen can issue micro-ops to 10 different units in one cycle.
|
|
|
|
// These are
|
|
|
|
// * Four integer ALU units (ZALU0, ZALU1, ZALU2, ZALU3)
|
|
|
|
// * Two AGU units (ZAGU0, ZAGU1)
|
|
|
|
// * Four FPU units (ZFPU0, ZFPU1, ZFPU2, ZFPU3)
|
|
|
|
// AGUs feed load store queues @two loads and 1 store per cycle.
|
|
|
|
|
|
|
|
// Four ALU units are defined below
|
|
|
|
def ZnALU0 : ProcResource<1>;
|
|
|
|
def ZnALU1 : ProcResource<1>;
|
|
|
|
def ZnALU2 : ProcResource<1>;
|
|
|
|
def ZnALU3 : ProcResource<1>;
|
|
|
|
|
|
|
|
// Two AGU units are defined below
|
|
|
|
def ZnAGU0 : ProcResource<1>;
|
|
|
|
def ZnAGU1 : ProcResource<1>;
|
|
|
|
|
|
|
|
// Four FPU units are defined below
|
|
|
|
def ZnFPU0 : ProcResource<1>;
|
|
|
|
def ZnFPU1 : ProcResource<1>;
|
|
|
|
def ZnFPU2 : ProcResource<1>;
|
|
|
|
def ZnFPU3 : ProcResource<1>;
|
|
|
|
|
|
|
|
// FPU grouping
|
|
|
|
def ZnFPU013 : ProcResGroup<[ZnFPU0, ZnFPU1, ZnFPU3]>;
|
|
|
|
def ZnFPU01 : ProcResGroup<[ZnFPU0, ZnFPU1]>;
|
|
|
|
def ZnFPU12 : ProcResGroup<[ZnFPU1, ZnFPU2]>;
|
|
|
|
def ZnFPU13 : ProcResGroup<[ZnFPU1, ZnFPU3]>;
|
|
|
|
def ZnFPU23 : ProcResGroup<[ZnFPU2, ZnFPU3]>;
|
|
|
|
def ZnFPU02 : ProcResGroup<[ZnFPU0, ZnFPU2]>;
|
|
|
|
def ZnFPU03 : ProcResGroup<[ZnFPU0, ZnFPU3]>;
|
|
|
|
|
|
|
|
// Below are the grouping of the units.
|
|
|
|
// Micro-ops to be issued to multiple units are tackled this way.
|
|
|
|
|
|
|
|
// ALU grouping
|
|
|
|
// ZnALU03 - 0,3 grouping
|
|
|
|
def ZnALU03: ProcResGroup<[ZnALU0, ZnALU3]>;
|
|
|
|
|
|
|
|
// 56 Entry (14x4 entries) Int Scheduler
|
|
|
|
def ZnALU : ProcResGroup<[ZnALU0, ZnALU1, ZnALU2, ZnALU3]> {
|
|
|
|
let BufferSize=56;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 28 Entry (14x2) AGU group. AGUs can't be used for all ALU operations
|
|
|
|
// but are relevant for some instructions
|
|
|
|
def ZnAGU : ProcResGroup<[ZnAGU0, ZnAGU1]> {
|
|
|
|
let BufferSize=28;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Integer Multiplication issued on ALU1.
|
|
|
|
def ZnMultiplier : ProcResource<1>;
|
|
|
|
|
|
|
|
// Integer division issued on ALU2.
|
|
|
|
def ZnDivider : ProcResource<1>;
|
|
|
|
|
|
|
|
// 4 Cycles load-to use Latency is captured
|
|
|
|
def : ReadAdvance<ReadAfterLd, 4>;
|
|
|
|
|
[X86][Znver1] Specify Register Files, RCU; FP scheduler capacity.
Summary:
First off: i do not have any access to that processor,
so this is purely theoretical, no benchmarks.
I have been looking into b**d**ver2 scheduling profile, and while cross-referencing
the existing b**t**ver2, znver1 profiles, and the reference docs
(`Software Optimization Guide for AMD Family {15,16,17}h Processors`),
i have noticed that only b**t**ver2 scheduling profile specifies these.
Also, there is no mca test coverage.
Reviewers: RKSimon, craig.topper, courbet, GGanesh, andreadb
Reviewed By: GGanesh
Subscribers: gbedwell, vprasad, ddibyend, shivaram, Ashutosh, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D47676
llvm-svn: 335099
2018-06-20 09:01:14 +02:00
|
|
|
// The Integer PRF for Zen is 168 entries, and it holds the architectural and
|
|
|
|
// speculative version of the 64-bit integer registers.
|
|
|
|
// Reference: "Software Optimization Guide for AMD Family 17h Processors"
|
2018-07-23 12:10:13 +02:00
|
|
|
def ZnIntegerPRF : RegisterFile<168, [GR64, CCR]>;
|
[X86][Znver1] Specify Register Files, RCU; FP scheduler capacity.
Summary:
First off: i do not have any access to that processor,
so this is purely theoretical, no benchmarks.
I have been looking into b**d**ver2 scheduling profile, and while cross-referencing
the existing b**t**ver2, znver1 profiles, and the reference docs
(`Software Optimization Guide for AMD Family {15,16,17}h Processors`),
i have noticed that only b**t**ver2 scheduling profile specifies these.
Also, there is no mca test coverage.
Reviewers: RKSimon, craig.topper, courbet, GGanesh, andreadb
Reviewed By: GGanesh
Subscribers: gbedwell, vprasad, ddibyend, shivaram, Ashutosh, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D47676
llvm-svn: 335099
2018-06-20 09:01:14 +02:00
|
|
|
|
|
|
|
// 36 Entry (9x4 entries) floating-point Scheduler
|
|
|
|
def ZnFPU : ProcResGroup<[ZnFPU0, ZnFPU1, ZnFPU2, ZnFPU3]> {
|
|
|
|
let BufferSize=36;
|
|
|
|
}
|
|
|
|
|
|
|
|
// The Zen FP Retire Queue renames SIMD and FP uOps onto a pool of 160 128-bit
|
|
|
|
// registers. Operations on 256-bit data types are cracked into two COPs.
|
|
|
|
// Reference: "Software Optimization Guide for AMD Family 17h Processors"
|
|
|
|
def ZnFpuPRF: RegisterFile<160, [VR64, VR128, VR256], [1, 1, 2]>;
|
|
|
|
|
|
|
|
// The unit can track up to 192 macro ops in-flight.
|
|
|
|
// The retire unit handles in-order commit of up to 8 macro ops per cycle.
|
|
|
|
// Reference: "Software Optimization Guide for AMD Family 17h Processors"
|
|
|
|
// To be noted, the retire unit is shared between integer and FP ops.
|
|
|
|
// In SMT mode it is 96 entry per thread. But, we do not use the conservative
|
|
|
|
// value here because there is currently no way to fully mode the SMT mode,
|
|
|
|
// so there is no point in trying.
|
|
|
|
def ZnRCU : RetireControlUnit<192, 8>;
|
|
|
|
|
|
|
|
// FIXME: there are 72 read buffers and 44 write buffers.
|
|
|
|
|
2017-07-19 04:45:14 +02:00
|
|
|
// (a folded load is an instruction that loads and does some operation)
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// Ex: ADDPD xmm,[mem]-> This instruction has two micro-ops
|
2017-07-19 04:45:14 +02:00
|
|
|
// Instructions with folded loads are usually micro-fused, so they only appear
|
|
|
|
// as two micro-ops.
|
|
|
|
// a. load and
|
|
|
|
// b. addpd
|
|
|
|
// This multiclass is for folded loads for integer units.
|
|
|
|
multiclass ZnWriteResPair<X86FoldableSchedWrite SchedRW,
|
2018-03-19 15:46:07 +01:00
|
|
|
list<ProcResourceKind> ExePorts,
|
2018-05-08 16:55:16 +02:00
|
|
|
int Lat, list<int> Res = [], int UOps = 1,
|
|
|
|
int LoadLat = 4, int LoadUOps = 1> {
|
2017-07-19 04:45:14 +02:00
|
|
|
// Register variant takes 1-cycle on Execution Port.
|
2018-03-19 15:46:07 +01:00
|
|
|
def : WriteRes<SchedRW, ExePorts> {
|
|
|
|
let Latency = Lat;
|
|
|
|
let ResourceCycles = Res;
|
|
|
|
let NumMicroOps = UOps;
|
|
|
|
}
|
2017-07-19 04:45:14 +02:00
|
|
|
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// Memory variant also uses a cycle on ZnAGU
|
2018-05-08 16:55:16 +02:00
|
|
|
// adds LoadLat cycles to the latency (default = 4).
|
2018-03-19 15:46:07 +01:00
|
|
|
def : WriteRes<SchedRW.Folded, !listconcat([ZnAGU], ExePorts)> {
|
2018-05-08 16:55:16 +02:00
|
|
|
let Latency = !add(Lat, LoadLat);
|
2018-05-03 08:08:47 +02:00
|
|
|
let ResourceCycles = !if(!empty(Res), [], !listconcat([1], Res));
|
2018-05-08 16:55:16 +02:00
|
|
|
let NumMicroOps = !add(UOps, LoadUOps);
|
2017-07-19 04:45:14 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// This multiclass is for folded loads for floating point units.
|
|
|
|
multiclass ZnWriteResFpuPair<X86FoldableSchedWrite SchedRW,
|
2018-03-19 15:46:07 +01:00
|
|
|
list<ProcResourceKind> ExePorts,
|
2018-05-04 14:59:24 +02:00
|
|
|
int Lat, list<int> Res = [], int UOps = 1,
|
|
|
|
int LoadLat = 7, int LoadUOps = 0> {
|
2017-07-19 04:45:14 +02:00
|
|
|
// Register variant takes 1-cycle on Execution Port.
|
2018-03-19 15:46:07 +01:00
|
|
|
def : WriteRes<SchedRW, ExePorts> {
|
|
|
|
let Latency = Lat;
|
|
|
|
let ResourceCycles = Res;
|
|
|
|
let NumMicroOps = UOps;
|
|
|
|
}
|
2017-07-19 04:45:14 +02:00
|
|
|
|
|
|
|
// Memory variant also uses a cycle on ZnAGU
|
2018-05-04 14:59:24 +02:00
|
|
|
// adds LoadLat cycles to the latency (default = 7).
|
2018-03-19 15:46:07 +01:00
|
|
|
def : WriteRes<SchedRW.Folded, !listconcat([ZnAGU], ExePorts)> {
|
2018-05-04 14:59:24 +02:00
|
|
|
let Latency = !add(Lat, LoadLat);
|
2018-05-03 08:08:47 +02:00
|
|
|
let ResourceCycles = !if(!empty(Res), [], !listconcat([1], Res));
|
2018-05-04 14:59:24 +02:00
|
|
|
let NumMicroOps = !add(UOps, LoadUOps);
|
2017-07-19 04:45:14 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// WriteRMW is set for instructions with Memory write
|
2017-07-19 04:45:14 +02:00
|
|
|
// operation in codegen
|
|
|
|
def : WriteRes<WriteRMW, [ZnAGU]>;
|
|
|
|
|
2018-05-14 20:37:19 +02:00
|
|
|
def : WriteRes<WriteStore, [ZnAGU]>;
|
|
|
|
def : WriteRes<WriteStoreNT, [ZnAGU]>;
|
|
|
|
def : WriteRes<WriteMove, [ZnALU]>;
|
|
|
|
def : WriteRes<WriteLoad, [ZnAGU]> { let Latency = 8; }
|
2017-07-19 04:45:14 +02:00
|
|
|
|
|
|
|
def : WriteRes<WriteZero, []>;
|
|
|
|
def : WriteRes<WriteLEA, [ZnALU]>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResPair<WriteALU, [ZnALU], 1>;
|
2018-05-17 14:43:42 +02:00
|
|
|
defm : ZnWriteResPair<WriteADC, [ZnALU], 1>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResPair<WriteIMul, [ZnALU1, ZnMultiplier], 4>;
|
2018-05-08 16:55:16 +02:00
|
|
|
defm : ZnWriteResPair<WriteIMul64, [ZnALU1, ZnMultiplier], 4, [1,1], 2>;
|
2018-07-20 11:39:14 +02:00
|
|
|
|
2018-07-31 20:24:24 +02:00
|
|
|
defm : X86WriteRes<WriteBSWAP32, [ZnALU], 1, [4], 1>;
|
|
|
|
defm : X86WriteRes<WriteBSWAP64, [ZnALU], 1, [4], 1>;
|
2018-07-20 11:39:14 +02:00
|
|
|
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResPair<WriteShift, [ZnALU], 1>;
|
2018-07-31 12:14:43 +02:00
|
|
|
|
|
|
|
defm : X86WriteRes<WriteSHDrri, [ZnALU], 1, [1], 1>;
|
|
|
|
defm : X86WriteResUnsupported<WriteSHDrrcl>;
|
|
|
|
defm : X86WriteResUnsupported<WriteSHDmri>;
|
|
|
|
defm : X86WriteResUnsupported<WriteSHDmrcl>;
|
|
|
|
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResPair<WriteJump, [ZnALU], 1>;
|
2018-03-26 23:06:14 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteCRC32, [ZnFPU0], 3>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
2018-04-08 19:53:18 +02:00
|
|
|
defm : ZnWriteResPair<WriteCMOV, [ZnALU], 1>;
|
2018-05-17 18:47:30 +02:00
|
|
|
defm : ZnWriteResPair<WriteCMOV2, [ZnALU], 1>;
|
2018-04-08 19:53:18 +02:00
|
|
|
def : WriteRes<WriteSETCC, [ZnALU]>;
|
|
|
|
def : WriteRes<WriteSETCCStore, [ZnALU, ZnAGU]>;
|
2018-06-20 08:13:39 +02:00
|
|
|
defm : X86WriteRes<WriteLAHFSAHF, [ZnALU], 2, [1], 2>;
|
2018-08-01 12:24:27 +02:00
|
|
|
def : WriteRes<WriteBitTest,[ZnALU]>;
|
2018-04-08 19:53:18 +02:00
|
|
|
|
2018-03-26 20:19:28 +02:00
|
|
|
// Bit counts.
|
2018-07-08 11:50:25 +02:00
|
|
|
defm : ZnWriteResPair<WriteBSF, [ZnALU], 3>;
|
|
|
|
defm : ZnWriteResPair<WriteBSR, [ZnALU], 3>;
|
|
|
|
defm : ZnWriteResPair<WriteLZCNT, [ZnALU], 2>;
|
|
|
|
defm : ZnWriteResPair<WriteTZCNT, [ZnALU], 2>;
|
|
|
|
defm : ZnWriteResPair<WritePOPCNT, [ZnALU], 1>;
|
2018-03-26 20:19:28 +02:00
|
|
|
|
2017-12-10 13:43:53 +01:00
|
|
|
// Treat misc copies as a move.
|
|
|
|
def : InstRW<[WriteMove], (instrs COPY)>;
|
|
|
|
|
2018-03-29 22:41:39 +02:00
|
|
|
// BMI1 BEXTR, BMI2 BZHI
|
|
|
|
defm : ZnWriteResPair<WriteBEXTR, [ZnALU], 1>;
|
|
|
|
defm : ZnWriteResPair<WriteBZHI, [ZnALU], 1>;
|
|
|
|
|
2017-07-19 04:45:14 +02:00
|
|
|
// IDIV
|
2018-05-08 15:51:45 +02:00
|
|
|
defm : ZnWriteResPair<WriteDiv8, [ZnALU2, ZnDivider], 15, [1,15], 1>;
|
|
|
|
defm : ZnWriteResPair<WriteDiv16, [ZnALU2, ZnDivider], 17, [1,17], 2>;
|
|
|
|
defm : ZnWriteResPair<WriteDiv32, [ZnALU2, ZnDivider], 25, [1,25], 2>;
|
|
|
|
defm : ZnWriteResPair<WriteDiv64, [ZnALU2, ZnDivider], 41, [1,41], 2>;
|
|
|
|
defm : ZnWriteResPair<WriteIDiv8, [ZnALU2, ZnDivider], 15, [1,15], 1>;
|
|
|
|
defm : ZnWriteResPair<WriteIDiv16, [ZnALU2, ZnDivider], 17, [1,17], 2>;
|
|
|
|
defm : ZnWriteResPair<WriteIDiv32, [ZnALU2, ZnDivider], 25, [1,25], 2>;
|
|
|
|
defm : ZnWriteResPair<WriteIDiv64, [ZnALU2, ZnDivider], 41, [1,41], 2>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
2018-03-19 15:46:07 +01:00
|
|
|
// IMULH
|
2017-07-19 04:45:14 +02:00
|
|
|
def : WriteRes<WriteIMulH, [ZnALU1, ZnMultiplier]>{
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Floating point operations
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteFLoad, [ZnAGU], 8, [1], 1>;
|
2018-05-11 16:30:54 +02:00
|
|
|
defm : X86WriteRes<WriteFLoadX, [ZnAGU], 8, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFLoadY, [ZnAGU], 8, [1], 1>;
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteFMaskedLoad, [ZnAGU,ZnFPU01], 8, [1,1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFMaskedLoadY, [ZnAGU,ZnFPU01], 8, [1,2], 2>;
|
2018-06-07 09:37:49 +02:00
|
|
|
defm : X86WriteRes<WriteFStore, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFStoreX, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFStoreY, [ZnAGU], 1, [1], 1>;
|
2018-05-14 20:37:19 +02:00
|
|
|
defm : X86WriteRes<WriteFStoreNT, [ZnAGU,ZnFPU2], 8, [1,1], 1>;
|
2018-06-07 09:37:49 +02:00
|
|
|
defm : X86WriteRes<WriteFStoreNTX, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFStoreNTY, [ZnAGU], 1, [1], 1>;
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteFMaskedStore, [ZnAGU,ZnFPU01], 4, [1,1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFMaskedStoreY, [ZnAGU,ZnFPU01], 5, [1,2], 2>;
|
|
|
|
defm : X86WriteRes<WriteFMove, [ZnFPU], 1, [1], 1>;
|
2018-05-11 16:30:54 +02:00
|
|
|
defm : X86WriteRes<WriteFMoveX, [ZnFPU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteFMoveY, [ZnFPU], 1, [1], 1>;
|
2018-03-15 15:45:30 +01:00
|
|
|
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFAdd, [ZnFPU0], 3>;
|
2018-05-07 22:52:53 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFAddX, [ZnFPU0], 3>;
|
2018-05-01 18:13:42 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFAddY, [ZnFPU0], 3>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFAddZ>;
|
2018-05-07 22:52:53 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFAdd64, [ZnFPU0], 3>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFAdd64X, [ZnFPU0], 3>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFAdd64Y, [ZnFPU0], 3>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFAdd64Z>;
|
2018-04-17 09:22:44 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFCmp, [ZnFPU0], 3>;
|
2018-05-07 22:52:53 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFCmpX, [ZnFPU0], 3>;
|
2018-05-01 18:50:16 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFCmpY, [ZnFPU0], 3>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFCmpZ>;
|
2018-05-07 22:52:53 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFCmp64, [ZnFPU0], 3>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFCmp64X, [ZnFPU0], 3>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFCmp64Y, [ZnFPU0], 3>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFCmp64Z>;
|
2018-04-17 09:22:44 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFCom, [ZnFPU0], 3>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFBlend, [ZnFPU01], 1>;
|
2018-04-27 20:19:48 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFBlendY, [ZnFPU01], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFBlendZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFVarBlend, [ZnFPU01], 1>;
|
2018-04-27 20:19:48 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFVarBlendY,[ZnFPU01], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFVarBlendZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarBlend, [ZnFPU0], 1>;
|
2018-05-02 20:48:23 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarBlendY, [ZnFPU0], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVarBlendZ>;
|
2018-05-16 12:53:45 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteCvtSS2I, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtPS2I, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtPS2IY, [ZnFPU3], 5>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteCvtPS2IZ>;
|
2018-05-16 12:53:45 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteCvtSD2I, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtPD2I, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtPD2IY, [ZnFPU3], 5>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteCvtPD2IZ>;
|
2018-05-16 12:53:45 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteCvtI2SS, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtI2PS, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtI2PSY, [ZnFPU3], 5>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteCvtI2PSZ>;
|
2018-05-16 12:53:45 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteCvtI2SD, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtI2PD, [ZnFPU3], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteCvtI2PDY, [ZnFPU3], 5>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteCvtI2PDZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFDiv, [ZnFPU3], 15>;
|
2018-05-07 18:15:46 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFDivX, [ZnFPU3], 15>;
|
|
|
|
//defm : ZnWriteResFpuPair<WriteFDivY, [ZnFPU3], 15>;
|
2018-06-11 09:00:08 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFDivZ>;
|
2018-05-07 18:15:46 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFDiv64, [ZnFPU3], 15>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFDiv64X, [ZnFPU3], 15>;
|
|
|
|
//defm : ZnWriteResFpuPair<WriteFDiv64Y, [ZnFPU3], 15>;
|
2018-06-11 09:00:08 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFDiv64Z>;
|
2018-04-20 23:16:05 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFSign, [ZnFPU3], 2>;
|
2018-05-04 14:59:24 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFRnd, [ZnFPU3], 4, [1], 1, 7, 1>; // FIXME: Should folds require 1 extra uops?
|
|
|
|
defm : ZnWriteResFpuPair<WriteFRndY, [ZnFPU3], 4, [1], 1, 7, 1>; // FIXME: Should folds require 1 extra uops?
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFRndZ>;
|
2018-04-20 23:16:05 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFLogic, [ZnFPU], 1>;
|
2018-04-27 17:50:33 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFLogicY, [ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFLogicZ>;
|
2018-05-08 12:28:03 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFTest, [ZnFPU], 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFTestY, [ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFTestZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFShuffle, [ZnFPU12], 1>;
|
2018-05-01 16:25:01 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFShuffleY, [ZnFPU12], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFShuffleZ>;
|
2018-04-11 15:49:19 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFVarShuffle, [ZnFPU12], 1>;
|
2018-04-27 20:19:48 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFVarShuffleY,[ZnFPU12], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFVarShuffleZ>;
|
2018-05-07 18:34:26 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMul, [ZnFPU01], 3, [1], 1, 7, 1>;
|
2018-05-07 22:52:53 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMulX, [ZnFPU01], 3, [1], 1, 7, 1>;
|
2018-05-07 18:34:26 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMulY, [ZnFPU01], 4, [1], 1, 7, 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFMulZ>;
|
2018-05-07 22:52:53 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMul64, [ZnFPU01], 3, [1], 1, 7, 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFMul64X, [ZnFPU01], 3, [1], 1, 7, 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFMul64Y, [ZnFPU01], 4, [1], 1, 7, 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFMul64Z>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMA, [ZnFPU03], 5>;
|
2018-05-04 17:20:18 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMAX, [ZnFPU03], 5>;
|
2018-04-25 15:07:58 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFMAY, [ZnFPU03], 5>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFMAZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFRcp, [ZnFPU01], 5>;
|
2018-05-07 13:50:44 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFRcpX, [ZnFPU01], 5>;
|
2018-05-07 18:34:26 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFRcpY, [ZnFPU01], 5, [1], 1, 7, 2>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFRcpZ>;
|
2018-05-07 13:50:44 +02:00
|
|
|
//defm : ZnWriteResFpuPair<WriteFRsqrt, [ZnFPU02], 5>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFRsqrtX, [ZnFPU01], 5, [1], 1, 7, 1>;
|
|
|
|
//defm : ZnWriteResFpuPair<WriteFRsqrtY, [ZnFPU01], 5, [2], 2>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFRsqrtZ>;
|
2018-05-07 13:50:44 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrt, [ZnFPU3], 20, [20]>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrtX, [ZnFPU3], 20, [20]>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrtY, [ZnFPU3], 28, [28], 1, 7, 1>;
|
2018-06-11 09:00:08 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFSqrtZ>;
|
2018-05-07 13:50:44 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrt64, [ZnFPU3], 20, [20]>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrt64X, [ZnFPU3], 20, [20]>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrt64Y, [ZnFPU3], 40, [40], 1, 7, 1>;
|
2018-06-11 09:00:08 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteFSqrt64Z>;
|
2018-05-07 13:50:44 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFSqrt80, [ZnFPU3], 20, [20]>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
|
|
|
// Vector integer operations which uses FPU units
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteVecLoad, [ZnAGU], 8, [1], 1>;
|
2018-05-11 16:30:54 +02:00
|
|
|
defm : X86WriteRes<WriteVecLoadX, [ZnAGU], 8, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecLoadY, [ZnAGU], 8, [1], 1>;
|
2018-05-14 20:37:19 +02:00
|
|
|
defm : X86WriteRes<WriteVecLoadNT, [ZnAGU], 8, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecLoadNTY, [ZnAGU], 8, [1], 1>;
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteVecMaskedLoad, [ZnAGU,ZnFPU01], 8, [1,2], 2>;
|
|
|
|
defm : X86WriteRes<WriteVecMaskedLoadY, [ZnAGU,ZnFPU01], 9, [1,3], 2>;
|
2018-06-07 09:37:49 +02:00
|
|
|
defm : X86WriteRes<WriteVecStore, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecStoreX, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecStoreY, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecStoreNT, [ZnAGU], 1, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecStoreNTY, [ZnAGU], 1, [1], 1>;
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteVecMaskedStore, [ZnAGU,ZnFPU01], 4, [1,1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecMaskedStoreY, [ZnAGU,ZnFPU01], 5, [1,2], 2>;
|
|
|
|
defm : X86WriteRes<WriteVecMove, [ZnFPU], 1, [1], 1>;
|
2018-05-11 16:30:54 +02:00
|
|
|
defm : X86WriteRes<WriteVecMoveX, [ZnFPU], 1, [1], 1>;
|
2018-05-18 19:58:36 +02:00
|
|
|
defm : X86WriteRes<WriteVecMoveY, [ZnFPU], 2, [1], 2>;
|
|
|
|
defm : X86WriteRes<WriteVecMoveToGpr, [ZnFPU2], 2, [1], 1>;
|
|
|
|
defm : X86WriteRes<WriteVecMoveFromGpr, [ZnFPU2], 3, [1], 1>;
|
2018-05-08 14:17:55 +02:00
|
|
|
defm : X86WriteRes<WriteEMMS, [ZnFPU], 2, [1], 1>;
|
2018-03-15 15:45:30 +01:00
|
|
|
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecShift, [ZnFPU], 1>;
|
2018-05-04 19:47:46 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecShiftX, [ZnFPU2], 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteVecShiftY, [ZnFPU2], 2>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVecShiftZ>;
|
2018-05-04 19:47:46 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecShiftImm, [ZnFPU], 1>;
|
2018-05-03 19:56:43 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecShiftImmX, [ZnFPU], 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteVecShiftImmY, [ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVecShiftImmZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecLogic, [ZnFPU], 1>;
|
2018-05-10 19:06:09 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecLogicX, [ZnFPU], 1>;
|
2018-05-01 14:39:17 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecLogicY, [ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVecLogicZ>;
|
2018-05-08 12:28:03 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecTest, [ZnFPU12], 1, [2], 1, 7, 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteVecTestY, [ZnFPU12], 1, [2], 1, 7, 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVecTestZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecALU, [ZnFPU], 1>;
|
2018-05-10 19:06:09 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecALUX, [ZnFPU], 1>;
|
2018-05-03 15:27:10 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecALUY, [ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVecALUZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecIMul, [ZnFPU0], 4>;
|
2018-05-04 19:47:46 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecIMulX, [ZnFPU0], 4>;
|
2018-05-03 12:31:20 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVecIMulY, [ZnFPU0], 4>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVecIMulZ>;
|
2018-05-10 19:42:26 +02:00
|
|
|
defm : ZnWriteResFpuPair<WritePMULLD, [ZnFPU0], 4, [1], 1, 7, 1>; // FIXME
|
|
|
|
defm : ZnWriteResFpuPair<WritePMULLDY, [ZnFPU0], 5, [2], 1, 7, 1>; // FIXME
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WritePMULLDZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteShuffle, [ZnFPU], 1>;
|
2018-05-10 19:06:09 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteShuffleX, [ZnFPU], 1>;
|
2018-05-02 20:48:23 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteShuffleY, [ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteShuffleZ>;
|
2018-04-11 15:49:19 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarShuffle, [ZnFPU], 1>;
|
2018-05-10 19:06:09 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarShuffleX,[ZnFPU], 1>;
|
2018-05-02 20:48:23 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarShuffleY,[ZnFPU], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVarShuffleZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteBlend, [ZnFPU01], 1>;
|
2018-05-02 20:48:23 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteBlendY, [ZnFPU01], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteBlendZ>;
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteShuffle256, [ZnFPU], 2>;
|
2018-04-11 15:49:19 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarShuffle256, [ZnFPU], 2>;
|
2018-04-17 21:35:19 +02:00
|
|
|
defm : ZnWriteResFpuPair<WritePSADBW, [ZnFPU0], 3>;
|
2018-05-10 19:06:09 +02:00
|
|
|
defm : ZnWriteResFpuPair<WritePSADBWX, [ZnFPU0], 3>;
|
2018-05-03 12:31:20 +02:00
|
|
|
defm : ZnWriteResFpuPair<WritePSADBWY, [ZnFPU0], 3>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WritePSADBWZ>;
|
2018-04-24 20:49:25 +02:00
|
|
|
defm : ZnWriteResFpuPair<WritePHMINPOS, [ZnFPU0], 4>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
|
|
|
// Vector Shift Operations
|
2018-05-03 19:56:43 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteVarVecShift, [ZnFPU12], 1>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteVarVecShiftY, [ZnFPU12], 1>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResPairUnsupported<WriteVarVecShiftZ>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
2018-04-24 15:21:41 +02:00
|
|
|
// Vector insert/extract operations.
|
|
|
|
defm : ZnWriteResFpuPair<WriteVecInsert, [ZnFPU], 1>;
|
|
|
|
|
|
|
|
def : WriteRes<WriteVecExtract, [ZnFPU12, ZnFPU2]> {
|
|
|
|
let Latency = 2;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
|
|
|
def : WriteRes<WriteVecExtractSt, [ZnAGU, ZnFPU12, ZnFPU2]> {
|
|
|
|
let Latency = 5;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 2, 3];
|
|
|
|
}
|
|
|
|
|
2018-03-27 22:38:54 +02:00
|
|
|
// MOVMSK Instructions.
|
|
|
|
def : WriteRes<WriteFMOVMSK, [ZnFPU2]>;
|
|
|
|
def : WriteRes<WriteMMXMOVMSK, [ZnFPU2]>;
|
2018-05-04 16:54:33 +02:00
|
|
|
def : WriteRes<WriteVecMOVMSK, [ZnFPU2]>;
|
|
|
|
|
|
|
|
def : WriteRes<WriteVecMOVMSKY, [ZnFPU2]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let Latency = 2;
|
|
|
|
let ResourceCycles = [2];
|
|
|
|
}
|
2018-03-27 22:38:54 +02:00
|
|
|
|
2017-07-19 04:45:14 +02:00
|
|
|
// AES Instructions.
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteAESDecEnc, [ZnFPU01], 4>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteAESIMC, [ZnFPU01], 4>;
|
|
|
|
defm : ZnWriteResFpuPair<WriteAESKeyGen, [ZnFPU01], 4>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
|
|
|
def : WriteRes<WriteFence, [ZnAGU]>;
|
|
|
|
def : WriteRes<WriteNop, []>;
|
|
|
|
|
|
|
|
// Following instructions with latency=100 are microcoded.
|
|
|
|
// We set long latency so as to block the entire pipeline.
|
2018-03-19 15:46:07 +01:00
|
|
|
defm : ZnWriteResFpuPair<WriteFShuffle256, [ZnFPU], 100>;
|
2018-04-11 15:49:19 +02:00
|
|
|
defm : ZnWriteResFpuPair<WriteFVarShuffle256, [ZnFPU], 100>;
|
2017-07-19 04:45:14 +02:00
|
|
|
|
2018-04-13 16:31:57 +02:00
|
|
|
// Microcoded Instructions
|
2018-05-04 00:12:23 +02:00
|
|
|
def ZnWriteMicrocoded : SchedWriteRes<[]> {
|
|
|
|
let Latency = 100;
|
|
|
|
}
|
|
|
|
|
|
|
|
def : SchedAlias<WriteMicrocoded, ZnWriteMicrocoded>;
|
2018-05-12 20:07:07 +02:00
|
|
|
def : SchedAlias<WriteFCMOV, ZnWriteMicrocoded>;
|
2018-05-04 00:12:23 +02:00
|
|
|
def : SchedAlias<WriteSystem, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteMPSAD, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteMPSADY, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteMPSADLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteMPSADYLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteCLMul, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteCLMulLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpIStrM, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpIStrMLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpEStrI, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpEStrILd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpEStrM, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpEStrMLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpIStrI, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePCmpIStrILd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteLDMXCSR, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteSTMXCSR, ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
2018-04-13 16:31:57 +02:00
|
|
|
//=== Regex based InstRW ===//
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// Notation:
|
|
|
|
// - r: register.
|
|
|
|
// - m = memory.
|
|
|
|
// - i = immediate
|
|
|
|
// - mm: 64 bit mmx register.
|
|
|
|
// - x = 128 bit xmm register.
|
|
|
|
// - (x)mm = mmx or xmm register.
|
|
|
|
// - y = 256 bit ymm register.
|
|
|
|
// - v = any vector register.
|
|
|
|
|
|
|
|
//=== Integer Instructions ===//
|
|
|
|
//-- Move instructions --//
|
|
|
|
// MOV.
|
|
|
|
// r16,m.
|
|
|
|
def : InstRW<[WriteALULd, ReadAfterLd], (instregex "MOV16rm")>;
|
|
|
|
|
|
|
|
// MOVSX, MOVZX.
|
|
|
|
// r,m.
|
|
|
|
def : InstRW<[WriteLoad], (instregex "MOV(S|Z)X32rm(8|16)")>;
|
|
|
|
|
|
|
|
// XCHG.
|
|
|
|
// r,r.
|
|
|
|
def ZnWriteXCHG : SchedWriteRes<[ZnALU]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [2];
|
|
|
|
}
|
|
|
|
|
|
|
|
def : InstRW<[ZnWriteXCHG], (instregex "XCHG(8|16|32|64)rr", "XCHG(16|32|64)ar")>;
|
|
|
|
|
|
|
|
// r,m.
|
|
|
|
def ZnWriteXCHGrm : SchedWriteRes<[ZnAGU, ZnALU]> {
|
|
|
|
let Latency = 5;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteXCHGrm, ReadAfterLd], (instregex "XCHG(8|16|32|64)rm")>;
|
|
|
|
|
2018-04-27 15:32:42 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs XLAT)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// POP16.
|
|
|
|
// r.
|
|
|
|
def ZnWritePop16r : SchedWriteRes<[ZnAGU]>{
|
|
|
|
let Latency = 5;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWritePop16r], (instregex "POP16rmm")>;
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "POPF(16|32)")>;
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "POPA(16|32)")>;
|
|
|
|
|
|
|
|
|
|
|
|
// PUSH.
|
|
|
|
// r. Has default values.
|
|
|
|
// m.
|
|
|
|
def ZnWritePUSH : SchedWriteRes<[ZnAGU]>{
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWritePUSH], (instregex "PUSH(16|32)rmm")>;
|
|
|
|
|
|
|
|
//PUSHF
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "PUSHF(16|32)")>;
|
|
|
|
|
|
|
|
// PUSHA.
|
|
|
|
def ZnWritePushA : SchedWriteRes<[ZnAGU]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWritePushA], (instregex "PUSHA(16|32)")>;
|
|
|
|
|
|
|
|
//LAHF
|
2018-04-29 17:33:15 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs LAHF)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// MOVBE.
|
|
|
|
// r,m.
|
|
|
|
def ZnWriteMOVBE : SchedWriteRes<[ZnAGU, ZnALU]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteMOVBE, ReadAfterLd], (instregex "MOVBE(16|32|64)rm")>;
|
|
|
|
|
|
|
|
// m16,r16.
|
|
|
|
def : InstRW<[ZnWriteMOVBE], (instregex "MOVBE(16|32|64)mr")>;
|
|
|
|
|
|
|
|
//-- Arithmetic instructions --//
|
|
|
|
|
|
|
|
// ADD SUB.
|
|
|
|
// m,r/i.
|
|
|
|
def : InstRW<[WriteALULd], (instregex "(ADD|SUB)(8|16|32|64)m(r|i)",
|
|
|
|
"(ADD|SUB)(8|16|32|64)mi8",
|
|
|
|
"(ADD|SUB)64mi32")>;
|
|
|
|
|
|
|
|
// ADC SBB.
|
|
|
|
// m,r/i.
|
|
|
|
def : InstRW<[WriteALULd],
|
|
|
|
(instregex "(ADC|SBB)(8|16|32|64)m(r|i)",
|
|
|
|
"(ADC|SBB)(16|32|64)mi8",
|
|
|
|
"(ADC|SBB)64mi32")>;
|
|
|
|
|
|
|
|
// INC DEC NOT NEG.
|
|
|
|
// m.
|
|
|
|
def : InstRW<[WriteALULd],
|
2018-03-23 13:08:23 +01:00
|
|
|
(instregex "(INC|DEC|NOT|NEG)(8|16|32|64)m")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// MUL IMUL.
|
|
|
|
// r16.
|
|
|
|
def ZnWriteMul16 : SchedWriteRes<[ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 3;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMul16], (instrs IMUL16r, MUL16r)>;
|
|
|
|
def : InstRW<[ZnWriteMul16], (instrs IMUL16rr, IMUL16rri, IMUL16rri8)>; // TODO: is this right?
|
|
|
|
def : InstRW<[ZnWriteMul16], (instrs IMUL16rm, IMUL16rmi, IMUL16rmi8)>; // TODO: this is definitely wrong but matches what the instregex did.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// m16.
|
|
|
|
def ZnWriteMul16Ld : SchedWriteRes<[ZnAGU, ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMul16Ld, ReadAfterLd], (instrs IMUL16m, MUL16m)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// r32.
|
|
|
|
def ZnWriteMul32 : SchedWriteRes<[ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 3;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMul32], (instrs IMUL32r, MUL32r)>;
|
|
|
|
def : InstRW<[ZnWriteMul32], (instrs IMUL32rr, IMUL32rri, IMUL32rri8)>; // TODO: is this right?
|
|
|
|
def : InstRW<[ZnWriteMul32], (instrs IMUL32rm, IMUL32rmi, IMUL32rmi8)>; // TODO: this is definitely wrong but matches what the instregex did.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// m32.
|
|
|
|
def ZnWriteMul32Ld : SchedWriteRes<[ZnAGU, ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMul32Ld, ReadAfterLd], (instrs IMUL32m, MUL32m)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// r64.
|
|
|
|
def ZnWriteMul64 : SchedWriteRes<[ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 4;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMul64], (instrs IMUL64r, MUL64r)>;
|
|
|
|
def : InstRW<[ZnWriteMul64], (instrs IMUL64rr, IMUL64rri8, IMUL64rri32)>; // TODO: is this right?
|
|
|
|
def : InstRW<[ZnWriteMul64], (instrs IMUL64rm, IMUL64rmi32, IMUL64rmi8)>; // TODO: this is definitely wrong but matches what the instregex did.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// m64.
|
|
|
|
def ZnWriteMul64Ld : SchedWriteRes<[ZnAGU, ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 9;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMul64Ld, ReadAfterLd], (instrs IMUL64m, MUL64m)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// MULX.
|
|
|
|
// r32,r32,r32.
|
|
|
|
def ZnWriteMulX32 : SchedWriteRes<[ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 3;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMulX32], (instrs MULX32rr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// r32,r32,m32.
|
|
|
|
def ZnWriteMulX32Ld : SchedWriteRes<[ZnAGU, ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let ResourceCycles = [1, 2, 2];
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMulX32Ld, ReadAfterLd], (instrs MULX32rm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// r64,r64,r64.
|
|
|
|
def ZnWriteMulX64 : SchedWriteRes<[ZnALU1]> {
|
|
|
|
let Latency = 3;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMulX64], (instrs MULX64rr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// r64,r64,m64.
|
|
|
|
def ZnWriteMulX64Ld : SchedWriteRes<[ZnAGU, ZnALU1, ZnMultiplier]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
2018-01-25 07:57:39 +01:00
|
|
|
def : InstRW<[ZnWriteMulX64Ld, ReadAfterLd], (instrs MULX64rm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//-- Control transfer instructions --//
|
|
|
|
|
|
|
|
// J(E|R)CXZ.
|
|
|
|
def ZnWriteJCXZ : SchedWriteRes<[ZnALU03]>;
|
2018-03-19 20:00:29 +01:00
|
|
|
def : InstRW<[ZnWriteJCXZ], (instrs JCXZ, JECXZ, JRCXZ)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// INTO
|
2018-04-29 17:33:15 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs INTO)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// LOOP.
|
|
|
|
def ZnWriteLOOP : SchedWriteRes<[ZnALU03]>;
|
2018-03-18 09:38:06 +01:00
|
|
|
def : InstRW<[ZnWriteLOOP], (instrs LOOP)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// LOOP(N)E, LOOP(N)Z
|
|
|
|
def ZnWriteLOOPE : SchedWriteRes<[ZnALU03]>;
|
2018-03-18 09:38:06 +01:00
|
|
|
def : InstRW<[ZnWriteLOOPE], (instrs LOOPE, LOOPNE)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// CALL.
|
|
|
|
// r.
|
|
|
|
def ZnWriteCALLr : SchedWriteRes<[ZnAGU, ZnALU03]>;
|
|
|
|
def : InstRW<[ZnWriteCALLr], (instregex "CALL(16|32)r")>;
|
|
|
|
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "CALL(16|32)m")>;
|
|
|
|
|
|
|
|
// RET.
|
|
|
|
def ZnWriteRET : SchedWriteRes<[ZnALU03]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteRET], (instregex "RET(L|Q|W)", "LRET(L|Q|W)",
|
2018-03-23 13:08:23 +01:00
|
|
|
"IRET(16|32|64)")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//-- Logic instructions --//
|
|
|
|
|
|
|
|
// AND OR XOR.
|
|
|
|
// m,r/i.
|
|
|
|
def : InstRW<[WriteALULd],
|
|
|
|
(instregex "(AND|OR|XOR)(8|16|32|64)m(r|i)",
|
|
|
|
"(AND|OR|XOR)(8|16|32|64)mi8", "(AND|OR|XOR)64mi32")>;
|
|
|
|
|
|
|
|
// Define ALU latency variants
|
|
|
|
def ZnWriteALULat2 : SchedWriteRes<[ZnALU]> {
|
|
|
|
let Latency = 2;
|
|
|
|
}
|
|
|
|
def ZnWriteALULat2Ld : SchedWriteRes<[ZnAGU, ZnALU]> {
|
|
|
|
let Latency = 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
// BT.
|
2018-04-29 20:18:51 +02:00
|
|
|
// m,i.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
def : InstRW<[WriteShiftLd], (instregex "BT(16|32|64)mi8")>;
|
|
|
|
|
|
|
|
// BTR BTS BTC.
|
|
|
|
// r,r,i.
|
|
|
|
def ZnWriteBTRSC : SchedWriteRes<[ZnALU]> {
|
|
|
|
let Latency = 2;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteBTRSC], (instregex "BT(R|S|C)(16|32|64)r(r|i8)")>;
|
|
|
|
|
|
|
|
// m,r,i.
|
|
|
|
def ZnWriteBTRSCm : SchedWriteRes<[ZnAGU, ZnALU]> {
|
|
|
|
let Latency = 6;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
// m,r,i.
|
|
|
|
def : InstRW<[ZnWriteBTRSCm], (instregex "BT(R|S|C)(16|32|64)m(r|i8)")>;
|
|
|
|
|
|
|
|
// BLSI BLSMSK BLSR.
|
|
|
|
// r,r.
|
|
|
|
def : InstRW<[ZnWriteALULat2], (instregex "BLS(I|MSK|R)(32|64)rr")>;
|
|
|
|
// r,m.
|
2018-03-29 23:03:53 +02:00
|
|
|
def : InstRW<[ZnWriteALULat2Ld], (instregex "BLS(I|MSK|R)(32|64)rm")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// CLD STD.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteALU], (instrs STD, CLD)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// PDEP PEXT.
|
|
|
|
// r,r,r.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "PDEP(32|64)rr", "PEXT(32|64)rr")>;
|
2018-03-29 22:41:39 +02:00
|
|
|
// r,r,m.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "PDEP(32|64)rm", "PEXT(32|64)rm")>;
|
|
|
|
|
|
|
|
// RCR RCL.
|
|
|
|
// m,i.
|
2018-04-28 20:45:16 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "RC(R|L)(8|16|32|64)m(1|i|CL)")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// SHR SHL SAR.
|
|
|
|
// m,i.
|
|
|
|
def : InstRW<[WriteShiftLd], (instregex "S(A|H)(R|L)(8|16|32|64)m(i|1)")>;
|
|
|
|
|
|
|
|
// SHRD SHLD.
|
|
|
|
// m,r
|
|
|
|
def : InstRW<[WriteShiftLd], (instregex "SH(R|L)D(16|32|64)mri8")>;
|
|
|
|
|
|
|
|
// r,r,cl.
|
2018-04-28 20:45:16 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "SH(R|L)D(16|32|64)rrCL")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// m,r,cl.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "SH(R|L)D(16|32|64)mrCL")>;
|
|
|
|
|
|
|
|
//-- Misc instructions --//
|
|
|
|
// CMPXCHG.
|
|
|
|
def ZnWriteCMPXCHG : SchedWriteRes<[ZnAGU, ZnALU]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 5;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteCMPXCHG], (instregex "CMPXCHG(8|16|32|64)rm")>;
|
|
|
|
|
|
|
|
// CMPXCHG8B.
|
|
|
|
def ZnWriteCMPXCHG8B : SchedWriteRes<[ZnAGU, ZnALU]> {
|
|
|
|
let NumMicroOps = 18;
|
|
|
|
}
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[ZnWriteCMPXCHG8B], (instrs CMPXCHG8B)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs CMPXCHG16B)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// LEAVE
|
|
|
|
def ZnWriteLEAVE : SchedWriteRes<[ZnALU, ZnAGU]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteLEAVE], (instregex "LEAVE")>;
|
|
|
|
|
|
|
|
// PAUSE.
|
2018-04-29 17:33:15 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs PAUSE)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// RDTSC.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "RDTSC")>;
|
|
|
|
|
|
|
|
// RDPMC.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs RDPMC)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// RDRAND.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "RDRAND(16|32|64)r")>;
|
|
|
|
|
|
|
|
// XGETBV.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "XGETBV")>;
|
|
|
|
|
|
|
|
//-- String instructions --//
|
|
|
|
// CMPS.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "CMPS(B|L|Q|W)")>;
|
|
|
|
|
|
|
|
// LODSB/W.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "LODS(B|W)")>;
|
|
|
|
|
|
|
|
// LODSD/Q.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "LODS(L|Q)")>;
|
|
|
|
|
|
|
|
// MOVS.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "MOVS(B|L|Q|W)")>;
|
|
|
|
|
|
|
|
// SCAS.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "SCAS(B|W|L|Q)")>;
|
|
|
|
|
|
|
|
// STOS
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "STOS(B|L|Q|W)")>;
|
|
|
|
|
|
|
|
// XADD.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "XADD(8|16|32|64)rm")>;
|
|
|
|
|
|
|
|
//=== Floating Point x87 Instructions ===//
|
|
|
|
//-- Move instructions --//
|
|
|
|
|
|
|
|
def ZnWriteFLDr : SchedWriteRes<[ZnFPU13]> ;
|
|
|
|
|
|
|
|
def ZnWriteSTr: SchedWriteRes<[ZnFPU23]> {
|
|
|
|
let Latency = 5;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// LD_F.
|
|
|
|
// r.
|
|
|
|
def : InstRW<[ZnWriteFLDr], (instregex "LD_Frr")>;
|
|
|
|
|
|
|
|
// m.
|
|
|
|
def ZnWriteLD_F80m : SchedWriteRes<[ZnAGU, ZnFPU13]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteLD_F80m], (instregex "LD_F80m")>;
|
|
|
|
|
|
|
|
// FBLD.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "FBLDm")>;
|
|
|
|
|
|
|
|
// FST(P).
|
|
|
|
// r.
|
|
|
|
def : InstRW<[ZnWriteSTr], (instregex "ST_(F|FP)rr")>;
|
|
|
|
|
|
|
|
// m80.
|
|
|
|
def ZnWriteST_FP80m : SchedWriteRes<[ZnAGU, ZnFPU23]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteST_FP80m], (instregex "ST_FP80m")>;
|
|
|
|
|
|
|
|
// FBSTP.
|
|
|
|
// m80.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "FBSTPm")>;
|
|
|
|
|
|
|
|
def ZnWriteFXCH : SchedWriteRes<[ZnFPU]>;
|
|
|
|
|
|
|
|
// FXCHG.
|
2018-04-27 15:32:42 +02:00
|
|
|
def : InstRW<[ZnWriteFXCH], (instrs XCH_F)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FILD.
|
|
|
|
def ZnWriteFILD : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 11;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteFILD], (instregex "ILD_F(16|32|64)m")>;
|
|
|
|
|
|
|
|
// FIST(P) FISTTP.
|
|
|
|
def ZnWriteFIST : SchedWriteRes<[ZnAGU, ZnFPU23]> {
|
|
|
|
let Latency = 12;
|
|
|
|
}
|
2017-12-10 20:19:22 +01:00
|
|
|
def : InstRW<[ZnWriteFIST], (instregex "IS(T|TT)_(F|FP)(16|32|64)m")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteFPU13 : SchedWriteRes<[ZnAGU, ZnFPU13]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
def ZnWriteFPU3 : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 11;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FLDZ.
|
2018-05-31 13:41:27 +02:00
|
|
|
def : SchedAlias<WriteFLD0, ZnWriteFPU13>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FLD1.
|
2018-05-31 13:41:27 +02:00
|
|
|
def : SchedAlias<WriteFLD1, ZnWriteFPU3>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FLDPI FLDL2E etc.
|
[X86] Introduce WriteFLDC for x87 constant loads.
Summary:
{FLDL2E, FLDL2T, FLDLG2, FLDLN2, FLDPI} were using WriteMicrocoded.
- I've measured the values for Broadwell, Haswell, SandyBridge, Skylake.
- For ZnVer1 and Atom, values were transferred form InstRWs.
- For SLM and BtVer2, I've guessed some values :(
Reviewers: RKSimon, craig.topper, andreadb
Subscribers: gbedwell, llvm-commits
Differential Revision: https://reviews.llvm.org/D47585
llvm-svn: 333656
2018-05-31 16:22:01 +02:00
|
|
|
def : SchedAlias<WriteFLDC, ZnWriteFPU3>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FNSTSW.
|
|
|
|
// AX.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FNSTSW16r)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// m16.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FNSTSWm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FLDCW.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FLDCW16m)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FNSTCW.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FNSTCW16m)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FINCSTP FDECSTP.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[ZnWriteFPU3], (instrs FINCSTP, FDECSTP)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FFREE.
|
|
|
|
def : InstRW<[ZnWriteFPU3], (instregex "FFREE")>;
|
|
|
|
|
|
|
|
// FNSAVE.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "FSAVEm")>;
|
|
|
|
|
|
|
|
// FRSTOR.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "FRSTORm")>;
|
|
|
|
|
|
|
|
//-- Arithmetic instructions --//
|
|
|
|
|
|
|
|
def ZnWriteFPU3Lat1 : SchedWriteRes<[ZnFPU3]> ;
|
|
|
|
|
|
|
|
def ZnWriteFPU0Lat1 : SchedWriteRes<[ZnFPU0]> ;
|
|
|
|
|
|
|
|
def ZnWriteFPU0Lat1Ld : SchedWriteRes<[ZnAGU, ZnFPU0]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FCHS.
|
|
|
|
def : InstRW<[ZnWriteFPU3Lat1], (instregex "CHS_F")>;
|
|
|
|
|
|
|
|
// FCOM(P) FUCOM(P).
|
|
|
|
// r.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[ZnWriteFPU0Lat1], (instregex "COM(P?)_FST0r", "UCOM_F(P?)r")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// m.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[ZnWriteFPU0Lat1Ld], (instregex "FCOM(P?)(32|64)m")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FCOMPP FUCOMPP.
|
|
|
|
// r.
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[ZnWriteFPU0Lat1], (instrs FCOMPP, UCOM_FPPr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteFPU02 : SchedWriteRes<[ZnAGU, ZnFPU02]>
|
|
|
|
{
|
|
|
|
let Latency = 9;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FCOMI(P) FUCOMI(P).
|
|
|
|
// m.
|
2018-04-27 23:14:19 +02:00
|
|
|
def : InstRW<[ZnWriteFPU02], (instrs COM_FIPr, COM_FIr, UCOM_FIPr, UCOM_FIr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteFPU03 : SchedWriteRes<[ZnAGU, ZnFPU03]>
|
|
|
|
{
|
|
|
|
let Latency = 12;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1,3];
|
|
|
|
}
|
|
|
|
|
|
|
|
// FICOM(P).
|
2018-05-10 21:08:06 +02:00
|
|
|
def : InstRW<[ZnWriteFPU03], (instregex "FICOM(P?)(16|32)m")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FTST.
|
|
|
|
def : InstRW<[ZnWriteFPU0Lat1], (instregex "TST_F")>;
|
|
|
|
|
|
|
|
// FXAM.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[ZnWriteFPU3Lat1], (instrs FXAM)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FPREM.
|
2018-03-18 09:38:06 +01:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FPREM)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FPREM1.
|
2018-03-18 09:38:06 +01:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FPREM1)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FRNDINT.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FRNDINT)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FSCALE.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FSCALE)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FXTRACT.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FXTRACT)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FNOP.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[ZnWriteFPU0Lat1], (instrs FNOP)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// WAIT.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[ZnWriteFPU0Lat1], (instrs WAIT)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FNCLEX.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FNCLEX)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// FNINIT.
|
2018-04-23 18:10:50 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs FNINIT)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//=== Integer MMX and XMM Instructions ===//
|
|
|
|
|
|
|
|
// PACKSSWB/DW.
|
|
|
|
// mm <- mm.
|
|
|
|
def ZnWriteFPU12 : SchedWriteRes<[ZnFPU12]> ;
|
|
|
|
def ZnWriteFPU12Y : SchedWriteRes<[ZnFPU12]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def ZnWriteFPU12m : SchedWriteRes<[ZnAGU, ZnFPU12]> ;
|
2018-05-07 20:25:19 +02:00
|
|
|
def ZnWriteFPU12Ym : SchedWriteRes<[ZnAGU, ZnFPU12]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU12], (instrs MMX_PACKSSDWirr,
|
|
|
|
MMX_PACKSSWBirr,
|
|
|
|
MMX_PACKUSWBirr)>;
|
|
|
|
def : InstRW<[ZnWriteFPU12m], (instrs MMX_PACKSSDWirm,
|
|
|
|
MMX_PACKSSWBirm,
|
|
|
|
MMX_PACKUSWBirm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
2018-05-07 20:25:19 +02:00
|
|
|
// VPMOVSX/ZX BW BD BQ WD WQ DQ.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// y <- x.
|
2018-05-07 20:25:19 +02:00
|
|
|
def : InstRW<[ZnWriteFPU12Y], (instregex "VPMOV(SX|ZX)(BW|BD|BQ|WD|WQ|DQ)Yrr")>;
|
|
|
|
def : InstRW<[ZnWriteFPU12Ym], (instregex "VPMOV(SX|ZX)(BW|BD|BQ|WD|WQ|DQ)Yrm")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteFPU013 : SchedWriteRes<[ZnFPU013]> ;
|
|
|
|
def ZnWriteFPU013Y : SchedWriteRes<[ZnFPU013]> {
|
|
|
|
let Latency = 2;
|
|
|
|
}
|
|
|
|
def ZnWriteFPU013m : SchedWriteRes<[ZnAGU, ZnFPU013]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def ZnWriteFPU013Ld : SchedWriteRes<[ZnAGU, ZnFPU013]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
def ZnWriteFPU013LdY : SchedWriteRes<[ZnAGU, ZnFPU013]> {
|
|
|
|
let Latency = 9;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// PBLENDW.
|
|
|
|
// x,x,i / v,v,v,i
|
|
|
|
def : InstRW<[ZnWriteFPU013], (instregex "(V?)PBLENDWrri")>;
|
|
|
|
// ymm
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU013Y], (instrs VPBLENDWYrri)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m,i / v,v,m,i
|
|
|
|
def : InstRW<[ZnWriteFPU013Ld], (instregex "(V?)PBLENDWrmi")>;
|
|
|
|
// y,m,i
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU013LdY], (instrs VPBLENDWYrmi)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteFPU01 : SchedWriteRes<[ZnFPU01]> ;
|
|
|
|
def ZnWriteFPU01Y : SchedWriteRes<[ZnFPU01]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// VPBLENDD.
|
|
|
|
// v,v,v,i.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU01], (instrs VPBLENDDrri)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// ymm
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU01Y], (instrs VPBLENDDYrri)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// v,v,m,i
|
|
|
|
def ZnWriteFPU01Op2 : SchedWriteRes<[ZnAGU, ZnFPU01]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let Latency = 8;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
|
|
|
def ZnWriteFPU01Op2Y : SchedWriteRes<[ZnAGU, ZnFPU01]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let Latency = 9;
|
|
|
|
let ResourceCycles = [1, 3];
|
|
|
|
}
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU01Op2], (instrs VPBLENDDrmi)>;
|
|
|
|
def : InstRW<[ZnWriteFPU01Op2Y], (instrs VPBLENDDYrmi)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// MASKMOVQ.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "MMX_MASKMOVQ(64)?")>;
|
|
|
|
|
|
|
|
// MASKMOVDQU.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "(V?)MASKMOVDQU(64)?")>;
|
|
|
|
|
2018-05-08 14:17:55 +02:00
|
|
|
// VPMASKMOVD.
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// ymm
|
|
|
|
def : InstRW<[WriteMicrocoded],
|
|
|
|
(instregex "VPMASKMOVD(Y?)rm")>;
|
|
|
|
// m, v,v.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "VPMASKMOV(D|Q)(Y?)mr")>;
|
|
|
|
|
|
|
|
// VPBROADCAST B/W.
|
|
|
|
// x, m8/16.
|
|
|
|
def ZnWriteVPBROADCAST128Ld : SchedWriteRes<[ZnAGU, ZnFPU12]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteVPBROADCAST128Ld],
|
|
|
|
(instregex "VPBROADCAST(B|W)rm")>;
|
|
|
|
|
|
|
|
// y, m8/16
|
|
|
|
def ZnWriteVPBROADCAST256Ld : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteVPBROADCAST256Ld],
|
|
|
|
(instregex "VPBROADCAST(B|W)Yrm")>;
|
|
|
|
|
|
|
|
// VPGATHER.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "VPGATHER(Q|D)(Q|D)(Y?)rm")>;
|
|
|
|
|
|
|
|
//-- Arithmetic instructions --//
|
|
|
|
|
|
|
|
// HADD, HSUB PS/PD
|
|
|
|
// PHADD|PHSUB (S) W/D.
|
2018-05-04 00:12:23 +02:00
|
|
|
def : SchedAlias<WritePHAdd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePHAddLd, ZnWriteMicrocoded>;
|
2018-05-10 19:06:09 +02:00
|
|
|
def : SchedAlias<WritePHAddX, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePHAddXLd, ZnWriteMicrocoded>;
|
2018-05-04 00:12:23 +02:00
|
|
|
def : SchedAlias<WritePHAddY, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WritePHAddYLd, ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// PCMPGTQ.
|
|
|
|
def ZnWritePCMPGTQr : SchedWriteRes<[ZnFPU03]>;
|
|
|
|
def : InstRW<[ZnWritePCMPGTQr], (instregex "(V?)PCMPGTQ(Y?)rr")>;
|
|
|
|
|
|
|
|
// x <- x,m.
|
|
|
|
def ZnWritePCMPGTQm : SchedWriteRes<[ZnAGU, ZnFPU03]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
// ymm.
|
|
|
|
def ZnWritePCMPGTQYm : SchedWriteRes<[ZnAGU, ZnFPU03]> {
|
|
|
|
let Latency = 8;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1,2];
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWritePCMPGTQm], (instregex "(V?)PCMPGTQrm")>;
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWritePCMPGTQYm], (instrs VPCMPGTQYrm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//-- Logic instructions --//
|
|
|
|
|
|
|
|
// PSLL,PSRL,PSRA W/D/Q.
|
|
|
|
// x,x / v,v,x.
|
|
|
|
def ZnWritePShift : SchedWriteRes<[ZnFPU2]> ;
|
|
|
|
def ZnWritePShiftY : SchedWriteRes<[ZnFPU2]> {
|
|
|
|
let Latency = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
// PSLL,PSRL DQ.
|
|
|
|
def : InstRW<[ZnWritePShift], (instregex "(V?)PS(R|L)LDQri")>;
|
|
|
|
def : InstRW<[ZnWritePShiftY], (instregex "(V?)PS(R|L)LDQYri")>;
|
|
|
|
|
|
|
|
//=== Floating Point XMM and YMM Instructions ===//
|
|
|
|
//-- Move instructions --//
|
|
|
|
|
|
|
|
// VPERM2F128.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs VPERM2F128rr)>;
|
|
|
|
def : InstRW<[WriteMicrocoded], (instrs VPERM2F128rm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteBROADCAST : SchedWriteRes<[ZnAGU, ZnFPU13]> {
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
// VBROADCASTF128.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteBROADCAST], (instrs VBROADCASTF128)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// EXTRACTPS.
|
|
|
|
// r32,x,i.
|
|
|
|
def ZnWriteEXTRACTPSr : SchedWriteRes<[ZnFPU12, ZnFPU2]> {
|
|
|
|
let Latency = 2;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteEXTRACTPSr], (instregex "(V?)EXTRACTPSrr")>;
|
|
|
|
|
|
|
|
def ZnWriteEXTRACTPSm : SchedWriteRes<[ZnAGU,ZnFPU12, ZnFPU2]> {
|
|
|
|
let Latency = 5;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [5, 1, 2];
|
|
|
|
}
|
|
|
|
// m32,x,i.
|
|
|
|
def : InstRW<[ZnWriteEXTRACTPSm], (instregex "(V?)EXTRACTPSmr")>;
|
|
|
|
|
|
|
|
// VEXTRACTF128.
|
|
|
|
// x,y,i.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU013], (instrs VEXTRACTF128rr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// m128,y,i.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteFPU013m], (instrs VEXTRACTF128mr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteVINSERT128r: SchedWriteRes<[ZnFPU013]> {
|
|
|
|
let Latency = 2;
|
|
|
|
let ResourceCycles = [2];
|
|
|
|
}
|
|
|
|
def ZnWriteVINSERT128Ld: SchedWriteRes<[ZnAGU,ZnFPU013]> {
|
|
|
|
let Latency = 9;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
|
|
|
// VINSERTF128.
|
|
|
|
// y,y,x,i.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteVINSERT128r], (instrs VINSERTF128rr)>;
|
|
|
|
def : InstRW<[ZnWriteVINSERT128Ld], (instrs VINSERTF128rm)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
2018-05-18 15:05:26 +02:00
|
|
|
// VGATHER.
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "VGATHER(Q|D)(PD|PS)(Y?)rm")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//-- Conversion instructions --//
|
|
|
|
def ZnWriteCVTPD2PSr: SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def ZnWriteCVTPD2PSYr: SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// CVTPD2PS.
|
|
|
|
// x,x.
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtPD2PS, ZnWriteCVTPD2PSr>;
|
|
|
|
// y,y.
|
|
|
|
def : SchedAlias<WriteCvtPD2PSY, ZnWriteCVTPD2PSYr>;
|
2018-06-11 16:37:53 +02:00
|
|
|
// z,z.
|
|
|
|
defm : X86WriteResUnsupported<WriteCvtPD2PSZ>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteCVTPD2PSLd: SchedWriteRes<[ZnAGU,ZnFPU03]> {
|
|
|
|
let Latency = 11;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1,2];
|
|
|
|
}
|
|
|
|
// x,m128.
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtPD2PSLd, ZnWriteCVTPD2PSLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m256.
|
|
|
|
def ZnWriteCVTPD2PSYLd : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 11;
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtPD2PSYLd, ZnWriteCVTPD2PSYLd>;
|
2018-06-11 16:37:53 +02:00
|
|
|
// z,m512
|
|
|
|
defm : X86WriteResUnsupported<WriteCvtPD2PSZLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// CVTSD2SS.
|
|
|
|
// x,x.
|
|
|
|
// Same as WriteCVTPD2PSr
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtSD2SS, ZnWriteCVTPD2PSr>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m64.
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtSD2SSLd, ZnWriteCVTPD2PSLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// CVTPS2PD.
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteCVTPS2PDr : SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 3;
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtPS2PD, ZnWriteCVTPS2PDr>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m64.
|
|
|
|
// y,m128.
|
|
|
|
def ZnWriteCVTPS2PDLd : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 10;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtPS2PDLd, ZnWriteCVTPS2PDLd>;
|
|
|
|
def : SchedAlias<WriteCvtPS2PDYLd, ZnWriteCVTPS2PDLd>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResUnsupported<WriteCvtPS2PDZLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// y,x.
|
|
|
|
def ZnWriteVCVTPS2PDY : SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 3;
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtPS2PDY, ZnWriteVCVTPS2PDY>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResUnsupported<WriteCvtPS2PDZ>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// CVTSS2SD.
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteCVTSS2SDr : SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtSS2SD, ZnWriteCVTSS2SDr>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m32.
|
|
|
|
def ZnWriteCVTSS2SDLd : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 11;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 2];
|
|
|
|
}
|
2018-05-15 19:36:49 +02:00
|
|
|
def : SchedAlias<WriteCvtSS2SDLd, ZnWriteCVTSS2SDLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteCVTDQ2PDr: SchedWriteRes<[ZnFPU12,ZnFPU3]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
// CVTDQ2PD.
|
|
|
|
// x,x.
|
|
|
|
def : InstRW<[ZnWriteCVTDQ2PDr], (instregex "(V)?CVTDQ2PDrr")>;
|
|
|
|
|
|
|
|
// Same as xmm
|
|
|
|
// y,x.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteCVTDQ2PDr], (instrs VCVTDQ2PDYrr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteCVTPD2DQr: SchedWriteRes<[ZnFPU12, ZnFPU3]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
// CVT(T)PD2DQ.
|
|
|
|
// x,x.
|
|
|
|
def : InstRW<[ZnWriteCVTDQ2PDr], (instregex "(V?)CVT(T?)PD2DQrr")>;
|
|
|
|
|
|
|
|
def ZnWriteCVTPD2DQLd: SchedWriteRes<[ZnAGU,ZnFPU12,ZnFPU3]> {
|
|
|
|
let Latency = 12;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
|
|
|
// x,m128.
|
|
|
|
def : InstRW<[ZnWriteCVTPD2DQLd], (instregex "(V?)CVT(T?)PD2DQrm")>;
|
|
|
|
// same as xmm handling
|
|
|
|
// x,y.
|
|
|
|
def : InstRW<[ZnWriteCVTPD2DQr], (instregex "VCVT(T?)PD2DQYrr")>;
|
|
|
|
// x,m256.
|
|
|
|
def : InstRW<[ZnWriteCVTPD2DQLd], (instregex "VCVT(T?)PD2DQYrm")>;
|
|
|
|
|
|
|
|
def ZnWriteCVTPS2PIr: SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
|
|
|
// CVT(T)PS2PI.
|
|
|
|
// mm,x.
|
|
|
|
def : InstRW<[ZnWriteCVTPS2PIr], (instregex "MMX_CVT(T?)PS2PIirr")>;
|
|
|
|
|
|
|
|
// CVTPI2PD.
|
|
|
|
// x,mm.
|
2018-05-18 15:05:26 +02:00
|
|
|
def : InstRW<[ZnWriteCVTPS2PDr], (instrs MMX_CVTPI2PDirr)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// CVT(T)PD2PI.
|
|
|
|
// mm,x.
|
|
|
|
def : InstRW<[ZnWriteCVTPS2PIr], (instregex "MMX_CVT(T?)PD2PIirr")>;
|
|
|
|
|
|
|
|
def ZnWriteCVSTSI2SSr: SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
// same as CVTPD2DQr
|
|
|
|
// CVT(T)SS2SI.
|
|
|
|
// r32,x.
|
2018-01-23 22:37:54 +01:00
|
|
|
def : InstRW<[ZnWriteCVTPD2DQr], (instregex "(V?)CVT(T?)SS2SI(64)?rr")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// same as CVTPD2DQm
|
|
|
|
// r32,m32.
|
2018-01-23 22:37:54 +01:00
|
|
|
def : InstRW<[ZnWriteCVTPD2DQLd], (instregex "(V?)CVT(T?)SS2SI(64)?rm")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
def ZnWriteCVSTSI2SDr: SchedWriteRes<[ZnFPU013, ZnFPU3]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
// CVTSI2SD.
|
|
|
|
// x,r32/64.
|
2018-05-16 20:31:17 +02:00
|
|
|
def : InstRW<[ZnWriteCVSTSI2SDr], (instregex "(V?)CVTSI(64)?2SDrr")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
def ZnWriteCVSTSI2SIr: SchedWriteRes<[ZnFPU3, ZnFPU2]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
|
|
|
def ZnWriteCVSTSI2SILd: SchedWriteRes<[ZnAGU, ZnFPU3, ZnFPU2]> {
|
|
|
|
let Latency = 12;
|
|
|
|
}
|
|
|
|
// CVTSD2SI.
|
|
|
|
// r32/64
|
2018-01-23 22:37:56 +01:00
|
|
|
def : InstRW<[ZnWriteCVSTSI2SIr], (instregex "(V?)CVT(T?)SD2SI(64)?rr")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// r32,m32.
|
2018-01-23 22:37:56 +01:00
|
|
|
def : InstRW<[ZnWriteCVSTSI2SILd], (instregex "(V?)CVT(T?)SD2SI(64)?rm")>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// VCVTPS2PH.
|
|
|
|
// x,v,i.
|
2018-05-15 16:12:32 +02:00
|
|
|
def : SchedAlias<WriteCvtPS2PH, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteCvtPS2PHY, ZnWriteMicrocoded>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResUnsupported<WriteCvtPS2PHZ>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// m,v,i.
|
2018-05-15 16:12:32 +02:00
|
|
|
def : SchedAlias<WriteCvtPS2PHSt, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteCvtPS2PHYSt, ZnWriteMicrocoded>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResUnsupported<WriteCvtPS2PHZSt>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// VCVTPH2PS.
|
|
|
|
// v,x.
|
2018-05-15 16:12:32 +02:00
|
|
|
def : SchedAlias<WriteCvtPH2PS, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteCvtPH2PSY, ZnWriteMicrocoded>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResUnsupported<WriteCvtPH2PSZ>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// v,m.
|
2018-05-15 16:12:32 +02:00
|
|
|
def : SchedAlias<WriteCvtPH2PSLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteCvtPH2PSYLd, ZnWriteMicrocoded>;
|
2018-06-11 16:37:53 +02:00
|
|
|
defm : X86WriteResUnsupported<WriteCvtPH2PSZLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//-- SSE4A instructions --//
|
|
|
|
// EXTRQ
|
|
|
|
def ZnWriteEXTRQ: SchedWriteRes<[ZnFPU12, ZnFPU2]> {
|
|
|
|
let Latency = 2;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteEXTRQ], (instregex "EXTRQ")>;
|
|
|
|
|
|
|
|
// INSERTQ
|
|
|
|
def ZnWriteINSERTQ: SchedWriteRes<[ZnFPU03,ZnFPU1]> {
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteINSERTQ], (instregex "INSERTQ")>;
|
|
|
|
|
|
|
|
//-- SHA instructions --//
|
|
|
|
// SHA256MSG2
|
|
|
|
def : InstRW<[WriteMicrocoded], (instregex "SHA256MSG2(Y?)r(r|m)")>;
|
|
|
|
|
|
|
|
// SHA1MSG1, SHA256MSG1
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteSHA1MSG1r : SchedWriteRes<[ZnFPU12]> {
|
|
|
|
let Latency = 2;
|
|
|
|
let ResourceCycles = [2];
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA1MSG1r], (instregex "SHA(1|256)MSG1rr")>;
|
|
|
|
// x,m.
|
|
|
|
def ZnWriteSHA1MSG1Ld : SchedWriteRes<[ZnAGU, ZnFPU12]> {
|
|
|
|
let Latency = 9;
|
|
|
|
let ResourceCycles = [1,2];
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA1MSG1Ld], (instregex "SHA(1|256)MSG1rm")>;
|
|
|
|
|
|
|
|
// SHA1MSG2
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteSHA1MSG2r : SchedWriteRes<[ZnFPU12]> ;
|
|
|
|
def : InstRW<[ZnWriteSHA1MSG2r], (instregex "SHA1MSG2rr")>;
|
|
|
|
// x,m.
|
|
|
|
def ZnWriteSHA1MSG2Ld : SchedWriteRes<[ZnAGU, ZnFPU12]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA1MSG2Ld], (instregex "SHA1MSG2rm")>;
|
|
|
|
|
|
|
|
// SHA1NEXTE
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteSHA1NEXTEr : SchedWriteRes<[ZnFPU1]> ;
|
|
|
|
def : InstRW<[ZnWriteSHA1NEXTEr], (instregex "SHA1NEXTErr")>;
|
|
|
|
// x,m.
|
|
|
|
def ZnWriteSHA1NEXTELd : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
|
|
|
let Latency = 8;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA1NEXTELd], (instregex "SHA1NEXTErm")>;
|
|
|
|
|
|
|
|
// SHA1RNDS4
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteSHA1RNDS4r : SchedWriteRes<[ZnFPU1]> {
|
|
|
|
let Latency = 6;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA1RNDS4r], (instregex "SHA1RNDS4rr")>;
|
|
|
|
// x,m.
|
|
|
|
def ZnWriteSHA1RNDS4Ld : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
|
|
|
let Latency = 13;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA1RNDS4Ld], (instregex "SHA1RNDS4rm")>;
|
|
|
|
|
|
|
|
// SHA256RNDS2
|
|
|
|
// x,x.
|
|
|
|
def ZnWriteSHA256RNDS2r : SchedWriteRes<[ZnFPU1]> {
|
|
|
|
let Latency = 4;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA256RNDS2r], (instregex "SHA256RNDS2rr")>;
|
|
|
|
// x,m.
|
|
|
|
def ZnWriteSHA256RNDS2Ld : SchedWriteRes<[ZnAGU, ZnFPU1]> {
|
|
|
|
let Latency = 11;
|
|
|
|
}
|
|
|
|
def : InstRW<[ZnWriteSHA256RNDS2Ld], (instregex "SHA256RNDS2rm")>;
|
|
|
|
|
|
|
|
//-- Arithmetic instructions --//
|
|
|
|
|
|
|
|
// HADD, HSUB PS/PD
|
2018-05-04 00:12:23 +02:00
|
|
|
def : SchedAlias<WriteFHAdd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteFHAddLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteFHAddY, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteFHAddYLd, ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// VDIVPS.
|
2018-05-07 18:15:46 +02:00
|
|
|
// TODO - convert to ZnWriteResFpuPair
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// y,y,y.
|
|
|
|
def ZnWriteVDIVPSYr : SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 12;
|
|
|
|
let ResourceCycles = [12];
|
|
|
|
}
|
2018-05-07 18:15:46 +02:00
|
|
|
def : SchedAlias<WriteFDivY, ZnWriteVDIVPSYr>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// y,y,m256.
|
|
|
|
def ZnWriteVDIVPSYLd : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 19;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1, 19];
|
|
|
|
}
|
2018-05-07 18:15:46 +02:00
|
|
|
def : SchedAlias<WriteFDivYLd, ZnWriteVDIVPSYLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// VDIVPD.
|
2018-05-07 18:15:46 +02:00
|
|
|
// TODO - convert to ZnWriteResFpuPair
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// y,y,y.
|
|
|
|
def ZnWriteVDIVPDY : SchedWriteRes<[ZnFPU3]> {
|
|
|
|
let Latency = 15;
|
|
|
|
let ResourceCycles = [15];
|
|
|
|
}
|
2018-05-07 18:15:46 +02:00
|
|
|
def : SchedAlias<WriteFDiv64Y, ZnWriteVDIVPDY>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// y,y,m256.
|
|
|
|
def ZnWriteVDIVPDYLd : SchedWriteRes<[ZnAGU, ZnFPU3]> {
|
|
|
|
let Latency = 22;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [1,22];
|
|
|
|
}
|
2018-05-07 18:15:46 +02:00
|
|
|
def : SchedAlias<WriteFDiv64YLd, ZnWriteVDIVPDYLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// DPPS.
|
|
|
|
// x,x,i / v,v,v,i.
|
2018-05-04 00:31:19 +02:00
|
|
|
def : SchedAlias<WriteDPPS, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteDPPSY, ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m,i / v,v,m,i.
|
2018-05-04 00:31:19 +02:00
|
|
|
def : SchedAlias<WriteDPPSLd, ZnWriteMicrocoded>;
|
|
|
|
def : SchedAlias<WriteDPPSYLd,ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// DPPD.
|
|
|
|
// x,x,i.
|
2018-05-04 00:31:19 +02:00
|
|
|
def : SchedAlias<WriteDPPD, ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m,i.
|
2018-05-04 00:31:19 +02:00
|
|
|
def : SchedAlias<WriteDPPDLd, ZnWriteMicrocoded>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// RSQRTSS
|
2018-05-07 13:50:44 +02:00
|
|
|
// TODO - convert to ZnWriteResFpuPair
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// x,x.
|
|
|
|
def ZnWriteRSQRTSSr : SchedWriteRes<[ZnFPU02]> {
|
|
|
|
let Latency = 5;
|
|
|
|
}
|
2018-05-07 13:50:44 +02:00
|
|
|
def : SchedAlias<WriteFRsqrt, ZnWriteRSQRTSSr>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// x,m128.
|
|
|
|
def ZnWriteRSQRTSSLd: SchedWriteRes<[ZnAGU, ZnFPU02]> {
|
|
|
|
let Latency = 12;
|
|
|
|
let NumMicroOps = 2;
|
2018-05-07 13:50:44 +02:00
|
|
|
let ResourceCycles = [1,2]; // FIXME: Is this right?
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
}
|
2018-05-07 13:50:44 +02:00
|
|
|
def : SchedAlias<WriteFRsqrtLd, ZnWriteRSQRTSSLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
2018-05-07 13:50:44 +02:00
|
|
|
// RSQRTPS
|
|
|
|
// TODO - convert to ZnWriteResFpuPair
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
// y,y.
|
|
|
|
def ZnWriteRSQRTPSYr : SchedWriteRes<[ZnFPU01]> {
|
|
|
|
let Latency = 5;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
let ResourceCycles = [2];
|
|
|
|
}
|
2018-05-07 13:50:44 +02:00
|
|
|
def : SchedAlias<WriteFRsqrtY, ZnWriteRSQRTPSYr>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// y,m256.
|
|
|
|
def ZnWriteRSQRTPSYLd : SchedWriteRes<[ZnAGU, ZnFPU01]> {
|
|
|
|
let Latency = 12;
|
|
|
|
let NumMicroOps = 2;
|
|
|
|
}
|
2018-05-07 13:50:44 +02:00
|
|
|
def : SchedAlias<WriteFRsqrtYLd, ZnWriteRSQRTPSYLd>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
//-- Other instructions --//
|
|
|
|
|
|
|
|
// VZEROUPPER.
|
2018-04-27 15:32:42 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs VZEROUPPER)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
// VZEROALL.
|
2018-04-27 15:32:42 +02:00
|
|
|
def : InstRW<[WriteMicrocoded], (instrs VZEROALL)>;
|
AMD family 17h (znver1) scheduler model update.
Summary:
This patch enables the following:
1) Regex based Instruction itineraries for integer instructions.
2) The instructions are grouped as per the nature of the instructions
(move, arithmetic, logic, Misc, Control Transfer).
3) FP instructions and their itineraries are added which includes values
for SSE4A, BMI, BMI2 and SHA instructions.
Patch by Ganesh Gopalasubramanian
Reviewers: RKSimon, craig.topper
Subscribers: vprasad, shivaram, ddibyend, andreadb, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D36617
llvm-svn: 312237
2017-08-31 14:38:35 +02:00
|
|
|
|
|
|
|
} // SchedModel
|