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