blob: d06e734b5a7b160d4601e30824c23a612573059d [file] [log] [blame]
Chris Dewhurste3b86452016-05-09 11:55:15 +00001//===-- 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
Chris Dewhurst4f7cac32016-05-23 10:56:36 +000013
Chris Dewhurst3202f062016-07-08 15:33:56 +000014//===----------------------------------------------------------------------===//
15// UMAC and SMAC support for LEON3 and LEON4 processors.
16//===----------------------------------------------------------------------===//
Chris Dewhurst0c1e0022016-06-19 11:03:28 +000017
James Y Knight2cc9da92016-08-12 14:48:09 +000018//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
Chris Dewhurst0c1e0022016-06-19 11:03:28 +000026
Chris Dewhurst3202f062016-07-08 15:33:56 +000027//===----------------------------------------------------------------------===//
James Y Knight2cc9da92016-08-12 14:48:09 +000028// CASA Support differs between LEON3-FT GR712RC and LEON3-FT UT699
29// We need to have the option to switch this on and off.
Chris Dewhurst3202f062016-07-08 15:33:56 +000030//===----------------------------------------------------------------------===//
Chris Dewhurst0c1e0022016-06-19 11:03:28 +000031
James Y Knight2cc9da92016-08-12 14:48:09 +000032//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>;
Chris Dewhurst3202f062016-07-08 15:33:56 +000039
Chris Dewhurst85013122016-10-10 08:53:06 +000040
41def ReplaceSDIV : SubtargetFeature<
42 "replacesdiv",
43 "PerformSDIVReplace",
44 "true",
45 "AT697E erratum fix: Do not emit SDIV, emit SDIVCC instead"
46>;
47
James Y Knight2cc9da92016-08-12 14:48:09 +000048def 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>;
Chris Dewhurst3202f062016-07-08 15:33:56 +000054
James Y Knight2cc9da92016-08-12 14:48:09 +000055def FixFSMULD : SubtargetFeature<
56 "fixfsmuld",
57 "FixFSMULD",
58 "true",
59 "LEON erratum fix: Do not use FSMULD"
60>;
Chris Dewhurst3202f062016-07-08 15:33:56 +000061
James Y Knight2cc9da92016-08-12 14:48:09 +000062def ReplaceFMULS : SubtargetFeature<
63 "replacefmuls",
64 "ReplaceFMULS",
65 "true",
66 "LEON erratum fix: Replace FMULS instruction with FMULD and relevant conversion instructions"
67>;
Chris Dewhurst3202f062016-07-08 15:33:56 +000068
Chris Dewhurst2c3cdd62016-10-19 14:01:06 +000069def 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
James Y Knight2cc9da92016-08-12 14:48:09 +000077def 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>;