xref: /freebsd/contrib/llvm-project/llvm/lib/Target/Sparc/LeonFeatures.td (revision eaeb601bd6a77b1f1c0889df45693d8c602e4863)
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