Files
clang-p2996/llvm/lib/Target/SystemZ/SystemZSchedule.td
Ulrich Weigand 0f0a8b7784 [SystemZ] Add support for new cpu architecture - arch13
This patch series adds support for the next-generation arch13
CPU architecture to the SystemZ backend.

This includes:
- Basic support for the new processor and its features.
- Assembler/disassembler support for new instructions.
- CodeGen for new instructions, including new LLVM intrinsics.
- Scheduler description for the new processor.
- Detection of arch13 as host processor.

Note: No currently available Z system supports the arch13
architecture.  Once new systems become available, the
official system name will be added as supported -march name.

llvm-svn: 365932
2019-07-12 18:13:16 +00:00

67 lines
2.1 KiB
TableGen

//==-- 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 "SystemZScheduleArch13.td"
include "SystemZScheduleZ14.td"
include "SystemZScheduleZ13.td"
include "SystemZScheduleZEC12.td"
include "SystemZScheduleZ196.td"