mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-03 02:30:00 +00:00
for the Cortex-A53 subtarget in the AArch64 backend. This patch lays the ground work to annotate each AArch64 instruction (no NEON yet) with a list of SchedReadWrite types. The patch also provides the Cortex-A53 processor resources, maps those the the default SchedReadWrites, and provides basic latency. NEON support will be added in a subsequent patch with proper forwarding logic. Verification was done by setting the pre-RA scheduler to linearize to better gauge the effect of the MIScheduler. Even without modeling the forward logic, the results show a modest improvement for Cortex-A53. Reviewers: apazos, mcrosier, atrick Patch by Dave Estes <cestes@codeaurora.org>! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203125 91177308-0d34-0410-b5e6-96231b3b80d8
73 lines
2.1 KiB
TableGen
73 lines
2.1 KiB
TableGen
//===- 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 ReadLd : SchedRead;
|
|
def ReadPreLd : 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 seperated 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"
|