File: SystemZSchedule.td

package info (click to toggle)
llvm-toolchain-14 1%3A14.0.6-12
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,496,180 kB
  • sloc: cpp: 5,593,972; ansic: 986,872; asm: 585,869; python: 184,223; objc: 72,530; lisp: 31,119; f90: 27,793; javascript: 9,780; pascal: 9,762; sh: 9,482; perl: 7,468; ml: 5,432; awk: 3,523; makefile: 2,538; xml: 953; cs: 573; fortran: 567
file content (66 lines) | stat: -rw-r--r-- 2,149 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//==-- SystemZSchedule.td - SystemZ Scheduling Definitions ----*- tblgen -*-==//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// Scheduler resources

// These resources are used to express decoder grouping rules.  The number of
// decoder slots needed by an instructions is normally one, but there are
// exceptions.
def NormalGr    : SchedWrite;
def Cracked     : SchedWrite;
def GroupAlone  : SchedWrite;
def GroupAlone2 : SchedWrite;
def GroupAlone3 : SchedWrite;
def BeginGroup  : SchedWrite;
def EndGroup    : SchedWrite;

// A SchedWrite added to other SchedWrites to make LSU latency parameterizable.
def LSULatency : SchedWrite;

// Operand WriteLatencies.
foreach L = 1 - 30 in def "WLat"#L : SchedWrite;

foreach L = 1 - 16 in
  def "WLat"#L#"LSU" : WriteSequence<[!cast<SchedWrite>("WLat"#L),
                                      LSULatency]>;

// ReadAdvances, used for the register operand next to a memory operand,
// modelling that the register operand is needed later than the address
// operands.
def RegReadAdv : SchedRead;

foreach Num = ["", "2", "3", "4", "5", "6"] in {
  // Fixed-point units
  def "FXa"#Num : SchedWrite;
  def "FXb"#Num : SchedWrite;
  def "FXU"#Num : SchedWrite;
  // Load/store unit
  def "LSU"#Num : SchedWrite;
  // Vector sub units (z13 and later)
  def "VecBF"#Num : SchedWrite;
  def "VecDF"#Num : SchedWrite;
  def "VecDFX"#Num : SchedWrite;
  def "VecMul"#Num : SchedWrite;
  def "VecStr"#Num : SchedWrite;
  def "VecXsPm"#Num : SchedWrite;
  // Floating point unit (zEC12 and earlier)
  def "FPU"#Num : SchedWrite;
  def "DFU"#Num : SchedWrite;
}

def VecFPd : SchedWrite; // Blocking BFP div/sqrt unit.

def VBU : SchedWrite; // Virtual branching unit

def MCD : SchedWrite; // Millicode

include "SystemZScheduleZ15.td"
include "SystemZScheduleZ14.td"
include "SystemZScheduleZ13.td"
include "SystemZScheduleZEC12.td"
include "SystemZScheduleZ196.td"