1//==-- SystemZSchedule.td - SystemZ Scheduling Definitions ----*- tblgen -*-==// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// Scheduler resources 11 12// These resources are used to express decoder grouping rules. The number of 13// decoder slots needed by an instructions is normally one, but there are 14// exceptions. 15def NormalGr : SchedWrite; 16def Cracked : SchedWrite; 17def GroupAlone : SchedWrite; 18def GroupAlone2 : SchedWrite; 19def GroupAlone3 : SchedWrite; 20def BeginGroup : SchedWrite; 21def EndGroup : SchedWrite; 22 23// A SchedWrite added to other SchedWrites to make LSU latency parameterizable. 24def LSULatency : SchedWrite; 25 26// Operand WriteLatencies. 27foreach L = 1 - 30 in def "WLat"#L : SchedWrite; 28 29foreach L = 1 - 16 in 30 def "WLat"#L#"LSU" : WriteSequence<[!cast<SchedWrite>("WLat"#L), 31 LSULatency]>; 32 33// ReadAdvances, used for the register operand next to a memory operand, 34// modelling that the register operand is needed later than the address 35// operands. 36def RegReadAdv : SchedRead; 37 38foreach Num = ["", "2", "3", "4", "5", "6"] in { 39 // Fixed-point units 40 def "FXa"#Num : SchedWrite; 41 def "FXb"#Num : SchedWrite; 42 def "FXU"#Num : SchedWrite; 43 // Load/store unit 44 def "LSU"#Num : SchedWrite; 45 // Vector sub units (z13 and later) 46 def "VecBF"#Num : SchedWrite; 47 def "VecDF"#Num : SchedWrite; 48 def "VecDFX"#Num : SchedWrite; 49 def "VecMul"#Num : SchedWrite; 50 def "VecStr"#Num : SchedWrite; 51 def "VecXsPm"#Num : SchedWrite; 52 // Floating point unit (zEC12 and earlier) 53 def "FPU"#Num : SchedWrite; 54 def "DFU"#Num : SchedWrite; 55} 56 57def VecFPd : SchedWrite; // Blocking BFP div/sqrt unit. 58 59def VBU : SchedWrite; // Virtual branching unit 60 61def MCD : SchedWrite; // Millicode 62 63include "SystemZScheduleZ14.td" 64include "SystemZScheduleZ13.td" 65include "SystemZScheduleZEC12.td" 66include "SystemZScheduleZ196.td" 67