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