[ARM] MVE integer min and max
[llvm-complete.git] / lib / Target / SystemZ / SystemZSchedule.td
blob98eca28022423bc72f6949f47c3f24eaef9b2205
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 //===----------------------------------------------------------------------===//
9 // Scheduler resources
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.
14 def NormalGr    : SchedWrite;
15 def Cracked     : SchedWrite;
16 def GroupAlone  : SchedWrite;
17 def GroupAlone2 : SchedWrite;
18 def GroupAlone3 : SchedWrite;
19 def BeginGroup  : SchedWrite;
20 def EndGroup    : SchedWrite;
22 // A SchedWrite added to other SchedWrites to make LSU latency parameterizable.
23 def LSULatency : SchedWrite;
25 // Operand WriteLatencies.
26 foreach L = 1 - 30 in def "WLat"#L : SchedWrite;
28 foreach L = 1 - 16 in
29   def "WLat"#L#"LSU" : WriteSequence<[!cast<SchedWrite>("WLat"#L),
30                                       LSULatency]>;
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.
35 def RegReadAdv : SchedRead;
37 foreach 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;
56 def VecFPd : SchedWrite; // Blocking BFP div/sqrt unit.
58 def VBU : SchedWrite; // Virtual branching unit
60 def MCD : SchedWrite; // Millicode
62 include "SystemZScheduleArch13.td"
63 include "SystemZScheduleZ14.td"
64 include "SystemZScheduleZ13.td"
65 include "SystemZScheduleZEC12.td"
66 include "SystemZScheduleZ196.td"