1*09467b48Spatrick//===-- LeonFeatures.td - Describe the Leon Features -------*- tablegen -*-===// 2*09467b48Spatrick// 3*09467b48Spatrick// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*09467b48Spatrick// See https://llvm.org/LICENSE.txt for license information. 5*09467b48Spatrick// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*09467b48Spatrick// 7*09467b48Spatrick//===----------------------------------------------------------------------===// 8*09467b48Spatrick// 9*09467b48Spatrick// 10*09467b48Spatrick//===----------------------------------------------------------------------===// 11*09467b48Spatrick 12*09467b48Spatrick 13*09467b48Spatrick//===----------------------------------------------------------------------===// 14*09467b48Spatrick// UMAC and SMAC support for LEON3 and LEON4 processors. 15*09467b48Spatrick//===----------------------------------------------------------------------===// 16*09467b48Spatrick 17*09467b48Spatrick//support to casa instruction; for leon3 subtarget only 18*09467b48Spatrickdef UMACSMACSupport : SubtargetFeature< 19*09467b48Spatrick "hasumacsmac", 20*09467b48Spatrick "HasUmacSmac", 21*09467b48Spatrick "true", 22*09467b48Spatrick "Enable UMAC and SMAC for LEON3 and LEON4 processors" 23*09467b48Spatrick>; 24*09467b48Spatrick 25*09467b48Spatrick 26*09467b48Spatrick//===----------------------------------------------------------------------===// 27*09467b48Spatrick// CASA Support differs between LEON3-FT GR712RC and LEON3-FT UT699 28*09467b48Spatrick// We need to have the option to switch this on and off. 29*09467b48Spatrick//===----------------------------------------------------------------------===// 30*09467b48Spatrick 31*09467b48Spatrick//support to casa instruction; for leon3 subtarget only 32*09467b48Spatrickdef LeonCASA : SubtargetFeature< 33*09467b48Spatrick "hasleoncasa", 34*09467b48Spatrick "HasLeonCasa", 35*09467b48Spatrick "true", 36*09467b48Spatrick "Enable CASA instruction for LEON3 and LEON4 processors" 37*09467b48Spatrick>; 38*09467b48Spatrick 39*09467b48Spatrickdef InsertNOPLoad: SubtargetFeature< 40*09467b48Spatrick "insertnopload", 41*09467b48Spatrick "InsertNOPLoad", 42*09467b48Spatrick "true", 43*09467b48Spatrick "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction" 44*09467b48Spatrick>; 45*09467b48Spatrick 46*09467b48Spatrickdef DetectRoundChange : SubtargetFeature< 47*09467b48Spatrick "detectroundchange", 48*09467b48Spatrick "DetectRoundChange", 49*09467b48Spatrick "true", 50*09467b48Spatrick "LEON3 erratum detection: Detects any rounding mode change " 51*09467b48Spatrick "request: use only the round-to-nearest rounding mode" 52*09467b48Spatrick>; 53*09467b48Spatrick 54*09467b48Spatrickdef FixAllFDIVSQRT : SubtargetFeature< 55*09467b48Spatrick "fixallfdivsqrt", 56*09467b48Spatrick "FixAllFDIVSQRT", 57*09467b48Spatrick "true", 58*09467b48Spatrick "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store" 59*09467b48Spatrick>; 60*09467b48Spatrick 61*09467b48Spatrickdef LeonCycleCounter 62*09467b48Spatrick : SubtargetFeature<"leoncyclecounter", "HasLeonCycleCounter", "true", 63*09467b48Spatrick "Use the Leon cycle counter register">; 64