1//===-- LeonFeatures.td - Describe the Leon Features -------*- tablegen -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10//
11//===----------------------------------------------------------------------===//
12
13
14//===----------------------------------------------------------------------===//
15// UMAC and SMAC support for LEON3 and LEON4 processors.
16//===----------------------------------------------------------------------===//
17
18//support to casa instruction; for leon3 subtarget only
19def UMACSMACSupport : SubtargetFeature<
20  "hasumacsmac",
21  "HasUmacSmac",
22  "true",
23  "Enable UMAC and SMAC for LEON3 and LEON4 processors"
24>;
25
26
27//===----------------------------------------------------------------------===//
28// CASA Support differs between LEON3-FT GR712RC and LEON3-FT UT699
29// We need to have the option to switch this on and off.
30//===----------------------------------------------------------------------===//
31
32//support to casa instruction; for leon3 subtarget only
33def LeonCASA : SubtargetFeature<
34  "hasleoncasa",
35  "HasLeonCasa",
36  "true",
37  "Enable CASA instruction for LEON3 and LEON4 processors"
38>;
39
40
41def ReplaceSDIV : SubtargetFeature<
42  "replacesdiv",
43  "PerformSDIVReplace",
44  "true",
45  "AT697E erratum fix: Do not emit SDIV, emit SDIVCC instead"
46>;
47
48def InsertNOPLoad: SubtargetFeature<
49  "insertnopload",
50  "InsertNOPLoad",
51  "true",
52  "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction"
53>;
54
55def FixFSMULD : SubtargetFeature<
56  "fixfsmuld",
57  "FixFSMULD",
58  "true",
59  "LEON erratum fix: Do not use FSMULD"
60>;
61
62def ReplaceFMULS : SubtargetFeature<
63  "replacefmuls",
64  "ReplaceFMULS",
65  "true",
66  "LEON erratum fix: Replace FMULS instruction with FMULD and relevant conversion instructions"
67>;
68
69def DetectRoundChange : SubtargetFeature<
70  "detectroundchange",
71  "DetectRoundChange",
72  "true",
73  "LEON3 erratum detection: Detects any rounding mode change "
74  "request: use only the round-to-nearest rounding mode"
75>;
76
77def FixAllFDIVSQRT : SubtargetFeature<
78  "fixallfdivsqrt",
79  "FixAllFDIVSQRT",
80  "true",
81  "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store"
82>;
83