1//===-- RISCVProcessors.td - RISC-V Processors -------------*- tablegen -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9//===----------------------------------------------------------------------===// 10// RISC-V processors supported. 11//===----------------------------------------------------------------------===// 12 13class RISCVProcessorModel<string n, 14 SchedMachineModel m, 15 list<SubtargetFeature> f, 16 list<SubtargetFeature> tunef = [], 17 string default_march = ""> 18 : ProcessorModel<n, m, f, tunef> { 19 string DefaultMarch = default_march; 20} 21 22class RISCVTuneProcessorModel<string n, 23 SchedMachineModel m, 24 list<SubtargetFeature> tunef = [], 25 list<SubtargetFeature> f = []> 26 : ProcessorModel<n, m, f,tunef>; 27 28def GENERIC_RV32 : RISCVProcessorModel<"generic-rv32", 29 NoSchedModel, 30 [Feature32Bit]>; 31def GENERIC_RV64 : RISCVProcessorModel<"generic-rv64", 32 NoSchedModel, 33 [Feature64Bit]>; 34// Support generic for compatibility with other targets. The triple will be used 35// to change to the appropriate rv32/rv64 version. 36def : ProcessorModel<"generic", NoSchedModel, []>; 37 38def ROCKET_RV32 : RISCVProcessorModel<"rocket-rv32", 39 RocketModel, 40 [Feature32Bit, 41 FeatureStdExtZifencei, 42 FeatureStdExtZicsr]>; 43def ROCKET_RV64 : RISCVProcessorModel<"rocket-rv64", 44 RocketModel, 45 [Feature64Bit, 46 FeatureStdExtZifencei, 47 FeatureStdExtZicsr]>; 48def ROCKET : RISCVTuneProcessorModel<"rocket", 49 RocketModel>; 50 51def SIFIVE_7 : RISCVTuneProcessorModel<"sifive-7-series", 52 SiFive7Model, 53 [TuneSiFive7]>; 54 55def SIFIVE_E20 : RISCVProcessorModel<"sifive-e20", 56 RocketModel, 57 [Feature32Bit, 58 FeatureStdExtZicsr, 59 FeatureStdExtZifencei, 60 FeatureStdExtM, 61 FeatureStdExtC]>; 62 63def SIFIVE_E21 : RISCVProcessorModel<"sifive-e21", 64 RocketModel, 65 [Feature32Bit, 66 FeatureStdExtZicsr, 67 FeatureStdExtZifencei, 68 FeatureStdExtM, 69 FeatureStdExtA, 70 FeatureStdExtC]>; 71 72def SIFIVE_E24 : RISCVProcessorModel<"sifive-e24", 73 RocketModel, 74 [Feature32Bit, 75 FeatureStdExtZifencei, 76 FeatureStdExtM, 77 FeatureStdExtA, 78 FeatureStdExtF, 79 FeatureStdExtC]>; 80 81def SIFIVE_E31 : RISCVProcessorModel<"sifive-e31", 82 RocketModel, 83 [Feature32Bit, 84 FeatureStdExtZifencei, 85 FeatureStdExtZicsr, 86 FeatureStdExtM, 87 FeatureStdExtA, 88 FeatureStdExtC]>; 89 90def SIFIVE_E34 : RISCVProcessorModel<"sifive-e34", 91 RocketModel, 92 [Feature32Bit, 93 FeatureStdExtZifencei, 94 FeatureStdExtM, 95 FeatureStdExtA, 96 FeatureStdExtF, 97 FeatureStdExtC]>; 98 99def SIFIVE_E76 : RISCVProcessorModel<"sifive-e76", 100 SiFive7Model, 101 [Feature32Bit, 102 FeatureStdExtZifencei, 103 FeatureStdExtM, 104 FeatureStdExtA, 105 FeatureStdExtF, 106 FeatureStdExtC], 107 [TuneSiFive7]>; 108 109def SIFIVE_S21 : RISCVProcessorModel<"sifive-s21", 110 RocketModel, 111 [Feature64Bit, 112 FeatureStdExtZicsr, 113 FeatureStdExtZifencei, 114 FeatureStdExtM, 115 FeatureStdExtA, 116 FeatureStdExtC]>; 117 118def SIFIVE_S51 : RISCVProcessorModel<"sifive-s51", 119 RocketModel, 120 [Feature64Bit, 121 FeatureStdExtZicsr, 122 FeatureStdExtZifencei, 123 FeatureStdExtM, 124 FeatureStdExtA, 125 FeatureStdExtC]>; 126 127def SIFIVE_S54 : RISCVProcessorModel<"sifive-s54", 128 RocketModel, 129 [Feature64Bit, 130 FeatureStdExtZifencei, 131 FeatureStdExtM, 132 FeatureStdExtA, 133 FeatureStdExtF, 134 FeatureStdExtD, 135 FeatureStdExtC]>; 136 137def SIFIVE_S76 : RISCVProcessorModel<"sifive-s76", 138 SiFive7Model, 139 [Feature64Bit, 140 FeatureStdExtZifencei, 141 FeatureStdExtM, 142 FeatureStdExtA, 143 FeatureStdExtF, 144 FeatureStdExtD, 145 FeatureStdExtC, 146 FeatureStdExtZihintpause, 147 FeatureVendorXSfcie], 148 [TuneSiFive7]>; 149 150def SIFIVE_U54 : RISCVProcessorModel<"sifive-u54", 151 RocketModel, 152 [Feature64Bit, 153 FeatureStdExtZifencei, 154 FeatureStdExtM, 155 FeatureStdExtA, 156 FeatureStdExtF, 157 FeatureStdExtD, 158 FeatureStdExtC]>; 159 160def SIFIVE_U74 : RISCVProcessorModel<"sifive-u74", 161 SiFive7Model, 162 [Feature64Bit, 163 FeatureStdExtZifencei, 164 FeatureStdExtM, 165 FeatureStdExtA, 166 FeatureStdExtF, 167 FeatureStdExtD, 168 FeatureStdExtC], 169 [TuneSiFive7]>; 170 171def SIFIVE_X280 : RISCVProcessorModel<"sifive-x280", SiFive7Model, 172 [Feature64Bit, 173 FeatureStdExtZifencei, 174 FeatureStdExtM, 175 FeatureStdExtA, 176 FeatureStdExtF, 177 FeatureStdExtD, 178 FeatureStdExtC, 179 FeatureStdExtV, 180 FeatureStdExtZvl512b, 181 FeatureStdExtZfh, 182 FeatureStdExtZvfh, 183 FeatureStdExtZba, 184 FeatureStdExtZbb], 185 [TuneSiFive7, 186 TuneDLenFactor2]>; 187 188def SYNTACORE_SCR1_BASE : RISCVProcessorModel<"syntacore-scr1-base", 189 SyntacoreSCR1Model, 190 [Feature32Bit, 191 FeatureStdExtZicsr, 192 FeatureStdExtZifencei, 193 FeatureStdExtC], 194 [TuneNoDefaultUnroll]>; 195 196def SYNTACORE_SCR1_MAX : RISCVProcessorModel<"syntacore-scr1-max", 197 SyntacoreSCR1Model, 198 [Feature32Bit, 199 FeatureStdExtZicsr, 200 FeatureStdExtZifencei, 201 FeatureStdExtM, 202 FeatureStdExtC], 203 [TuneNoDefaultUnroll]>; 204