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