forked from OSchip/llvm-project
83 lines
2.5 KiB
TableGen
83 lines
2.5 KiB
TableGen
//==-- SystemZSchedule.td - SystemZ Scheduling Definitions ----*- tblgen -*-==//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Scheduler resources
|
|
// Resources ending with a '2' use that resource for 2 cycles. An instruction
|
|
// using two such resources use the mapped unit for 4 cycles, and 2 is added
|
|
// to the total number of uops of the sched class.
|
|
|
|
// These three resources are used to express decoder grouping rules.
|
|
// The number of decoder slots needed by an instructions is normally
|
|
// one. For a cracked instruction (BeginGroup && !EndGroup) it is
|
|
// two. Expanded instructions (BeginGroup && EndGroup) group alone.
|
|
def GroupAlone : SchedWrite;
|
|
def BeginGroup : SchedWrite;
|
|
def EndGroup : SchedWrite;
|
|
|
|
// Latencies, to make code a bit neater. If more than one resource is
|
|
// used for an instruction, the greatest latency (not the sum) will be
|
|
// output by Tablegen. Therefore, in such cases one of these resources
|
|
// is needed.
|
|
def Lat2 : SchedWrite;
|
|
def Lat3 : SchedWrite;
|
|
def Lat4 : SchedWrite;
|
|
def Lat5 : SchedWrite;
|
|
def Lat6 : SchedWrite;
|
|
def Lat7 : SchedWrite;
|
|
def Lat8 : SchedWrite;
|
|
def Lat9 : SchedWrite;
|
|
def Lat10 : SchedWrite;
|
|
def Lat11 : SchedWrite;
|
|
def Lat12 : SchedWrite;
|
|
def Lat15 : SchedWrite;
|
|
def Lat20 : SchedWrite;
|
|
def Lat30 : SchedWrite;
|
|
|
|
// Fixed-point
|
|
def FXa : SchedWrite;
|
|
def FXa2 : SchedWrite;
|
|
def FXb : SchedWrite;
|
|
def FXU : SchedWrite;
|
|
|
|
// Load/store unit
|
|
def LSU : SchedWrite;
|
|
|
|
// Model a return without latency, otherwise if-converter will model
|
|
// extra cost and abort (currently there is an assert that checks that
|
|
// all instructions have at least one uop).
|
|
def LSU_lat1 : SchedWrite;
|
|
|
|
// Floating point unit (zEC12 and earlier)
|
|
def FPU : SchedWrite;
|
|
def FPU2 : SchedWrite;
|
|
def DFU : SchedWrite;
|
|
def DFU2 : SchedWrite;
|
|
|
|
// Vector sub units (z13 and later)
|
|
def VecBF : SchedWrite;
|
|
def VecBF2 : SchedWrite;
|
|
def VecDF : SchedWrite;
|
|
def VecDF2 : SchedWrite;
|
|
def VecDFX : SchedWrite;
|
|
def VecDFX2 : SchedWrite;
|
|
def VecFPd : SchedWrite; // Blocking BFP div/sqrt unit.
|
|
def VecMul : SchedWrite;
|
|
def VecStr : SchedWrite;
|
|
def VecXsPm : SchedWrite;
|
|
|
|
// Virtual branching unit
|
|
def VBU : SchedWrite;
|
|
|
|
|
|
include "SystemZScheduleZ14.td"
|
|
include "SystemZScheduleZ13.td"
|
|
include "SystemZScheduleZEC12.td"
|
|
include "SystemZScheduleZ196.td"
|
|
|