xref: /freebsd/contrib/llvm-project/llvm/lib/Target/RISCV/RISCV.td (revision b3edf4467982447620505a28fc82e38a414c07dc)
106c3fb27SDimitry Andric//===-- RISCV.td - Describe the RISC-V Target Machine ------*- tablegen -*-===//
20b57cec5SDimitry Andric//
30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric//
70b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric
90b57cec5SDimitry Andricinclude "llvm/Target/Target.td"
100b57cec5SDimitry Andric
110b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric// RISC-V subtarget features and instruction predicates.
130b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
140b57cec5SDimitry Andric
15bdd1243dSDimitry Andricinclude "RISCVFeatures.td"
1604eeddc0SDimitry Andric
170b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
180b57cec5SDimitry Andric// Named operands for CSR instructions.
190b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
200b57cec5SDimitry Andric
210b57cec5SDimitry Andricinclude "RISCVSystemOperands.td"
220b57cec5SDimitry Andric
230b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
240b57cec5SDimitry Andric// Registers, calling conventions, instruction descriptions.
250b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
260b57cec5SDimitry Andric
2713138422SDimitry Andricinclude "RISCVSchedule.td"
280b57cec5SDimitry Andricinclude "RISCVRegisterInfo.td"
290b57cec5SDimitry Andricinclude "RISCVCallingConv.td"
300b57cec5SDimitry Andricinclude "RISCVInstrInfo.td"
31bdd1243dSDimitry Andricinclude "GISel/RISCVRegisterBanks.td"
32bdd1243dSDimitry Andric
33bdd1243dSDimitry Andric//===----------------------------------------------------------------------===//
34*b3edf446SDimitry Andric// RISC-V macro fusions.
35*b3edf446SDimitry Andric//===----------------------------------------------------------------------===//
36*b3edf446SDimitry Andric
37*b3edf446SDimitry Andricinclude "RISCVMacroFusion.td"
38*b3edf446SDimitry Andric
39*b3edf446SDimitry Andric//===----------------------------------------------------------------------===//
40bdd1243dSDimitry Andric// RISC-V Scheduling Models
41bdd1243dSDimitry Andric//===----------------------------------------------------------------------===//
42bdd1243dSDimitry Andric
43e8d8bef9SDimitry Andricinclude "RISCVSchedRocket.td"
44e8d8bef9SDimitry Andricinclude "RISCVSchedSiFive7.td"
457a6dacacSDimitry Andricinclude "RISCVSchedSiFiveP400.td"
46bdd1243dSDimitry Andricinclude "RISCVSchedSyntacoreSCR1.td"
470b57cec5SDimitry Andric
480b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
490b57cec5SDimitry Andric// RISC-V processors supported.
500b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
510b57cec5SDimitry Andric
52bdd1243dSDimitry Andricinclude "RISCVProcessors.td"
5313138422SDimitry Andric
540b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
550b57cec5SDimitry Andric// Define the RISC-V target.
560b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
570b57cec5SDimitry Andric
580b57cec5SDimitry Andricdef RISCVInstrInfo : InstrInfo {
590b57cec5SDimitry Andric  let guessInstructionProperties = 0;
600b57cec5SDimitry Andric}
610b57cec5SDimitry Andric
620b57cec5SDimitry Andricdef RISCVAsmParser : AsmParser {
630b57cec5SDimitry Andric  let ShouldEmitMatchRegisterAltName = 1;
640b57cec5SDimitry Andric  let AllowDuplicateRegisterNames = 1;
650b57cec5SDimitry Andric}
660b57cec5SDimitry Andric
670b57cec5SDimitry Andricdef RISCVAsmWriter : AsmWriter {
680b57cec5SDimitry Andric  int PassSubtarget = 1;
690b57cec5SDimitry Andric}
700b57cec5SDimitry Andric
710b57cec5SDimitry Andricdef RISCV : Target {
720b57cec5SDimitry Andric  let InstructionSet = RISCVInstrInfo;
730b57cec5SDimitry Andric  let AssemblyParsers = [RISCVAsmParser];
740b57cec5SDimitry Andric  let AssemblyWriters = [RISCVAsmWriter];
750b57cec5SDimitry Andric  let AllowRegisterRenaming = 1;
760b57cec5SDimitry Andric}
77