mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-21 12:35:47 -04:00

Summary: The GR740 provides an up cycle counter in the registers ASR22 and ASR23. As these registers can not be read together atomically we only use the value of ASR23 for llvm.readcyclecounter(). The ASR23 register holds the 32 LSBs of the up-counter. Reviewers: jyknight, venkatra Reviewed By: jyknight Subscribers: jfb, fedor.sergeev, jrtc27, llvm-commits Differential Revision: https://reviews.llvm.org/D48638 llvm-svn: 340733
65 lines
2.1 KiB
TableGen
65 lines
2.1 KiB
TableGen
//===-- LeonFeatures.td - Describe the Leon Features -------*- tablegen -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// UMAC and SMAC support for LEON3 and LEON4 processors.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//support to casa instruction; for leon3 subtarget only
|
|
def UMACSMACSupport : SubtargetFeature<
|
|
"hasumacsmac",
|
|
"HasUmacSmac",
|
|
"true",
|
|
"Enable UMAC and SMAC for LEON3 and LEON4 processors"
|
|
>;
|
|
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// CASA Support differs between LEON3-FT GR712RC and LEON3-FT UT699
|
|
// We need to have the option to switch this on and off.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//support to casa instruction; for leon3 subtarget only
|
|
def LeonCASA : SubtargetFeature<
|
|
"hasleoncasa",
|
|
"HasLeonCasa",
|
|
"true",
|
|
"Enable CASA instruction for LEON3 and LEON4 processors"
|
|
>;
|
|
|
|
def InsertNOPLoad: SubtargetFeature<
|
|
"insertnopload",
|
|
"InsertNOPLoad",
|
|
"true",
|
|
"LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction"
|
|
>;
|
|
|
|
def DetectRoundChange : SubtargetFeature<
|
|
"detectroundchange",
|
|
"DetectRoundChange",
|
|
"true",
|
|
"LEON3 erratum detection: Detects any rounding mode change "
|
|
"request: use only the round-to-nearest rounding mode"
|
|
>;
|
|
|
|
def FixAllFDIVSQRT : SubtargetFeature<
|
|
"fixallfdivsqrt",
|
|
"FixAllFDIVSQRT",
|
|
"true",
|
|
"LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store"
|
|
>;
|
|
|
|
def LeonCycleCounter
|
|
: SubtargetFeature<"leoncyclecounter", "HasLeonCycleCounter", "true",
|
|
"Use the Leon cycle counter register">;
|