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. 15 def NormalGr : SchedWrite; 16 def Cracked : SchedWrite; 17 def GroupAlone : SchedWrite; 18 def BeginGroup : SchedWrite; 19 def EndGroup : SchedWrite; 20 21 // A SchedWrite added to other SchedWrites to make LSU latency parameterizable. 22 def LSULatency : SchedWrite; 23 24 // Operand WriteLatencies. 25 foreach L = 1 - 30 in def "WLat"#L : SchedWrite; 26 27 foreach L = 1 - 16 in 28 def "WLat"#L#"LSU" : WriteSequence<[!cast<SchedWrite>("WLat"#L), 29 LSULatency]>; 30 31 // ReadAdvances, used for the register operand next to a memory operand, 32 // modelling that the register operand is needed later than the address 33 // operands. 34 def RegReadAdv : SchedRead; 35 36 foreach Num = ["", "2", "3", "4", "5", "6"] in { 37 // Fixed-point units 38 def "FXa"#Num : SchedWrite; 39 def "FXb"#Num : SchedWrite; 40 def "FXU"#Num : SchedWrite; 41 // Load/store unit 42 def "LSU"#Num : SchedWrite; 43 // Vector sub units (z13 and later) 44 def "VecBF"#Num : SchedWrite; 45 def "VecDF"#Num : SchedWrite; 46 def "VecDFX"#Num : SchedWrite; 47 def "VecMul"#Num : SchedWrite; 48 def "VecStr"#Num : SchedWrite; 49 def "VecXsPm"#Num : SchedWrite; 50 // Floating point unit (zEC12 and earlier) 51 def "FPU"#Num : SchedWrite; 52 def "DFU"#Num : SchedWrite; 53 } 54 55 def VecFPd : SchedWrite; // Blocking BFP div/sqrt unit. 56 57 def VBU : SchedWrite; // Virtual branching unit 58 59 def MCD : SchedWrite; // Millicode 60 61 include "SystemZScheduleZ14.td" 62 include "SystemZScheduleZ13.td" 63 include "SystemZScheduleZEC12.td" 64 include "SystemZScheduleZ196.td" 65