blob: 6ec47dbaa5899ae43eef1054283513eff557f9cd [file] [log] [blame]
//===- AArch64Schedule.td - AArch64 Scheduling Definitions -*- tablegen -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
// Generic processor itineraries for legacy compatibility.
def GenericItineraries : ProcessorItineraries<[], [], []>;
//===----------------------------------------------------------------------===//
// Base SchedReadWrite types
// Basic ALU
def WriteALU : SchedWrite; // Generic: may contain shift and/or ALU operation
def WriteALUs : SchedWrite; // Shift only with no ALU operation
def ReadALU : SchedRead; // Operand not needed for shifting
def ReadALUs : SchedRead; // Operand needed for shifting
// Multiply with optional accumulate
def WriteMAC : SchedWrite;
def ReadMAC : SchedRead;
// Compares
def WriteCMP : SchedWrite;
def ReadCMP : SchedRead;
// Division
def WriteDiv : SchedWrite;
def ReadDiv : SchedRead;
// Loads
def WriteLd : SchedWrite;
def WritePreLd : SchedWrite;
def WriteVecLd : SchedWrite;
def ReadLd : SchedRead;
def ReadPreLd : SchedRead;
def ReadVecLd : SchedRead;
// Stores
def WriteSt : SchedWrite;
def WriteVecSt : SchedWrite;
def ReadSt : SchedRead;
def ReadVecSt : SchedRead;
// Branches
def WriteBr : SchedWrite;
def WriteBrL : SchedWrite;
def ReadBr : SchedRead;
// Floating Point ALU
def WriteFPALU : SchedWrite;
def ReadFPALU : SchedRead;
// Floating Point MAC, Mul, Div, Sqrt
// Most processors will simply send all of these down a dedicated pipe, but
// they're explicitly separated here for flexibility of modeling later. May
// consider consolidating them into a single WriteFPXXXX type in the future.
def WriteFPMAC : SchedWrite;
def WriteFPMul : SchedWrite;
def WriteFPDiv : SchedWrite;
def WriteFPSqrt : SchedWrite;
def ReadFPMAC : SchedRead;
def ReadFPMul : SchedRead;
def ReadFPDiv : SchedRead;
def ReadFPSqrt : SchedRead;
// Noop
def WriteNoop : SchedWrite;
//===----------------------------------------------------------------------===//
// Subtarget specific Machine Models.
include "AArch64ScheduleA53.td"