From 4f7b41c3c711d6c6fa4e422f3eec8961c91eea7a Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Sun, 16 Aug 2026 15:39:45 +0800 Subject: tablegen: Generate GlobalISel match tables --- backend/lib/Target/RISCV/CMakeLists.txt | 34 +- .../RISCV/GISel/RISCVInstructionSelector.cpp | 69 +- backend/lib/Target/RISCV/RISCV.rccdesc | 4029 -------------------- backend/lib/Target/RISCV/RISCVCallingConv.rccdesc | 33 + backend/lib/Target/RISCV/RISCVGISel.rccdesc | 157 + backend/lib/Target/RISCV/RISCVInstrInfoA.rccdesc | 329 ++ .../lib/Target/RISCV/RISCVInstrInfoBase.rccdesc | 100 + backend/lib/Target/RISCV/RISCVInstrInfoC.rccdesc | 515 +++ backend/lib/Target/RISCV/RISCVInstrInfoD.rccdesc | 509 +++ backend/lib/Target/RISCV/RISCVInstrInfoF.rccdesc | 477 +++ backend/lib/Target/RISCV/RISCVInstrInfoI.rccdesc | 875 +++++ backend/lib/Target/RISCV/RISCVInstrInfoM.rccdesc | 196 + .../lib/Target/RISCV/RISCVInstrInfoPseudo.rccdesc | 380 ++ backend/lib/Target/RISCV/RISCVInstrInfoZb.rccdesc | 237 ++ backend/lib/Target/RISCV/RISCVRegisterInfo.rccdesc | 383 ++ 15 files changed, 4244 insertions(+), 4079 deletions(-) create mode 100644 backend/lib/Target/RISCV/RISCVCallingConv.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVGISel.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoA.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoBase.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoC.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoD.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoF.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoI.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoM.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoPseudo.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVInstrInfoZb.rccdesc create mode 100644 backend/lib/Target/RISCV/RISCVRegisterInfo.rccdesc (limited to 'backend/lib/Target/RISCV') diff --git a/backend/lib/Target/RISCV/CMakeLists.txt b/backend/lib/Target/RISCV/CMakeLists.txt index c4dbdf7..bd6bf3d 100644 --- a/backend/lib/Target/RISCV/CMakeLists.txt +++ b/backend/lib/Target/RISCV/CMakeLists.txt @@ -1,6 +1,25 @@ # SPDX-License-Identifier: GPL-3.0-or-later -set(RCCBackendRISCVDescription "${CMAKE_CURRENT_SOURCE_DIR}/RISCV.rccdesc") +set( + RCCBackendRISCVDescriptionSources + "${CMAKE_CURRENT_SOURCE_DIR}/RISCV.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVRegisterInfo.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVCallingConv.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoBase.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoI.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoM.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoA.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoF.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoD.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoC.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoZb.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoPseudo.rccdesc" + "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISel.rccdesc" +) +set(RCCBackendRISCVTableGenArguments) +foreach(RCCBackendRISCVDescriptionSource IN LISTS RCCBackendRISCVDescriptionSources) + list(APPEND RCCBackendRISCVTableGenArguments --input "${RCCBackendRISCVDescriptionSource}") +endforeach() set( RCCBackendRISCVGeneratedRegisterHeader "${RCC_BACKEND_BINARY_DIR}/generated/include/rcc/Target/RISCV/RISCVRegisters.h" @@ -13,19 +32,25 @@ set( RCCBackendRISCVGeneratedTables "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenTargetDescription.inc" ) +set( + RCCBackendRISCVGeneratedGlobalISel + "${RCC_BACKEND_BINARY_DIR}/generated/lib/Target/RISCV/RISCVGenGlobalISel.inc" +) add_custom_command( OUTPUT "${RCCBackendRISCVGeneratedRegisterHeader}" "${RCCBackendRISCVGeneratedInstructionHeader}" "${RCCBackendRISCVGeneratedTables}" + "${RCCBackendRISCVGeneratedGlobalISel}" COMMAND "$" - --input "${RCCBackendRISCVDescription}" + ${RCCBackendRISCVTableGenArguments} --register-header "${RCCBackendRISCVGeneratedRegisterHeader}" --instruction-header "${RCCBackendRISCVGeneratedInstructionHeader}" --tables "${RCCBackendRISCVGeneratedTables}" - DEPENDS RCCBackendTableGenTool "${RCCBackendRISCVDescription}" + --global-isel "${RCCBackendRISCVGeneratedGlobalISel}" + DEPENDS RCCBackendTableGenTool ${RCCBackendRISCVDescriptionSources} COMMENT "Generating RCC RV64GC target tables" VERBATIM ) @@ -36,12 +61,14 @@ add_custom_target( "${RCCBackendRISCVGeneratedRegisterHeader}" "${RCCBackendRISCVGeneratedInstructionHeader}" "${RCCBackendRISCVGeneratedTables}" + "${RCCBackendRISCVGeneratedGlobalISel}" ) set_source_files_properties( "${RCCBackendRISCVGeneratedRegisterHeader}" "${RCCBackendRISCVGeneratedInstructionHeader}" "${RCCBackendRISCVGeneratedTables}" + "${RCCBackendRISCVGeneratedGlobalISel}" PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE ) @@ -74,6 +101,7 @@ add_library( "${RCCBackendRISCVGeneratedRegisterHeader}" "${RCCBackendRISCVGeneratedInstructionHeader}" "${RCCBackendRISCVGeneratedTables}" + "${RCCBackendRISCVGeneratedGlobalISel}" ) add_library(RCCBackend::RISCV ALIAS RCCBackendRISCV) add_dependencies(RCCBackendRISCV RCCBackendRISCVGeneratedTablesTarget) diff --git a/backend/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp b/backend/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp index 62c10af..68574a3 100644 --- a/backend/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp +++ b/backend/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp @@ -5,7 +5,6 @@ #include "RISCVRegisterBankInfo.h" #include "rcc/CodeGen/GenericOpcodes.h" #include "rcc/CodeGen/GlobalISel/InstructionSelector.h" -#include "rcc/CodeGen/GlobalISel/LegalizerInfo.h" #include "rcc/CodeGen/LowLevelType.h" #include "rcc/CodeGen/MachineBasicBlock.h" #include "rcc/CodeGen/MachineFunction.h" @@ -33,6 +32,10 @@ namespace rcc::riscv { namespace { +#define GET_GLOBALISEL_MATCH_TABLE +#include "RISCVGenGlobalISel.inc" +#undef GET_GLOBALISEL_MATCH_TABLE + [[nodiscard]] std::optional registerType(const MachineFunction &Function, const MachineOperand &Operand) { const Register *Reg = Operand.getIf(); @@ -72,12 +75,6 @@ operandType(const MachineFunction &Function, const MachineInstr &Instruction, st Type.scalarBitWidth() <= 64; } -[[nodiscard]] bool isScalarGPRType(LowLevelType Type) noexcept { - return (Type.isCategoryNeutralScalar() && Type.scalarBitWidth() != 0 && - Type.scalarBitWidth() <= 64) || - (Type.isPointer() && Type.scalarBitWidth() == 64); -} - [[nodiscard]] constexpr RegisterBankID fprBank() noexcept { return RegisterBankID::fromValue(static_cast(RegisterBank::FPR)); } @@ -183,39 +180,23 @@ public: [[nodiscard]] Expected canSelect(const MachineInstr &Instruction, const MachineFunction &Function, const TargetDescription &Target) const override { - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_SLLW) || - Instruction.opcode() == instructionOpcode(InstructionOpcode::G_SRAW) || - Instruction.opcode() == instructionOpcode(InstructionOpcode::G_SRLW) || - Instruction.opcode() == instructionOpcode(InstructionOpcode::G_DIVW) || - Instruction.opcode() == instructionOpcode(InstructionOpcode::G_DIVUW) || - Instruction.opcode() == instructionOpcode(InstructionOpcode::G_REMUW)) { - const std::optional Type = resultType(Function, Instruction); - const std::optional Left = operandType(Function, Instruction, 1); - const std::optional Right = operandType(Function, Instruction, 2); - return Type && Left && Right && isScalarGPRType(*Type) && Type->scalarBitWidth() == 64 && - *Left == *Type && *Right == *Type - ? Expected{} - : makeUnexpected(ErrorCode::Unsupported, - "RISC-V word shift pseudo requires three 64-bit GPR operands"); - } - if (!isGenericOpcode(Instruction.opcode())) + auto Generated = + GIMatchTableExecutor::match(generatedGlobalISelMatchTable(), Instruction, Function, Target); + if (!Generated) + return std::unexpected(Generated.error()); + if (*Generated) return {}; + if (!isGenericOpcode(Instruction.opcode())) { + const InstructionDescriptor *Descriptor = Target.instructionDescriptor(Instruction.opcode()); + if (Descriptor != nullptr && !Descriptor->Flags.has(InstructionFlag::Generic)) + return {}; + return makeUnexpected(ErrorCode::Unsupported, + "RISC-V instruction selector has no generated rule for target pseudo"); + } const GenericOpcode Generic = static_cast(Instruction.opcode().value()); const std::optional Type = resultType(Function, Instruction); const auto Integer = [Type] { return Type && isSupportedIntegerType(*Type); }; const auto Float = [Type] { return Type && isSupportedFloatingScalar(*Type); }; - auto Classification = Subtarget.getLegalizerInfo()->getDecision(Instruction, Function, Target); - if (!Classification) - return std::unexpected(Classification.error()); - if (Classification->Action != LegalizationAction::Legal && - Classification->Action != LegalizationAction::Custom) { - std::string Message = "RISC-V selector cannot select opcode '" + - std::string(getGenericOpcodeName(Generic)) + "'"; - if (Type) - Message += " with result type '" + Type->toString() + "'"; - Message += ": the legalization rule explicitly marks this combination unsupported"; - return makeUnexpected(ErrorCode::Unsupported, std::move(Message)); - } switch (Generic) { case GenericOpcode::G_ADD: case GenericOpcode::G_SUB: @@ -343,21 +324,15 @@ public: [[nodiscard]] Expected select(MachineInstr &Instruction, MachineFunction &Function, const TargetDescription &Target) const override { + auto Generated = GIMatchTableExecutor::select(generatedGlobalISelMatchTable(), Instruction, + Function, Target); + if (!Generated) + return std::unexpected(Generated.error()); + if (*Generated) + return {}; auto Match = canSelect(Instruction, Function, Target); if (!Match) return std::unexpected(Match.error()); - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_SLLW)) - return Instruction.setOpcode(instructionOpcode(InstructionOpcode::SLLW)); - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_SRAW)) - return Instruction.setOpcode(instructionOpcode(InstructionOpcode::SRAW)); - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_SRLW)) - return Instruction.setOpcode(instructionOpcode(InstructionOpcode::SRLW)); - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_DIVW)) - return Instruction.setOpcode(instructionOpcode(InstructionOpcode::DIVW)); - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_DIVUW)) - return Instruction.setOpcode(instructionOpcode(InstructionOpcode::DIVUW)); - if (Instruction.opcode() == instructionOpcode(InstructionOpcode::G_REMUW)) - return Instruction.setOpcode(instructionOpcode(InstructionOpcode::REMUW)); const GenericOpcode Generic = static_cast(Instruction.opcode().value()); const std::optional Type = resultType(Function, Instruction); diff --git a/backend/lib/Target/RISCV/RISCV.rccdesc b/backend/lib/Target/RISCV/RISCV.rccdesc index 832e8c1..7623afd 100644 --- a/backend/lib/Target/RISCV/RISCV.rccdesc +++ b/backend/lib/Target/RISCV/RISCV.rccdesc @@ -9,4032 +9,3 @@ target: abi: lp64d data_layout: e-m:e-p:64:64-i64:64-i128:128-n32:64-S128 features: [i, m, a, f, d, c, zicsr, zifencei] - -register_units: - - { id: 1, symbol: U_X0, name: x0.unit } - - { id: 2, symbol: U_X1, name: x1.unit } - - { id: 3, symbol: U_X2, name: x2.unit } - - { id: 4, symbol: U_X3, name: x3.unit } - - { id: 5, symbol: U_X4, name: x4.unit } - - { id: 6, symbol: U_X5, name: x5.unit } - - { id: 7, symbol: U_X6, name: x6.unit } - - { id: 8, symbol: U_X7, name: x7.unit } - - { id: 9, symbol: U_X8, name: x8.unit } - - { id: 10, symbol: U_X9, name: x9.unit } - - { id: 11, symbol: U_X10, name: x10.unit } - - { id: 12, symbol: U_X11, name: x11.unit } - - { id: 13, symbol: U_X12, name: x12.unit } - - { id: 14, symbol: U_X13, name: x13.unit } - - { id: 15, symbol: U_X14, name: x14.unit } - - { id: 16, symbol: U_X15, name: x15.unit } - - { id: 17, symbol: U_X16, name: x16.unit } - - { id: 18, symbol: U_X17, name: x17.unit } - - { id: 19, symbol: U_X18, name: x18.unit } - - { id: 20, symbol: U_X19, name: x19.unit } - - { id: 21, symbol: U_X20, name: x20.unit } - - { id: 22, symbol: U_X21, name: x21.unit } - - { id: 23, symbol: U_X22, name: x22.unit } - - { id: 24, symbol: U_X23, name: x23.unit } - - { id: 25, symbol: U_X24, name: x24.unit } - - { id: 26, symbol: U_X25, name: x25.unit } - - { id: 27, symbol: U_X26, name: x26.unit } - - { id: 28, symbol: U_X27, name: x27.unit } - - { id: 29, symbol: U_X28, name: x28.unit } - - { id: 30, symbol: U_X29, name: x29.unit } - - { id: 31, symbol: U_X30, name: x30.unit } - - { id: 32, symbol: U_X31, name: x31.unit } - - { id: 33, symbol: U_F0, name: f0.unit } - - { id: 34, symbol: U_F1, name: f1.unit } - - { id: 35, symbol: U_F2, name: f2.unit } - - { id: 36, symbol: U_F3, name: f3.unit } - - { id: 37, symbol: U_F4, name: f4.unit } - - { id: 38, symbol: U_F5, name: f5.unit } - - { id: 39, symbol: U_F6, name: f6.unit } - - { id: 40, symbol: U_F7, name: f7.unit } - - { id: 41, symbol: U_F8, name: f8.unit } - - { id: 42, symbol: U_F9, name: f9.unit } - - { id: 43, symbol: U_F10, name: f10.unit } - - { id: 44, symbol: U_F11, name: f11.unit } - - { id: 45, symbol: U_F12, name: f12.unit } - - { id: 46, symbol: U_F13, name: f13.unit } - - { id: 47, symbol: U_F14, name: f14.unit } - - { id: 48, symbol: U_F15, name: f15.unit } - - { id: 49, symbol: U_F16, name: f16.unit } - - { id: 50, symbol: U_F17, name: f17.unit } - - { id: 51, symbol: U_F18, name: f18.unit } - - { id: 52, symbol: U_F19, name: f19.unit } - - { id: 53, symbol: U_F20, name: f20.unit } - - { id: 54, symbol: U_F21, name: f21.unit } - - { id: 55, symbol: U_F22, name: f22.unit } - - { id: 56, symbol: U_F23, name: f23.unit } - - { id: 57, symbol: U_F24, name: f24.unit } - - { id: 58, symbol: U_F25, name: f25.unit } - - { id: 59, symbol: U_F26, name: f26.unit } - - { id: 60, symbol: U_F27, name: f27.unit } - - { id: 61, symbol: U_F28, name: f28.unit } - - { id: 62, symbol: U_F29, name: f29.unit } - - { id: 63, symbol: U_F30, name: f30.unit } - - { id: 64, symbol: U_F31, name: f31.unit } - - { id: 65, symbol: U_FFLAGS, name: fflags.unit } - - { id: 66, symbol: U_FRM, name: frm.unit } - - { id: 67, symbol: U_V0, name: v0.unit } - - { id: 68, symbol: U_V1, name: v1.unit } - - { id: 69, symbol: U_V2, name: v2.unit } - - { id: 70, symbol: U_V3, name: v3.unit } - - { id: 71, symbol: U_V4, name: v4.unit } - - { id: 72, symbol: U_V5, name: v5.unit } - - { id: 73, symbol: U_V6, name: v6.unit } - - { id: 74, symbol: U_V7, name: v7.unit } - - { id: 75, symbol: U_V8, name: v8.unit } - - { id: 76, symbol: U_V9, name: v9.unit } - - { id: 77, symbol: U_V10, name: v10.unit } - - { id: 78, symbol: U_V11, name: v11.unit } - - { id: 79, symbol: U_V12, name: v12.unit } - - { id: 80, symbol: U_V13, name: v13.unit } - - { id: 81, symbol: U_V14, name: v14.unit } - - { id: 82, symbol: U_V15, name: v15.unit } - - { id: 83, symbol: U_V16, name: v16.unit } - - { id: 84, symbol: U_V17, name: v17.unit } - - { id: 85, symbol: U_V18, name: v18.unit } - - { id: 86, symbol: U_V19, name: v19.unit } - - { id: 87, symbol: U_V20, name: v20.unit } - - { id: 88, symbol: U_V21, name: v21.unit } - - { id: 89, symbol: U_V22, name: v22.unit } - - { id: 90, symbol: U_V23, name: v23.unit } - - { id: 91, symbol: U_V24, name: v24.unit } - - { id: 92, symbol: U_V25, name: v25.unit } - - { id: 93, symbol: U_V26, name: v26.unit } - - { id: 94, symbol: U_V27, name: v27.unit } - - { id: 95, symbol: U_V28, name: v28.unit } - - { id: 96, symbol: U_V29, name: v29.unit } - - { id: 97, symbol: U_V30, name: v30.unit } - - { id: 98, symbol: U_V31, name: v31.unit } - -registers: - - { id: 1, symbol: X0, name: x0, encoding: 0, dwarf_register: 0, units: [{ unit: U_X0, lanes: 1 }], constant: true, reserved: true, aliases: [zero] } - - { id: 2, symbol: X1, name: x1, encoding: 1, dwarf_register: 1, units: [{ unit: U_X1, lanes: 1 }], aliases: [ra] } - - { id: 3, symbol: X2, name: x2, encoding: 2, dwarf_register: 2, units: [{ unit: U_X2, lanes: 1 }], reserved: true, aliases: [sp] } - - { id: 4, symbol: X3, name: x3, encoding: 3, dwarf_register: 3, units: [{ unit: U_X3, lanes: 1 }], reserved: true, aliases: [gp] } - - { id: 5, symbol: X4, name: x4, encoding: 4, dwarf_register: 4, units: [{ unit: U_X4, lanes: 1 }], reserved: true, aliases: [tp] } - - { id: 6, symbol: X5, name: x5, encoding: 5, dwarf_register: 5, units: [{ unit: U_X5, lanes: 1 }], aliases: [t0] } - - { id: 7, symbol: X6, name: x6, encoding: 6, dwarf_register: 6, units: [{ unit: U_X6, lanes: 1 }], aliases: [t1] } - - { id: 8, symbol: X7, name: x7, encoding: 7, dwarf_register: 7, units: [{ unit: U_X7, lanes: 1 }], aliases: [t2] } - - { id: 9, symbol: X8, name: x8, encoding: 8, dwarf_register: 8, units: [{ unit: U_X8, lanes: 1 }], aliases: [s0, fp] } - - { id: 10, symbol: X9, name: x9, encoding: 9, dwarf_register: 9, units: [{ unit: U_X9, lanes: 1 }], aliases: [s1] } - - { id: 11, symbol: X10, name: x10, encoding: 10, dwarf_register: 10, units: [{ unit: U_X10, lanes: 1 }], aliases: [a0] } - - { id: 12, symbol: X11, name: x11, encoding: 11, dwarf_register: 11, units: [{ unit: U_X11, lanes: 1 }], aliases: [a1] } - - { id: 13, symbol: X12, name: x12, encoding: 12, dwarf_register: 12, units: [{ unit: U_X12, lanes: 1 }], aliases: [a2] } - - { id: 14, symbol: X13, name: x13, encoding: 13, dwarf_register: 13, units: [{ unit: U_X13, lanes: 1 }], aliases: [a3] } - - { id: 15, symbol: X14, name: x14, encoding: 14, dwarf_register: 14, units: [{ unit: U_X14, lanes: 1 }], aliases: [a4] } - - { id: 16, symbol: X15, name: x15, encoding: 15, dwarf_register: 15, units: [{ unit: U_X15, lanes: 1 }], aliases: [a5] } - - { id: 17, symbol: X16, name: x16, encoding: 16, dwarf_register: 16, units: [{ unit: U_X16, lanes: 1 }], aliases: [a6] } - - { id: 18, symbol: X17, name: x17, encoding: 17, dwarf_register: 17, units: [{ unit: U_X17, lanes: 1 }], aliases: [a7] } - - { id: 19, symbol: X18, name: x18, encoding: 18, dwarf_register: 18, units: [{ unit: U_X18, lanes: 1 }], aliases: [s2] } - - { id: 20, symbol: X19, name: x19, encoding: 19, dwarf_register: 19, units: [{ unit: U_X19, lanes: 1 }], aliases: [s3] } - - { id: 21, symbol: X20, name: x20, encoding: 20, dwarf_register: 20, units: [{ unit: U_X20, lanes: 1 }], aliases: [s4] } - - { id: 22, symbol: X21, name: x21, encoding: 21, dwarf_register: 21, units: [{ unit: U_X21, lanes: 1 }], aliases: [s5] } - - { id: 23, symbol: X22, name: x22, encoding: 22, dwarf_register: 22, units: [{ unit: U_X22, lanes: 1 }], aliases: [s6] } - - { id: 24, symbol: X23, name: x23, encoding: 23, dwarf_register: 23, units: [{ unit: U_X23, lanes: 1 }], aliases: [s7] } - - { id: 25, symbol: X24, name: x24, encoding: 24, dwarf_register: 24, units: [{ unit: U_X24, lanes: 1 }], aliases: [s8] } - - { id: 26, symbol: X25, name: x25, encoding: 25, dwarf_register: 25, units: [{ unit: U_X25, lanes: 1 }], aliases: [s9] } - - { id: 27, symbol: X26, name: x26, encoding: 26, dwarf_register: 26, units: [{ unit: U_X26, lanes: 1 }], aliases: [s10] } - - { id: 28, symbol: X27, name: x27, encoding: 27, dwarf_register: 27, units: [{ unit: U_X27, lanes: 1 }], aliases: [s11] } - - { id: 29, symbol: X28, name: x28, encoding: 28, dwarf_register: 28, units: [{ unit: U_X28, lanes: 1 }], aliases: [t3] } - - { id: 30, symbol: X29, name: x29, encoding: 29, dwarf_register: 29, units: [{ unit: U_X29, lanes: 1 }], aliases: [t4] } - - { id: 31, symbol: X30, name: x30, encoding: 30, dwarf_register: 30, units: [{ unit: U_X30, lanes: 1 }], aliases: [t5] } - - { id: 32, symbol: X31, name: x31, encoding: 31, dwarf_register: 31, units: [{ unit: U_X31, lanes: 1 }], aliases: [t6] } - - { id: 33, symbol: F0_D, name: f0_d, encoding: 0, dwarf_register: 32, units: [{ unit: U_F0, lanes: 1 }], aliases: [ft0] } - - { id: 34, symbol: F1_D, name: f1_d, encoding: 1, dwarf_register: 33, units: [{ unit: U_F1, lanes: 1 }], aliases: [ft1] } - - { id: 35, symbol: F2_D, name: f2_d, encoding: 2, dwarf_register: 34, units: [{ unit: U_F2, lanes: 1 }], aliases: [ft2] } - - { id: 36, symbol: F3_D, name: f3_d, encoding: 3, dwarf_register: 35, units: [{ unit: U_F3, lanes: 1 }], aliases: [ft3] } - - { id: 37, symbol: F4_D, name: f4_d, encoding: 4, dwarf_register: 36, units: [{ unit: U_F4, lanes: 1 }], aliases: [ft4] } - - { id: 38, symbol: F5_D, name: f5_d, encoding: 5, dwarf_register: 37, units: [{ unit: U_F5, lanes: 1 }], aliases: [ft5] } - - { id: 39, symbol: F6_D, name: f6_d, encoding: 6, dwarf_register: 38, units: [{ unit: U_F6, lanes: 1 }], aliases: [ft6] } - - { id: 40, symbol: F7_D, name: f7_d, encoding: 7, dwarf_register: 39, units: [{ unit: U_F7, lanes: 1 }], aliases: [ft7] } - - { id: 41, symbol: F8_D, name: f8_d, encoding: 8, dwarf_register: 40, units: [{ unit: U_F8, lanes: 1 }], aliases: [fs0] } - - { id: 42, symbol: F9_D, name: f9_d, encoding: 9, dwarf_register: 41, units: [{ unit: U_F9, lanes: 1 }], aliases: [fs1] } - - { id: 43, symbol: F10_D, name: f10_d, encoding: 10, dwarf_register: 42, units: [{ unit: U_F10, lanes: 1 }], aliases: [fa0] } - - { id: 44, symbol: F11_D, name: f11_d, encoding: 11, dwarf_register: 43, units: [{ unit: U_F11, lanes: 1 }], aliases: [fa1] } - - { id: 45, symbol: F12_D, name: f12_d, encoding: 12, dwarf_register: 44, units: [{ unit: U_F12, lanes: 1 }], aliases: [fa2] } - - { id: 46, symbol: F13_D, name: f13_d, encoding: 13, dwarf_register: 45, units: [{ unit: U_F13, lanes: 1 }], aliases: [fa3] } - - { id: 47, symbol: F14_D, name: f14_d, encoding: 14, dwarf_register: 46, units: [{ unit: U_F14, lanes: 1 }], aliases: [fa4] } - - { id: 48, symbol: F15_D, name: f15_d, encoding: 15, dwarf_register: 47, units: [{ unit: U_F15, lanes: 1 }], aliases: [fa5] } - - { id: 49, symbol: F16_D, name: f16_d, encoding: 16, dwarf_register: 48, units: [{ unit: U_F16, lanes: 1 }], aliases: [fa6] } - - { id: 50, symbol: F17_D, name: f17_d, encoding: 17, dwarf_register: 49, units: [{ unit: U_F17, lanes: 1 }], aliases: [fa7] } - - { id: 51, symbol: F18_D, name: f18_d, encoding: 18, dwarf_register: 50, units: [{ unit: U_F18, lanes: 1 }], aliases: [fs2] } - - { id: 52, symbol: F19_D, name: f19_d, encoding: 19, dwarf_register: 51, units: [{ unit: U_F19, lanes: 1 }], aliases: [fs3] } - - { id: 53, symbol: F20_D, name: f20_d, encoding: 20, dwarf_register: 52, units: [{ unit: U_F20, lanes: 1 }], aliases: [fs4] } - - { id: 54, symbol: F21_D, name: f21_d, encoding: 21, dwarf_register: 53, units: [{ unit: U_F21, lanes: 1 }], aliases: [fs5] } - - { id: 55, symbol: F22_D, name: f22_d, encoding: 22, dwarf_register: 54, units: [{ unit: U_F22, lanes: 1 }], aliases: [fs6] } - - { id: 56, symbol: F23_D, name: f23_d, encoding: 23, dwarf_register: 55, units: [{ unit: U_F23, lanes: 1 }], aliases: [fs7] } - - { id: 57, symbol: F24_D, name: f24_d, encoding: 24, dwarf_register: 56, units: [{ unit: U_F24, lanes: 1 }], aliases: [fs8] } - - { id: 58, symbol: F25_D, name: f25_d, encoding: 25, dwarf_register: 57, units: [{ unit: U_F25, lanes: 1 }], aliases: [fs9] } - - { id: 59, symbol: F26_D, name: f26_d, encoding: 26, dwarf_register: 58, units: [{ unit: U_F26, lanes: 1 }], aliases: [fs10] } - - { id: 60, symbol: F27_D, name: f27_d, encoding: 27, dwarf_register: 59, units: [{ unit: U_F27, lanes: 1 }], aliases: [fs11] } - - { id: 61, symbol: F28_D, name: f28_d, encoding: 28, dwarf_register: 60, units: [{ unit: U_F28, lanes: 1 }], aliases: [ft8] } - - { id: 62, symbol: F29_D, name: f29_d, encoding: 29, dwarf_register: 61, units: [{ unit: U_F29, lanes: 1 }], aliases: [ft9] } - - { id: 63, symbol: F30_D, name: f30_d, encoding: 30, dwarf_register: 62, units: [{ unit: U_F30, lanes: 1 }], aliases: [ft10] } - - { id: 64, symbol: F31_D, name: f31_d, encoding: 31, dwarf_register: 63, units: [{ unit: U_F31, lanes: 1 }], aliases: [ft11] } - - { id: 65, symbol: F0_F, name: f0_f, encoding: 0, dwarf_register: 32, units: [{ unit: U_F0, lanes: 1 }] } - - { id: 66, symbol: F1_F, name: f1_f, encoding: 1, dwarf_register: 33, units: [{ unit: U_F1, lanes: 1 }] } - - { id: 67, symbol: F2_F, name: f2_f, encoding: 2, dwarf_register: 34, units: [{ unit: U_F2, lanes: 1 }] } - - { id: 68, symbol: F3_F, name: f3_f, encoding: 3, dwarf_register: 35, units: [{ unit: U_F3, lanes: 1 }] } - - { id: 69, symbol: F4_F, name: f4_f, encoding: 4, dwarf_register: 36, units: [{ unit: U_F4, lanes: 1 }] } - - { id: 70, symbol: F5_F, name: f5_f, encoding: 5, dwarf_register: 37, units: [{ unit: U_F5, lanes: 1 }] } - - { id: 71, symbol: F6_F, name: f6_f, encoding: 6, dwarf_register: 38, units: [{ unit: U_F6, lanes: 1 }] } - - { id: 72, symbol: F7_F, name: f7_f, encoding: 7, dwarf_register: 39, units: [{ unit: U_F7, lanes: 1 }] } - - { id: 73, symbol: F8_F, name: f8_f, encoding: 8, dwarf_register: 40, units: [{ unit: U_F8, lanes: 1 }] } - - { id: 74, symbol: F9_F, name: f9_f, encoding: 9, dwarf_register: 41, units: [{ unit: U_F9, lanes: 1 }] } - - { id: 75, symbol: F10_F, name: f10_f, encoding: 10, dwarf_register: 42, units: [{ unit: U_F10, lanes: 1 }] } - - { id: 76, symbol: F11_F, name: f11_f, encoding: 11, dwarf_register: 43, units: [{ unit: U_F11, lanes: 1 }] } - - { id: 77, symbol: F12_F, name: f12_f, encoding: 12, dwarf_register: 44, units: [{ unit: U_F12, lanes: 1 }] } - - { id: 78, symbol: F13_F, name: f13_f, encoding: 13, dwarf_register: 45, units: [{ unit: U_F13, lanes: 1 }] } - - { id: 79, symbol: F14_F, name: f14_f, encoding: 14, dwarf_register: 46, units: [{ unit: U_F14, lanes: 1 }] } - - { id: 80, symbol: F15_F, name: f15_f, encoding: 15, dwarf_register: 47, units: [{ unit: U_F15, lanes: 1 }] } - - { id: 81, symbol: F16_F, name: f16_f, encoding: 16, dwarf_register: 48, units: [{ unit: U_F16, lanes: 1 }] } - - { id: 82, symbol: F17_F, name: f17_f, encoding: 17, dwarf_register: 49, units: [{ unit: U_F17, lanes: 1 }] } - - { id: 83, symbol: F18_F, name: f18_f, encoding: 18, dwarf_register: 50, units: [{ unit: U_F18, lanes: 1 }] } - - { id: 84, symbol: F19_F, name: f19_f, encoding: 19, dwarf_register: 51, units: [{ unit: U_F19, lanes: 1 }] } - - { id: 85, symbol: F20_F, name: f20_f, encoding: 20, dwarf_register: 52, units: [{ unit: U_F20, lanes: 1 }] } - - { id: 86, symbol: F21_F, name: f21_f, encoding: 21, dwarf_register: 53, units: [{ unit: U_F21, lanes: 1 }] } - - { id: 87, symbol: F22_F, name: f22_f, encoding: 22, dwarf_register: 54, units: [{ unit: U_F22, lanes: 1 }] } - - { id: 88, symbol: F23_F, name: f23_f, encoding: 23, dwarf_register: 55, units: [{ unit: U_F23, lanes: 1 }] } - - { id: 89, symbol: F24_F, name: f24_f, encoding: 24, dwarf_register: 56, units: [{ unit: U_F24, lanes: 1 }] } - - { id: 90, symbol: F25_F, name: f25_f, encoding: 25, dwarf_register: 57, units: [{ unit: U_F25, lanes: 1 }] } - - { id: 91, symbol: F26_F, name: f26_f, encoding: 26, dwarf_register: 58, units: [{ unit: U_F26, lanes: 1 }] } - - { id: 92, symbol: F27_F, name: f27_f, encoding: 27, dwarf_register: 59, units: [{ unit: U_F27, lanes: 1 }] } - - { id: 93, symbol: F28_F, name: f28_f, encoding: 28, dwarf_register: 60, units: [{ unit: U_F28, lanes: 1 }] } - - { id: 94, symbol: F29_F, name: f29_f, encoding: 29, dwarf_register: 61, units: [{ unit: U_F29, lanes: 1 }] } - - { id: 95, symbol: F30_F, name: f30_f, encoding: 30, dwarf_register: 62, units: [{ unit: U_F30, lanes: 1 }] } - - { id: 96, symbol: F31_F, name: f31_f, encoding: 31, dwarf_register: 63, units: [{ unit: U_F31, lanes: 1 }] } - - { id: 97, symbol: FFLAGS, name: fflags, encoding: 0, dwarf_register: 65, units: [{ unit: U_FFLAGS, lanes: 1 }], artificial: true, reserved: true } - - { id: 98, symbol: FRM, name: frm, encoding: 0, dwarf_register: 66, units: [{ unit: U_FRM, lanes: 1 }], artificial: true, reserved: true } - - { id: 99, symbol: V0, name: v0, encoding: 0, dwarf_register: 96, units: [{ unit: U_V0, lanes: 1 }] } - - { id: 100, symbol: V1, name: v1, encoding: 1, dwarf_register: 97, units: [{ unit: U_V1, lanes: 1 }] } - - { id: 101, symbol: V2, name: v2, encoding: 2, dwarf_register: 98, units: [{ unit: U_V2, lanes: 1 }] } - - { id: 102, symbol: V3, name: v3, encoding: 3, dwarf_register: 99, units: [{ unit: U_V3, lanes: 1 }] } - - { id: 103, symbol: V4, name: v4, encoding: 4, dwarf_register: 100, units: [{ unit: U_V4, lanes: 1 }] } - - { id: 104, symbol: V5, name: v5, encoding: 5, dwarf_register: 101, units: [{ unit: U_V5, lanes: 1 }] } - - { id: 105, symbol: V6, name: v6, encoding: 6, dwarf_register: 102, units: [{ unit: U_V6, lanes: 1 }] } - - { id: 106, symbol: V7, name: v7, encoding: 7, dwarf_register: 103, units: [{ unit: U_V7, lanes: 1 }] } - - { id: 107, symbol: V8, name: v8, encoding: 8, dwarf_register: 104, units: [{ unit: U_V8, lanes: 1 }] } - - { id: 108, symbol: V9, name: v9, encoding: 9, dwarf_register: 105, units: [{ unit: U_V9, lanes: 1 }] } - - { id: 109, symbol: V10, name: v10, encoding: 10, dwarf_register: 106, units: [{ unit: U_V10, lanes: 1 }] } - - { id: 110, symbol: V11, name: v11, encoding: 11, dwarf_register: 107, units: [{ unit: U_V11, lanes: 1 }] } - - { id: 111, symbol: V12, name: v12, encoding: 12, dwarf_register: 108, units: [{ unit: U_V12, lanes: 1 }] } - - { id: 112, symbol: V13, name: v13, encoding: 13, dwarf_register: 109, units: [{ unit: U_V13, lanes: 1 }] } - - { id: 113, symbol: V14, name: v14, encoding: 14, dwarf_register: 110, units: [{ unit: U_V14, lanes: 1 }] } - - { id: 114, symbol: V15, name: v15, encoding: 15, dwarf_register: 111, units: [{ unit: U_V15, lanes: 1 }] } - - { id: 115, symbol: V16, name: v16, encoding: 16, dwarf_register: 112, units: [{ unit: U_V16, lanes: 1 }] } - - { id: 116, symbol: V17, name: v17, encoding: 17, dwarf_register: 113, units: [{ unit: U_V17, lanes: 1 }] } - - { id: 117, symbol: V18, name: v18, encoding: 18, dwarf_register: 114, units: [{ unit: U_V18, lanes: 1 }] } - - { id: 118, symbol: V19, name: v19, encoding: 19, dwarf_register: 115, units: [{ unit: U_V19, lanes: 1 }] } - - { id: 119, symbol: V20, name: v20, encoding: 20, dwarf_register: 116, units: [{ unit: U_V20, lanes: 1 }] } - - { id: 120, symbol: V21, name: v21, encoding: 21, dwarf_register: 117, units: [{ unit: U_V21, lanes: 1 }] } - - { id: 121, symbol: V22, name: v22, encoding: 22, dwarf_register: 118, units: [{ unit: U_V22, lanes: 1 }] } - - { id: 122, symbol: V23, name: v23, encoding: 23, dwarf_register: 119, units: [{ unit: U_V23, lanes: 1 }] } - - { id: 123, symbol: V24, name: v24, encoding: 24, dwarf_register: 120, units: [{ unit: U_V24, lanes: 1 }] } - - { id: 124, symbol: V25, name: v25, encoding: 25, dwarf_register: 121, units: [{ unit: U_V25, lanes: 1 }] } - - { id: 125, symbol: V26, name: v26, encoding: 26, dwarf_register: 122, units: [{ unit: U_V26, lanes: 1 }] } - - { id: 126, symbol: V27, name: v27, encoding: 27, dwarf_register: 123, units: [{ unit: U_V27, lanes: 1 }] } - - { id: 127, symbol: V28, name: v28, encoding: 28, dwarf_register: 124, units: [{ unit: U_V28, lanes: 1 }] } - - { id: 128, symbol: V29, name: v29, encoding: 29, dwarf_register: 125, units: [{ unit: U_V29, lanes: 1 }] } - - { id: 129, symbol: V30, name: v30, encoding: 30, dwarf_register: 126, units: [{ unit: U_V30, lanes: 1 }] } - - { id: 130, symbol: V31, name: v31, encoding: 31, dwarf_register: 127, units: [{ unit: U_V31, lanes: 1 }] } - -register_banks: - - { id: 1, symbol: GPR, name: GPRB, maximum_size_bits: 64 } - - { id: 2, symbol: FPR, name: FPRB, maximum_size_bits: 64 } - - { id: 3, symbol: CSR, name: CSRB, maximum_size_bits: 32 } - - { id: 4, symbol: VR, name: VRB, maximum_size_bits: 512 } - -register_classes: - - - id: 1 - symbol: GPR - name: GPR - bank: GPR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31] - allocation_order: [X5, X6, X7, X28, X29, X30, X31, X10, X11, X12, X13, X14, X15, X16, X17, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X1] - - - id: 2 - symbol: GPRC - name: GPRC - bank: GPR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [X8, X9, X10, X11, X12, X13, X14, X15] - allocation_order: [X10, X11, X12, X13, X14, X15, X8, X9] - - - id: 3 - symbol: FPR64 - name: FPR64 - bank: FPR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [F0_D, F1_D, F2_D, F3_D, F4_D, F5_D, F6_D, F7_D, F8_D, F9_D, F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F16_D, F17_D, F18_D, F19_D, F20_D, F21_D, F22_D, F23_D, F24_D, F25_D, F26_D, F27_D, F28_D, F29_D, F30_D, F31_D] - allocation_order: [F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F16_D, F17_D, F0_D, F1_D, F2_D, F3_D, F4_D, F5_D, F6_D, F7_D, F28_D, F29_D, F30_D, F31_D, F8_D, F9_D, F18_D, F19_D, F20_D, F21_D, F22_D, F23_D, F24_D, F25_D, F26_D, F27_D] - - - id: 4 - symbol: FPR64C - name: FPR64C - bank: FPR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [F8_D, F9_D, F10_D, F11_D, F12_D, F13_D, F14_D, F15_D] - allocation_order: [F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F8_D, F9_D] - - - id: 5 - symbol: FPR32 - name: FPR32 - bank: FPR - size_bits: 32 - spill_size_bits: 32 - spill_alignment_bits: 32 - lanes: 1 - registers: [F0_F, F1_F, F2_F, F3_F, F4_F, F5_F, F6_F, F7_F, F8_F, F9_F, F10_F, F11_F, F12_F, F13_F, F14_F, F15_F, F16_F, F17_F, F18_F, F19_F, F20_F, F21_F, F22_F, F23_F, F24_F, F25_F, F26_F, F27_F, F28_F, F29_F, F30_F, F31_F] - allocation_order: [F10_F, F11_F, F12_F, F13_F, F14_F, F15_F, F16_F, F17_F, F0_F, F1_F, F2_F, F3_F, F4_F, F5_F, F6_F, F7_F, F28_F, F29_F, F30_F, F31_F, F8_F, F9_F, F18_F, F19_F, F20_F, F21_F, F22_F, F23_F, F24_F, F25_F, F26_F, F27_F] - - - id: 6 - symbol: FPR32C - name: FPR32C - bank: FPR - size_bits: 32 - spill_size_bits: 32 - spill_alignment_bits: 32 - lanes: 1 - registers: [F8_F, F9_F, F10_F, F11_F, F12_F, F13_F, F14_F, F15_F] - allocation_order: [F10_F, F11_F, F12_F, F13_F, F14_F, F15_F, F8_F, F9_F] - - - id: 7 - symbol: GPR_NX0 - name: GPR_NX0 - bank: GPR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31] - allocation_order: [X5, X6, X7, X28, X29, X30, X31, X10, X11, X12, X13, X14, X15, X16, X17, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X1] - - - id: 8 - symbol: GPR_NX0_NX2 - name: GPR_NX0_NX2 - bank: GPR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [X1, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31] - allocation_order: [X5, X6, X7, X28, X29, X30, X31, X10, X11, X12, X13, X14, X15, X16, X17, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X1] - - - id: 9 - symbol: FFLAGS - name: FFLAGS - bank: CSR - size_bits: 32 - spill_size_bits: 32 - spill_alignment_bits: 32 - lanes: 1 - registers: [FFLAGS] - allocation_order: [] - allocatable: false - - - id: 10 - symbol: FRM - name: FRM - bank: CSR - size_bits: 32 - spill_size_bits: 32 - spill_alignment_bits: 32 - lanes: 1 - registers: [FRM] - allocation_order: [] - allocatable: false - - - id: 11 - symbol: VR - name: VR - bank: VR - size_bits: 64 - spill_size_bits: 64 - spill_alignment_bits: 64 - lanes: 1 - registers: [V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30, V31] - allocation_order: [] - allocatable: false - -register_masks: - - - name: CSR_ILP32_LP64 - preserved: [X1, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27] - - - name: CSR_ILP32D_LP64D - preserved: [X1, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, F8_D, F9_D, F18_D, F19_D, F20_D, F21_D, F22_D, F23_D, F24_D, F25_D, F26_D, F27_D, F8_F, F9_F, F18_F, F19_F, F20_F, F21_F, F22_F, F23_F, F24_F, F25_F, F26_F, F27_F] - -mir_operand_flags: - direct_mask: 127 - direct: - - { name: riscv-call, value: 1 } - - { name: riscv-pcrel-hi, value: 2 } - - { name: riscv-pcrel-lo, value: 4 } - - { name: riscv-copy-f32, value: 8 } - - { name: riscv-copy-f64, value: 16 } - - { name: riscv-hi, value: 32 } - - { name: riscv-lo, value: 64 } - bitmask: [] - -calling_conventions: - - - id: 2 - symbol: LP64 - name: lp64 - integer_register_class: GPR - floating_register_class: FPR64 - integer_argument_registers: [X10, X11, X12, X13, X14, X15, X16, X17] - floating_argument_registers: [] - integer_return_registers: [X10, X11] - floating_return_registers: [] - preserved_mask: CSR_ILP32_LP64 - stack_alignment_bytes: 16 - stack_argument_alignment_bytes: 16 - shadow_space_bytes: 0 - supports_varargs: true - supports_tail_calls: true - - - id: 1 - symbol: LP64D - name: lp64d - integer_register_class: GPR - floating_register_class: FPR64 - integer_argument_registers: [X10, X11, X12, X13, X14, X15, X16, X17] - floating_argument_registers: [F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F16_D, F17_D] - integer_return_registers: [X10, X11] - floating_return_registers: [F10_D, F11_D] - preserved_mask: CSR_ILP32D_LP64D - stack_alignment_bytes: 16 - stack_argument_alignment_bytes: 16 - shadow_space_bytes: 0 - supports_varargs: true - supports_tail_calls: true - -named_operands: - - { id: 1, symbol: RD, name: rd } - - { id: 2, symbol: RS1, name: rs1 } - - { id: 3, symbol: RS2, name: rs2 } - - { id: 4, symbol: IMM, name: imm } - - { id: 5, symbol: TARGET, name: target } - - { id: 6, symbol: CSR, name: csr } - - { id: 7, symbol: ZIMM, name: zimm } - - { id: 8, symbol: PRED, name: pred } - - { id: 9, symbol: SUCC, name: succ } - - { id: 10, symbol: FRD, name: frd } - - { id: 11, symbol: FRS1, name: frs1 } - - { id: 12, symbol: FRS2, name: frs2 } - - { id: 13, symbol: FRS3, name: frs3 } - - { id: 14, symbol: RM, name: rm } - -immediate_predicates: - - { id: 1, symbol: SIMM12, name: simm12, kind: signed, bits: 12 } - - { id: 2, symbol: UIMM20, name: uimm20, kind: unsigned, bits: 20 } - - { id: 3, symbol: UIMM5, name: uimm5, kind: unsigned, bits: 5 } - - { id: 4, symbol: UIMM6, name: uimm6, kind: unsigned, bits: 6 } - - { id: 5, symbol: UIMM12, name: uimm12, kind: unsigned, bits: 12 } - - { id: 6, symbol: UIMM4, name: uimm4, kind: unsigned, bits: 4 } - - { id: 7, symbol: RM, name: rm, kind: unsigned, bits: 3, allowed_values: [0, 1, 2, 3, 4, 7] } - - { id: 8, symbol: C_UIMM10_NZ_A4, name: c-uimm10-nz-a4, kind: unsigned, bits: 10, alignment: 4, nonzero: true } - - { id: 9, symbol: C_UIMM7_A4, name: c-uimm7-a4, kind: unsigned, bits: 7, alignment: 4 } - - { id: 10, symbol: C_UIMM8_A8, name: c-uimm8-a8, kind: unsigned, bits: 8, alignment: 8 } - - { id: 11, symbol: C_UIMM8_A4, name: c-uimm8-a4, kind: unsigned, bits: 8, alignment: 4 } - - { id: 12, symbol: C_UIMM9_A8, name: c-uimm9-a8, kind: unsigned, bits: 9, alignment: 8 } - - { id: 13, symbol: C_SIMM6, name: c-simm6, kind: signed, bits: 6 } - - { id: 14, symbol: C_SIMM6_NZ, name: c-simm6-nz, kind: signed, bits: 6, nonzero: true } - - { id: 15, symbol: C_SIMM9_A2, name: c-simm9-a2, kind: signed, bits: 9, alignment: 2 } - - { id: 16, symbol: C_SIMM12_A2, name: c-simm12-a2, kind: signed, bits: 12, alignment: 2 } - - { id: 17, symbol: C_SIMM10_A16_NZ, name: c-simm10-a16-nz, kind: signed, bits: 10, alignment: 16, nonzero: true } - -scheduling_classes: - - { id: 1, symbol: ALU, name: alu, micro_ops: 1, latency: 1 } - - { id: 2, symbol: LOAD, name: load, micro_ops: 1, latency: 3 } - - { id: 3, symbol: STORE, name: store, micro_ops: 1, latency: 1 } - - { id: 4, symbol: BRANCH, name: branch, micro_ops: 1, latency: 1 } - - { id: 5, symbol: SYSTEM, name: system, micro_ops: 1, latency: 1 } - - { id: 6, symbol: MUL, name: mul, micro_ops: 1, latency: 3 } - - { id: 7, symbol: DIV, name: div, micro_ops: 1, latency: 20 } - - { id: 8, symbol: FENCE, name: fence, micro_ops: 1, latency: 1 } - - { id: 9, symbol: ATOMIC, name: atomic, micro_ops: 1, latency: 4 } - - { id: 10, symbol: FP_ADD, name: fp-add, micro_ops: 1, latency: 4 } - - { id: 11, symbol: FP_MUL, name: fp-mul, micro_ops: 1, latency: 4 } - - { id: 12, symbol: FP_DIV, name: fp-div, micro_ops: 1, latency: 20 } - - { id: 13, symbol: FP_SQRT, name: fp-sqrt, micro_ops: 1, latency: 20 } - - { id: 14, symbol: FP_CONVERT, name: fp-convert, micro_ops: 1, latency: 4 } - - { id: 15, symbol: COMPRESSED, name: compressed, micro_ops: 1, latency: 1 } - -encoding_categories: - - { id: 1, symbol: R, name: r, size_bytes: 4 } - - { id: 2, symbol: I, name: i, size_bytes: 4 } - - { id: 3, symbol: S, name: s, size_bytes: 4 } - - { id: 4, symbol: B, name: b, size_bytes: 4 } - - { id: 5, symbol: U, name: u, size_bytes: 4 } - - { id: 6, symbol: J, name: j, size_bytes: 4 } - - { id: 7, symbol: SYSTEM, name: system, size_bytes: 4 } - - { id: 8, symbol: AMO, name: amo, size_bytes: 4 } - - { id: 9, symbol: R4, name: r4, size_bytes: 4 } - - { id: 10, symbol: C, name: c, size_bytes: 2 } - -assembly_formats: - - { id: 1, symbol: RD_IMM, name: rd-imm } - - { id: 2, symbol: RD_RS1_IMM, name: rd-rs1-imm } - - { id: 3, symbol: RD_RS1_RS2, name: rd-rs1-rs2 } - - { id: 4, symbol: RD_OFFSET_RS1, name: rd-offset-rs1 } - - { id: 5, symbol: RS2_OFFSET_RS1, name: rs2-offset-rs1 } - - { id: 6, symbol: RS1_RS2_TARGET, name: rs1-rs2-target } - - { id: 7, symbol: RD_TARGET, name: rd-target } - - { id: 8, symbol: NONE, name: none } - - { id: 9, symbol: IMM_IMM, name: imm-imm } - - { id: 10, symbol: RD_CSR_RS1, name: rd-csr-rs1 } - - { id: 11, symbol: RD_CSR_IMM, name: rd-csr-imm } - - { id: 12, symbol: RD_PAREN_RS1, name: rd-paren-rs1 } - - { id: 13, symbol: RD_RS2_PAREN_RS1, name: rd-rs2-paren-rs1 } - - { id: 14, symbol: FRD_OFFSET_RS1, name: frd-offset-rs1 } - - { id: 15, symbol: FRS2_OFFSET_RS1, name: frs2-offset-rs1 } - - { id: 16, symbol: FRD_FRS1_FRS2_RM, name: frd-frs1-frs2-rm } - - { id: 17, symbol: FRD_FRS1_FRS2_FRS3_RM, name: frd-frs1-frs2-frs3-rm } - - { id: 18, symbol: FRD_FRS1_RM, name: frd-frs1-rm } - - { id: 19, symbol: FRD_FRS1_FRS2, name: frd-frs1-frs2 } - - { id: 20, symbol: RD_FRS1_RM, name: rd-frs1-rm } - - { id: 21, symbol: RD_FRS1, name: rd-frs1 } - - { id: 22, symbol: RD_FRS1_FRS2, name: rd-frs1-frs2 } - - { id: 23, symbol: FRD_RS1_RM, name: frd-rs1-rm } - - { id: 24, symbol: FRD_RS1, name: frd-rs1 } - - { id: 25, symbol: TARGET, name: target } - - { id: 26, symbol: RS1_TARGET, name: rs1-target } - - { id: 27, symbol: RS1, name: rs1 } - - { id: 28, symbol: RD_RS2, name: rd-rs2 } - - { id: 29, symbol: IMM_SP, name: imm-sp } - - { id: 30, symbol: RD_IMM_SP, name: rd-imm-sp } - - { id: 31, symbol: RD_OFFSET_SP, name: rd-offset-sp } - - { id: 32, symbol: RS2_OFFSET_SP, name: rs2-offset-sp } - - { id: 33, symbol: FRD_OFFSET_SP, name: frd-offset-sp } - - { id: 34, symbol: FRS2_OFFSET_SP, name: frs2-offset-sp } - - { id: 35, symbol: RD_RS1, name: rd-rs1 } - -instructions: - - - id: 1024 - symbol: LUI - name: LUI - assembly_mnemonic: lui - encoding: 5175 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: UIMM20, allowed_target_flags: 32, name: IMM } - num_explicit_defs: 1 - flags: [produces_code, rematerializable] - scheduling_class: ALU - encoding_category: U - assembly_format: RD_IMM - - - id: 1025 - symbol: AUIPC - name: AUIPC - assembly_mnemonic: auipc - encoding: 5143 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate, basic_block, global_symbol, external_symbol, mc_symbol], immediate_predicate: UIMM20, allowed_target_flags: 3, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: U - assembly_format: RD_IMM - - - id: 1026 - symbol: ADDI - name: ADDI - assembly_mnemonic: addi - encoding: 1344531 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 68, name: IMM } - num_explicit_defs: 1 - flags: [produces_code, rematerializable] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1042 - symbol: SRLI - name: SRLI - assembly_mnemonic: srli - encoding: 1365011 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1043 - symbol: SRAI - name: SRAI - assembly_mnemonic: srai - encoding: 1075106835 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1044 - symbol: ADDIW - name: ADDIW - assembly_mnemonic: addiw - encoding: 1344539 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - flags: [produces_code, rematerializable] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1045 - symbol: SLLIW - name: SLLIW - assembly_mnemonic: slliw - encoding: 1348635 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM5, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1046 - symbol: SRLIW - name: SRLIW - assembly_mnemonic: srliw - encoding: 1365019 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM5, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1047 - symbol: SRAIW - name: SRAIW - assembly_mnemonic: sraiw - encoding: 1075106843 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM5, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1048 - symbol: SLL - name: SLL - assembly_mnemonic: sll - encoding: 10785843 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1049 - symbol: SLT - name: SLT - assembly_mnemonic: slt - encoding: 10789939 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1050 - symbol: SLTU - name: SLTU - assembly_mnemonic: sltu - encoding: 10794035 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1051 - symbol: XOR - name: XOR - assembly_mnemonic: xor - encoding: 10798131 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1052 - symbol: SRL - name: SRL - assembly_mnemonic: srl - encoding: 10802227 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1053 - symbol: SRA - name: SRA - assembly_mnemonic: sra - encoding: 1084544051 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1054 - symbol: OR - name: OR - assembly_mnemonic: or - encoding: 10806323 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1055 - symbol: AND - name: AND - assembly_mnemonic: and - encoding: 10810419 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1056 - symbol: ADDW - name: ADDW - assembly_mnemonic: addw - encoding: 10781755 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1057 - symbol: SUBW - name: SUBW - assembly_mnemonic: subw - encoding: 1084523579 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1058 - symbol: SLLW - name: SLLW - assembly_mnemonic: sllw - encoding: 10785851 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1059 - symbol: SRLW - name: SRLW - assembly_mnemonic: srlw - encoding: 10802235 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1060 - symbol: SRAW - name: SRAW - assembly_mnemonic: sraw - encoding: 1084544059 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1061 - symbol: LB - name: LB - assembly_mnemonic: lb - encoding: 8684547 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1062 - symbol: LH - name: LH - assembly_mnemonic: lh - encoding: 8688643 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1063 - symbol: LW - name: LW - assembly_mnemonic: lw - encoding: 8692739 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1064 - symbol: LBU - name: LBU - assembly_mnemonic: lbu - encoding: 8700931 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1065 - symbol: LHU - name: LHU - assembly_mnemonic: lhu - encoding: 8705027 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1066 - symbol: LWU - name: LWU - assembly_mnemonic: lwu - encoding: 8709123 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1067 - symbol: SB - name: SB - assembly_mnemonic: sb - encoding: 10781731 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: S - assembly_format: RS2_OFFSET_RS1 - - - id: 1068 - symbol: SH - name: SH - assembly_mnemonic: sh - encoding: 10785827 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: S - assembly_format: RS2_OFFSET_RS1 - - - id: 1069 - symbol: SW - name: SW - assembly_mnemonic: sw - encoding: 10789923 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: S - assembly_format: RS2_OFFSET_RS1 - - - id: 1070 - symbol: BLT - name: BLT - assembly_mnemonic: blt - encoding: 9715811 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: B - assembly_format: RS1_RS2_TARGET - - - id: 1071 - symbol: BGE - name: BGE - assembly_mnemonic: bge - encoding: 9719907 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: B - assembly_format: RS1_RS2_TARGET - - - id: 1072 - symbol: BLTU - name: BLTU - assembly_mnemonic: bltu - encoding: 9724003 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: B - assembly_format: RS1_RS2_TARGET - - - id: 1073 - symbol: BGEU - name: BGEU - assembly_mnemonic: bgeu - encoding: 9728099 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: B - assembly_format: RS1_RS2_TARGET - - - id: 1074 - symbol: JALR - name: JALR - assembly_mnemonic: jalr - encoding: 1344615 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate, basic_block, global_symbol, external_symbol, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 4, name: IMM } - num_explicit_defs: 1 - flags: [terminator, branch, indirect_branch, produces_code] - scheduling_class: BRANCH - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1075 - symbol: FENCE - name: FENCE - assembly_mnemonic: fence - encoding: 15 - operands: - - { kinds: [immediate], immediate_predicate: UIMM4, name: PRED } - - { kinds: [immediate], immediate_predicate: UIMM4, name: SUCC } - num_explicit_defs: 0 - flags: [has_side_effects, produces_code] - scheduling_class: FENCE - encoding_category: I - assembly_format: IMM_IMM - - - id: 1076 - symbol: FENCE_I - name: FENCE_I - assembly_mnemonic: fence.i - encoding: 4111 - operands: [] - num_explicit_defs: 0 - flags: [has_side_effects, produces_code] - scheduling_class: FENCE - encoding_category: I - assembly_format: NONE - - - id: 1077 - symbol: CSRRW - name: CSRRW - assembly_mnemonic: csrrw - encoding: 1348723 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: RD_CSR_RS1 - - - id: 1078 - symbol: CSRRS - name: CSRRS - assembly_mnemonic: csrrs - encoding: 1352819 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: RD_CSR_RS1 - - - id: 1079 - symbol: CSRRC - name: CSRRC - assembly_mnemonic: csrrc - encoding: 1356915 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: RD_CSR_RS1 - - - id: 1080 - symbol: CSRRWI - name: CSRRWI - assembly_mnemonic: csrrwi - encoding: 1102963 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } - - { kinds: [immediate], immediate_predicate: UIMM5, name: ZIMM } - num_explicit_defs: 1 - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: RD_CSR_IMM - - - id: 1083 - symbol: MUL - name: MUL - assembly_mnemonic: mul - encoding: 44336179 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: MUL - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1084 - symbol: MULH - name: MULH - assembly_mnemonic: mulh - encoding: 44340275 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: MUL - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1085 - symbol: MULHSU - name: MULHSU - assembly_mnemonic: mulhsu - encoding: 44344371 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: MUL - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1086 - symbol: MULHU - name: MULHU - assembly_mnemonic: mulhu - encoding: 44348467 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: MUL - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1087 - symbol: DIV - name: DIV - assembly_mnemonic: div - encoding: 44352563 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1088 - symbol: DIVU - name: DIVU - assembly_mnemonic: divu - encoding: 44356659 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1089 - symbol: REM - name: REM - assembly_mnemonic: rem - encoding: 44360755 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1090 - symbol: REMU - name: REMU - assembly_mnemonic: remu - encoding: 44364851 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1091 - symbol: MULW - name: MULW - assembly_mnemonic: mulw - encoding: 44336187 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: MUL - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1092 - symbol: DIVW - name: DIVW - assembly_mnemonic: divw - encoding: 44352571 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1093 - symbol: DIVUW - name: DIVUW - assembly_mnemonic: divuw - encoding: 44356667 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1094 - symbol: REMW - name: REMW - assembly_mnemonic: remw - encoding: 44360763 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1095 - symbol: REMUW - name: REMUW - assembly_mnemonic: remuw - encoding: 44364859 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: DIV - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1081 - symbol: CSRRSI - name: CSRRSI - assembly_mnemonic: csrrsi - encoding: 1107059 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } - - { kinds: [immediate], immediate_predicate: UIMM5, name: ZIMM } - num_explicit_defs: 1 - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: RD_CSR_IMM - - - id: 1082 - symbol: CSRRCI - name: CSRRCI - assembly_mnemonic: csrrci - encoding: 1111155 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } - - { kinds: [immediate], immediate_predicate: UIMM5, name: ZIMM } - num_explicit_defs: 1 - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: RD_CSR_IMM - - - id: 1027 - symbol: ADD - name: ADD - assembly_mnemonic: add - encoding: 10781747 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1028 - symbol: SUB - name: SUB - assembly_mnemonic: sub - encoding: 1084523571 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1029 - symbol: LD - name: LD - assembly_mnemonic: ld - encoding: 8696835 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: RD_OFFSET_RS1 - - - id: 1030 - symbol: SD - name: SD - assembly_mnemonic: sd - encoding: 10794019 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: S - assembly_format: RS2_OFFSET_RS1 - - - id: 1031 - symbol: BEQ - name: BEQ - assembly_mnemonic: beq - encoding: 9699427 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: B - assembly_format: RS1_RS2_TARGET - - - id: 1032 - symbol: BNE - name: BNE - assembly_mnemonic: bne - encoding: 9703523 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: B - assembly_format: RS1_RS2_TARGET - - - id: 1033 - symbol: JAL - name: JAL - assembly_mnemonic: jal - encoding: 1135 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 1 - flags: [terminator, branch, produces_code] - scheduling_class: BRANCH - encoding_category: J - assembly_format: RD_TARGET - - - id: 1034 - symbol: ECALL - name: ECALL - assembly_mnemonic: ecall - encoding: 115 - operands: [] - num_explicit_defs: 0 - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: NONE - - - id: 1035 - symbol: EBREAK - name: EBREAK - assembly_mnemonic: ebreak - encoding: 1048691 - operands: [] - num_explicit_defs: 0 - flags: [has_side_effects, produces_code] - scheduling_class: SYSTEM - encoding_category: SYSTEM - assembly_format: NONE - - - id: 1036 - symbol: SLTI - name: SLTI - assembly_mnemonic: slti - encoding: 1352723 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1037 - symbol: SLTIU - name: SLTIU - assembly_mnemonic: sltiu - encoding: 1356819 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1038 - symbol: XORI - name: XORI - assembly_mnemonic: xori - encoding: 1360915 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1039 - symbol: ORI - name: ORI - assembly_mnemonic: ori - encoding: 1369107 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1040 - symbol: ANDI - name: ANDI - assembly_mnemonic: andi - encoding: 1373203 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1041 - symbol: SLLI - name: SLLI - assembly_mnemonic: slli - encoding: 1348627 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1247 - symbol: SH1ADD - name: SH1ADD - assembly_mnemonic: sh1add - encoding: 547660851 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1248 - symbol: SH2ADD - name: SH2ADD - assembly_mnemonic: sh2add - encoding: 547669043 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1249 - symbol: SH3ADD - name: SH3ADD - assembly_mnemonic: sh3add - encoding: 547677235 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1250 - symbol: SH1ADD_UW - name: SH1ADD_UW - assembly_mnemonic: sh1add.uw - encoding: 547660859 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1251 - symbol: SH2ADD_UW - name: SH2ADD_UW - assembly_mnemonic: sh2add.uw - encoding: 547669051 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1252 - symbol: SH3ADD_UW - name: SH3ADD_UW - assembly_mnemonic: sh3add.uw - encoding: 547677243 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1253 - symbol: SLLI_UW - name: SLLI_UW - assembly_mnemonic: slli.uw - encoding: 135566363 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1254 - symbol: ADD_UW - name: ADD_UW - assembly_mnemonic: add.uw - encoding: 144999483 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1255 - symbol: SEXT_B - name: SEXT_B - assembly_mnemonic: sext.b - encoding: 1615107091 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1 - - - id: 1256 - symbol: SEXT_H - name: SEXT_H - assembly_mnemonic: sext.h - encoding: 1616155667 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: I - assembly_format: RD_RS1 - - - id: 1257 - symbol: ZEXT_H_RV32 - name: ZEXT_H_RV32 - assembly_mnemonic: zext.h - encoding: 134530099 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1 - - - id: 1258 - symbol: ZEXT_H_RV64 - name: ZEXT_H_RV64 - assembly_mnemonic: zext.h - encoding: 134530107 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1 - - - id: 1259 - symbol: MIN - name: MIN - assembly_mnemonic: min - encoding: 178570291 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1260 - symbol: MINU - name: MINU - assembly_mnemonic: minu - encoding: 178574387 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1261 - symbol: MAX - name: MAX - assembly_mnemonic: max - encoding: 178578483 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1262 - symbol: MAXU - name: MAXU - assembly_mnemonic: maxu - encoding: 178582579 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code, commutable] - scheduling_class: ALU - encoding_category: R - assembly_format: RD_RS1_RS2 - - - id: 1096 - symbol: LR_W - name: LR_W - assembly_mnemonic: lr.w - encoding: 268739631 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_PAREN_RS1 - - - id: 1097 - symbol: SC_W - name: SC_W - assembly_mnemonic: sc.w - encoding: 413443119 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1098 - symbol: AMOSWAP_W - name: AMOSWAP_W - assembly_mnemonic: amoswap.w - encoding: 145007663 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1118 - symbol: FLW - name: FLW - assembly_mnemonic: flw - encoding: 8692743 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, memory_role: value, name: FRD } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: FRD_OFFSET_RS1 - - - id: 1119 - symbol: FSW - name: FSW - assembly_mnemonic: fsw - encoding: 10789927 - operands: - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, memory_role: value, name: FRS2 } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: S - assembly_format: FRS2_OFFSET_RS1 - - - id: 1120 - symbol: FMADD_S - name: FMADD_S - assembly_mnemonic: fmadd.s - encoding: 1487176771 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1121 - symbol: FMSUB_S - name: FMSUB_S - assembly_mnemonic: fmsub.s - encoding: 1487176775 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1122 - symbol: FNMSUB_S - name: FNMSUB_S - assembly_mnemonic: fnmsub.s - encoding: 1487176779 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1123 - symbol: FNMADD_S - name: FNMADD_S - assembly_mnemonic: fnmadd.s - encoding: 1487176783 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1124 - symbol: FADD_S - name: FADD_S - assembly_mnemonic: fadd.s - encoding: 10781779 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1125 - symbol: FSUB_S - name: FSUB_S - assembly_mnemonic: fsub.s - encoding: 144999507 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1126 - symbol: FMUL_S - name: FMUL_S - assembly_mnemonic: fmul.s - encoding: 279217235 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1127 - symbol: FDIV_S - name: FDIV_S - assembly_mnemonic: fdiv.s - encoding: 413434963 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_DIV - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1128 - symbol: FSQRT_S - name: FSQRT_S - assembly_mnemonic: fsqrt.s - encoding: 1476691027 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_SQRT - encoding_category: R - assembly_format: FRD_FRS1_RM - - - id: 1129 - symbol: FSGNJ_S - name: FSGNJ_S - assembly_mnemonic: fsgnj.s - encoding: 547652691 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1130 - symbol: FSGNJN_S - name: FSGNJN_S - assembly_mnemonic: fsgnjn.s - encoding: 547656787 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1131 - symbol: FSGNJX_S - name: FSGNJX_S - assembly_mnemonic: fsgnjx.s - encoding: 547660883 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1132 - symbol: FMIN_S - name: FMIN_S - assembly_mnemonic: fmin.s - encoding: 681870419 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1133 - symbol: FMAX_S - name: FMAX_S - assembly_mnemonic: fmax.s - encoding: 681874515 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1134 - symbol: FCVT_W_S - name: FCVT_W_S - assembly_mnemonic: fcvt.w.s - encoding: 3221521491 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1135 - symbol: FCVT_WU_S - name: FCVT_WU_S - assembly_mnemonic: fcvt.wu.s - encoding: 3222570067 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1136 - symbol: FCVT_L_S - name: FCVT_L_S - assembly_mnemonic: fcvt.l.s - encoding: 3223618643 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1137 - symbol: FCVT_LU_S - name: FCVT_LU_S - assembly_mnemonic: fcvt.lu.s - encoding: 3224667219 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1138 - symbol: FMV_X_W - name: FMV_X_W - assembly_mnemonic: fmv.x.w - encoding: 3758392403 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1 - - - id: 1139 - symbol: FEQ_S - name: FEQ_S - assembly_mnemonic: feq.s - encoding: 2695144531 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: RD_FRS1_FRS2 - - - id: 1140 - symbol: FLT_S - name: FLT_S - assembly_mnemonic: flt.s - encoding: 2695140435 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: RD_FRS1_FRS2 - - - id: 1141 - symbol: FLE_S - name: FLE_S - assembly_mnemonic: fle.s - encoding: 2695136339 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: RD_FRS1_FRS2 - - - id: 1142 - symbol: FCLASS_S - name: FCLASS_S - assembly_mnemonic: fclass.s - encoding: 3758396499 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1 - - - id: 1143 - symbol: FCVT_S_W - name: FCVT_S_W - assembly_mnemonic: fcvt.s.w - encoding: 3489956947 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1144 - symbol: FCVT_S_WU - name: FCVT_S_WU - assembly_mnemonic: fcvt.s.wu - encoding: 3491005523 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1145 - symbol: FCVT_S_L - name: FCVT_S_L - assembly_mnemonic: fcvt.s.l - encoding: 3492054099 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1146 - symbol: FCVT_S_LU - name: FCVT_S_LU - assembly_mnemonic: fcvt.s.lu - encoding: 3493102675 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1147 - symbol: FMV_W_X - name: FMV_W_X - assembly_mnemonic: fmv.w.x - encoding: 4026827859 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1 - - - id: 1148 - symbol: FLD - name: FLD - assembly_mnemonic: fld - encoding: 8696839 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRD } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: I - assembly_format: FRD_OFFSET_RS1 - - - id: 1149 - symbol: FSD - name: FSD - assembly_mnemonic: fsd - encoding: 10794023 - operands: - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRS2 } - - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: S - assembly_format: FRS2_OFFSET_RS1 - - - id: 1150 - symbol: FMADD_D - name: FMADD_D - assembly_mnemonic: fmadd.d - encoding: 1520731203 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1151 - symbol: FMSUB_D - name: FMSUB_D - assembly_mnemonic: fmsub.d - encoding: 1520731207 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1152 - symbol: FNMSUB_D - name: FNMSUB_D - assembly_mnemonic: fnmsub.d - encoding: 1520731211 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1153 - symbol: FNMADD_D - name: FNMADD_D - assembly_mnemonic: fnmadd.d - encoding: 1520731215 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R4 - assembly_format: FRD_FRS1_FRS2_FRS3_RM - - - id: 1154 - symbol: FADD_D - name: FADD_D - assembly_mnemonic: fadd.d - encoding: 44336211 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1155 - symbol: FSUB_D - name: FSUB_D - assembly_mnemonic: fsub.d - encoding: 178553939 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1156 - symbol: FMUL_D - name: FMUL_D - assembly_mnemonic: fmul.d - encoding: 312771667 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_MUL - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1157 - symbol: FDIV_D - name: FDIV_D - assembly_mnemonic: fdiv.d - encoding: 446989395 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_DIV - encoding_category: R - assembly_format: FRD_FRS1_FRS2_RM - - - id: 1158 - symbol: FSQRT_D - name: FSQRT_D - assembly_mnemonic: fsqrt.d - encoding: 1510245459 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_SQRT - encoding_category: R - assembly_format: FRD_FRS1_RM - - - id: 1159 - symbol: FSGNJ_D - name: FSGNJ_D - assembly_mnemonic: fsgnj.d - encoding: 581207123 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1160 - symbol: FSGNJN_D - name: FSGNJN_D - assembly_mnemonic: fsgnjn.d - encoding: 581211219 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1161 - symbol: FSGNJX_D - name: FSGNJX_D - assembly_mnemonic: fsgnjx.d - encoding: 581215315 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1162 - symbol: FMIN_D - name: FMIN_D - assembly_mnemonic: fmin.d - encoding: 715424851 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1163 - symbol: FMAX_D - name: FMAX_D - assembly_mnemonic: fmax.d - encoding: 715428947 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: FRD_FRS1_FRS2 - - - id: 1164 - symbol: FCVT_W_D - name: FCVT_W_D - assembly_mnemonic: fcvt.w.d - encoding: 3255075923 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1165 - symbol: FCVT_WU_D - name: FCVT_WU_D - assembly_mnemonic: fcvt.wu.d - encoding: 3256124499 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1166 - symbol: FCVT_L_D - name: FCVT_L_D - assembly_mnemonic: fcvt.l.d - encoding: 3257173075 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1167 - symbol: FCVT_LU_D - name: FCVT_LU_D - assembly_mnemonic: fcvt.lu.d - encoding: 3258221651 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1_RM - - - id: 1168 - symbol: FMV_X_D - name: FMV_X_D - assembly_mnemonic: fmv.x.d - encoding: 3791946835 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1 - - - id: 1169 - symbol: FEQ_D - name: FEQ_D - assembly_mnemonic: feq.d - encoding: 2728698963 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: RD_FRS1_FRS2 - - - id: 1170 - symbol: FLT_D - name: FLT_D - assembly_mnemonic: flt.d - encoding: 2728694867 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: RD_FRS1_FRS2 - - - id: 1171 - symbol: FLE_D - name: FLE_D - assembly_mnemonic: fle.d - encoding: 2728690771 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } - num_explicit_defs: 1 - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_ADD - encoding_category: R - assembly_format: RD_FRS1_FRS2 - - - id: 1172 - symbol: FCLASS_D - name: FCLASS_D - assembly_mnemonic: fclass.d - encoding: 3791950931 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: RD_FRS1 - - - id: 1173 - symbol: FCVT_D_W - name: FCVT_D_W - assembly_mnemonic: fcvt.d.w - encoding: 3523511379 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1174 - symbol: FCVT_D_WU - name: FCVT_D_WU - assembly_mnemonic: fcvt.d.wu - encoding: 3524559955 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1175 - symbol: FCVT_D_L - name: FCVT_D_L - assembly_mnemonic: fcvt.d.l - encoding: 3525608531 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1176 - symbol: FCVT_D_LU - name: FCVT_D_LU - assembly_mnemonic: fcvt.d.lu - encoding: 3526657107 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1_RM - - - id: 1177 - symbol: FMV_D_X - name: FMV_D_X - assembly_mnemonic: fmv.d.x - encoding: 4060382291 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_RS1 - - - id: 1178 - symbol: FCVT_S_D - name: FCVT_S_D - assembly_mnemonic: fcvt.s.d - encoding: 1075086419 - operands: - - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_FRS1_RM - - - id: 1180 - symbol: C_ADDI4SPN - name: C_ADDI4SPN - assembly_mnemonic: c.addi4spn - encoding: 2048 - operands: - - { kinds: [register], role: def, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: C_UIMM10_NZ_A4, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM_SP - - - id: 1181 - symbol: C_FLD - name: C_FLD - assembly_mnemonic: c.fld - encoding: 9344 - operands: - - { kinds: [register], role: def, register_class: FPR64C, register_bank: FPR, memory_role: value, name: FRD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: C - assembly_format: FRD_OFFSET_RS1 - - - id: 1182 - symbol: C_LW - name: C_LW - assembly_mnemonic: c.lw - encoding: 17536 - operands: - - { kinds: [register], role: def, register_class: GPRC, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate], immediate_predicate: C_UIMM7_A4, name: IMM } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: C - assembly_format: RD_OFFSET_RS1 - - - id: 1183 - symbol: C_LD - name: C_LD - assembly_mnemonic: c.ld - encoding: 25728 - operands: - - { kinds: [register], role: def, register_class: GPRC, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: LOAD - encoding_category: C - assembly_format: RD_OFFSET_RS1 - - - id: 1184 - symbol: C_FSD - name: C_FSD - assembly_mnemonic: c.fsd - encoding: 42120 - operands: - - { kinds: [register], role: use, register_class: FPR64C, register_bank: FPR, memory_role: value, name: FRS2 } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: C - assembly_format: FRS2_OFFSET_RS1 - - - id: 1185 - symbol: C_SW - name: C_SW - assembly_mnemonic: c.sw - encoding: 50312 - operands: - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate], immediate_predicate: C_UIMM7_A4, name: IMM } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: C - assembly_format: RS2_OFFSET_RS1 - - - id: 1186 - symbol: C_SD - name: C_SD - assembly_mnemonic: c.sd - encoding: 58504 - operands: - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } - - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } - num_explicit_defs: 0 - flags: [may_store, produces_code] - scheduling_class: STORE - encoding_category: C - assembly_format: RS2_OFFSET_RS1 - - - id: 1187 - symbol: C_ADDI - name: C_ADDI - assembly_mnemonic: c.addi - encoding: 1029 - operands: - - { kinds: [register], role: def_use, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1188 - symbol: C_ADDIW - name: C_ADDIW - assembly_mnemonic: c.addiw - encoding: 9221 - operands: - - { kinds: [register], role: def_use, register_class: GPR_NX0, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1189 - symbol: C_LI - name: C_LI - assembly_mnemonic: c.li - encoding: 17413 - operands: - - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1190 - symbol: C_ADDI16SP - name: C_ADDI16SP - assembly_mnemonic: c.addi16sp - encoding: 24897 - operands: - - { kinds: [immediate], immediate_predicate: C_SIMM10_A16_NZ, name: IMM } - num_explicit_defs: 0 - flags: [produces_code] - implicit_defs: [{ register: X2 }] - implicit_uses: [{ register: X2 }] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: IMM_SP - - - id: 1191 - symbol: C_LUI - name: C_LUI - assembly_mnemonic: c.lui - encoding: 25605 - operands: - - { kinds: [register], role: def, register_class: GPR_NX0_NX2, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: C_SIMM6_NZ, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1192 - symbol: C_SRLI - name: C_SRLI - assembly_mnemonic: c.srli - encoding: 32773 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1193 - symbol: C_SRAI - name: C_SRAI - assembly_mnemonic: c.srai - encoding: 33797 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1194 - symbol: C_ANDI - name: C_ANDI - assembly_mnemonic: c.andi - encoding: 34821 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1195 - symbol: C_SUB - name: C_SUB - assembly_mnemonic: c.sub - encoding: 35845 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1196 - symbol: C_XOR - name: C_XOR - assembly_mnemonic: c.xor - encoding: 35877 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1197 - symbol: C_OR - name: C_OR - assembly_mnemonic: c.or - encoding: 35909 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1198 - symbol: C_AND - name: C_AND - assembly_mnemonic: c.and - encoding: 35941 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1199 - symbol: C_SUBW - name: C_SUBW - assembly_mnemonic: c.subw - encoding: 39941 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1200 - symbol: C_ADDW - name: C_ADDW - assembly_mnemonic: c.addw - encoding: 39973 - operands: - - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1201 - symbol: C_J - name: C_J - assembly_mnemonic: c.j - encoding: 40961 - operands: - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: TARGET - - - id: 1202 - symbol: C_BEQZ - name: C_BEQZ - assembly_mnemonic: c.beqz - encoding: 49153 - operands: - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS1 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RS1_TARGET - - - id: 1203 - symbol: C_BNEZ - name: C_BNEZ - assembly_mnemonic: c.bnez - encoding: 57345 - operands: - - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS1 } - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [terminator, branch, produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RS1_TARGET - - - id: 1204 - symbol: C_SLLI - name: C_SLLI - assembly_mnemonic: c.slli - encoding: 1030 - operands: - - { kinds: [register], role: def_use, register_class: GPR_NX0, register_bank: GPR, name: RD } - - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_IMM - - - id: 1205 - symbol: C_FLDSP - name: C_FLDSP - assembly_mnemonic: c.fldsp - encoding: 9250 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRD } - - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } - num_explicit_defs: 1 - flags: [may_load, produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: LOAD - encoding_category: C - assembly_format: FRD_OFFSET_SP - - - id: 1206 - symbol: C_LWSP - name: C_LWSP - assembly_mnemonic: c.lwsp - encoding: 17442 - operands: - - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [immediate], immediate_predicate: C_UIMM8_A4, name: IMM } - num_explicit_defs: 1 - flags: [may_load, produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: LOAD - encoding_category: C - assembly_format: RD_OFFSET_SP - - - id: 1207 - symbol: C_LDSP - name: C_LDSP - assembly_mnemonic: c.ldsp - encoding: 25634 - operands: - - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } - num_explicit_defs: 1 - flags: [may_load, produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: LOAD - encoding_category: C - assembly_format: RD_OFFSET_SP - - - id: 1208 - symbol: C_JR - name: C_JR - assembly_mnemonic: c.jr - encoding: 33794 - operands: - - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS1 } - num_explicit_defs: 0 - flags: [terminator, branch, indirect_branch, produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RS1 - - - id: 1209 - symbol: C_MV - name: C_MV - assembly_mnemonic: c.mv - encoding: 33830 - operands: - - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1210 - symbol: C_EBREAK - name: C_EBREAK - assembly_mnemonic: c.ebreak - encoding: 36866 - operands: [] - num_explicit_defs: 0 - flags: [has_side_effects, produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: NONE - - - id: 1211 - symbol: C_JALR - name: C_JALR - assembly_mnemonic: c.jalr - encoding: 37890 - operands: - - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS1 } - num_explicit_defs: 0 - flags: [terminator, branch, indirect_branch, produces_code] - implicit_defs: [{ register: X1 }] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RS1 - - - id: 1212 - symbol: C_ADD - name: C_ADD - assembly_mnemonic: c.add - encoding: 37926 - operands: - - { kinds: [register], role: def_use, register_class: GPR_NX0, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS2 } - num_explicit_defs: 1 - flags: [produces_code] - scheduling_class: COMPRESSED - encoding_category: C - assembly_format: RD_RS2 - - - id: 1213 - symbol: C_FSDSP - name: C_FSDSP - assembly_mnemonic: c.fsdsp - encoding: 42018 - operands: - - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRS2 } - - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } - num_explicit_defs: 0 - flags: [may_store, produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: STORE - encoding_category: C - assembly_format: FRS2_OFFSET_SP - - - id: 1214 - symbol: C_SWSP - name: C_SWSP - assembly_mnemonic: c.swsp - encoding: 50210 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [immediate], immediate_predicate: C_UIMM8_A4, name: IMM } - num_explicit_defs: 0 - flags: [may_store, produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: STORE - encoding_category: C - assembly_format: RS2_OFFSET_SP - - - id: 1215 - symbol: C_SDSP - name: C_SDSP - assembly_mnemonic: c.sdsp - encoding: 58402 - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } - num_explicit_defs: 0 - flags: [may_store, produces_code] - implicit_uses: [{ register: X2 }] - scheduling_class: STORE - encoding_category: C - assembly_format: RS2_OFFSET_SP - - - id: 1179 - symbol: FCVT_D_S - name: FCVT_D_S - assembly_mnemonic: fcvt.d.s - encoding: 1107592275 - operands: - - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } - - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } - - { kinds: [immediate], immediate_predicate: RM, name: RM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [may_raise_fp_exception, produces_code] - scheduling_class: FP_CONVERT - encoding_category: R - assembly_format: FRD_FRS1_RM - - - id: 1099 - symbol: AMOADD_W - name: AMOADD_W - assembly_mnemonic: amoadd.w - encoding: 10789935 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1100 - symbol: AMOXOR_W - name: AMOXOR_W - assembly_mnemonic: amoxor.w - encoding: 547660847 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1101 - symbol: AMOAND_W - name: AMOAND_W - assembly_mnemonic: amoand.w - encoding: 1621402671 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1102 - symbol: AMOOR_W - name: AMOOR_W - assembly_mnemonic: amoor.w - encoding: 1084531759 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1103 - symbol: AMOMIN_W - name: AMOMIN_W - assembly_mnemonic: amomin.w - encoding: 2158273583 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1104 - symbol: AMOMAX_W - name: AMOMAX_W - assembly_mnemonic: amomax.w - encoding: 2695144495 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1105 - symbol: AMOMINU_W - name: AMOMINU_W - assembly_mnemonic: amominu.w - encoding: 3232015407 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1106 - symbol: AMOMAXU_W - name: AMOMAXU_W - assembly_mnemonic: amomaxu.w - encoding: 3768886319 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1107 - symbol: LR_D - name: LR_D - assembly_mnemonic: lr.d - encoding: 268743727 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_PAREN_RS1 - - - id: 1108 - symbol: SC_D - name: SC_D - assembly_mnemonic: sc.d - encoding: 413447215 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1109 - symbol: AMOSWAP_D - name: AMOSWAP_D - assembly_mnemonic: amoswap.d - encoding: 145011759 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1110 - symbol: AMOADD_D - name: AMOADD_D - assembly_mnemonic: amoadd.d - encoding: 10794031 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1111 - symbol: AMOXOR_D - name: AMOXOR_D - assembly_mnemonic: amoxor.d - encoding: 547664943 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1112 - symbol: AMOAND_D - name: AMOAND_D - assembly_mnemonic: amoand.d - encoding: 1621406767 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1113 - symbol: AMOOR_D - name: AMOOR_D - assembly_mnemonic: amoor.d - encoding: 1084535855 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1114 - symbol: AMOMIN_D - name: AMOMIN_D - assembly_mnemonic: amomin.d - encoding: 2158277679 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1115 - symbol: AMOMAX_D - name: AMOMAX_D - assembly_mnemonic: amomax.d - encoding: 2695148591 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1116 - symbol: AMOMINU_D - name: AMOMINU_D - assembly_mnemonic: amominu.d - encoding: 3232019503 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1117 - symbol: AMOMAXU_D - name: AMOMAXU_D - assembly_mnemonic: amomaxu.d - encoding: 3768890415 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } - num_explicit_defs: 1 - flags: [may_load, may_store, produces_code] - scheduling_class: ATOMIC - encoding_category: AMO - assembly_format: RD_RS2_PAREN_RS1 - - - id: 1229 - symbol: G_SLLW - name: G_SLLW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1230 - symbol: G_SRAW - name: G_SRAW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1231 - symbol: G_DIVW - name: G_DIVW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1232 - symbol: G_CLZW - name: G_CLZW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1233 - symbol: G_CTZW - name: G_CTZW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1234 - symbol: G_FCVT_W_RV64 - name: G_FCVT_W_RV64 - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 1 } - - { kinds: [immediate] } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1235 - symbol: G_FCLASS - name: G_FCLASS - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 1 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1236 - symbol: G_ROLW - name: G_ROLW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1237 - symbol: G_SRLW - name: G_SRLW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1238 - symbol: G_DIVUW - name: G_DIVUW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1239 - symbol: G_REMUW - name: G_REMUW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1240 - symbol: G_RORW - name: G_RORW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1241 - symbol: G_BREV8 - name: G_BREV8 - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1242 - symbol: G_FCVT_WU_RV64 - name: G_FCVT_WU_RV64 - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 1 } - - { kinds: [immediate] } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1243 - symbol: G_CLSW - name: G_CLSW - operands: - - { kinds: [register], role: def, type_index: 0 } - - { kinds: [register], role: use, type_index: 0 } - num_explicit_defs: 1 - flags: [generic, pseudo, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1244 - symbol: Select_GPR_Using_CC_GPR - name: Select_GPR_Using_CC_GPR - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } - - { kinds: [immediate] } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } - num_explicit_defs: 1 - flags: [pseudo, produces_code, allowed_pre_legalizer] - owner: instruction_select - deadline: selected - - - id: 1245 - symbol: ReadFFLAGS - name: ReadFFLAGS - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR } - num_explicit_defs: 1 - implicit_uses: [{ register: FFLAGS }] - flags: [pseudo, produces_code, allowed_pre_legalizer, has_side_effects] - owner: post_ra_expansion - deadline: post_ra_finalized - - - id: 1246 - symbol: WriteFFLAGS - name: WriteFFLAGS - operands: - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } - num_explicit_defs: 0 - implicit_defs: [{ register: FFLAGS }] - flags: [pseudo, produces_code, allowed_pre_legalizer, has_side_effects] - owner: post_ra_expansion - deadline: post_ra_finalized - - - id: 1217 - symbol: PseudoLOAD_STACK_ARG - name: PseudoLOAD_STACK_ARG - operands: - - { kinds: [register], role: def, memory_role: value } - - { kinds: [frame_index] } - - { kinds: [immediate, integer_immediate] } - - { kinds: [immediate] } - num_explicit_defs: 1 - flags: [pseudo, produces_code, allowed_pre_legalizer, may_load] - owner: instruction_select - deadline: selected - - - id: 1218 - symbol: PseudoSTORE_STACK_ARG - name: PseudoSTORE_STACK_ARG - operands: - - { kinds: [register], role: use, memory_role: value } - - { kinds: [frame_index] } - - { kinds: [immediate, integer_immediate] } - - { kinds: [immediate] } - num_explicit_defs: 0 - flags: [pseudo, produces_code, allowed_pre_legalizer, may_store] - owner: instruction_select - deadline: selected - - - id: 1219 - symbol: PseudoBYVAL_COPY - name: PseudoBYVAL_COPY - operands: - - { kinds: [register], role: def } - - { kinds: [register], role: use, memory_role: address } - - { kinds: [frame_index] } - - { kinds: [immediate, integer_immediate] } - - { kinds: [immediate, integer_immediate] } - num_explicit_defs: 1 - flags: [pseudo, produces_code, allowed_pre_legalizer, may_load, may_store] - owner: instruction_select - deadline: selected - - - id: 1220 - symbol: ADJCALLSTACKDOWN - name: ADJCALLSTACKDOWN - operands: - - { kinds: [immediate, integer_immediate] } - - { kinds: [immediate, integer_immediate] } - num_explicit_defs: 0 - implicit_defs: [{ register: X2 }] - implicit_uses: [{ register: X2 }] - flags: [pseudo, allowed_pre_legalizer, has_side_effects] - owner: prologue_epilogue_insertion - deadline: frame_finalized - - - id: 1221 - symbol: ADJCALLSTACKUP - name: ADJCALLSTACKUP - operands: - - { kinds: [immediate, integer_immediate] } - - { kinds: [immediate, integer_immediate] } - num_explicit_defs: 0 - implicit_defs: [{ register: X2 }] - implicit_uses: [{ register: X2 }] - flags: [pseudo, allowed_pre_legalizer, has_side_effects] - owner: prologue_epilogue_insertion - deadline: frame_finalized - - - id: 1222 - symbol: PseudoCALL - name: PseudoCALL - operands: - - { kinds: [global_symbol, external_symbol, register], role: use, allowed_target_flags: 1 } - - { kinds: [register_mask], optional: true } - num_explicit_defs: 0 - implicit_defs: [{ register: X1 }] - allow_extra_implicit_operands: true - flags: [pseudo, produces_code, allowed_pre_legalizer, call, may_load, may_store, has_side_effects, not_duplicable, unmodeled_side_effects] - size: 8 - owner: post_ra_expansion - deadline: post_ra_finalized - - - id: 1223 - symbol: PseudoTAIL - name: PseudoTAIL - operands: - - { kinds: [global_symbol, external_symbol, register], role: use, allowed_target_flags: 1 } - - { kinds: [register_mask], optional: true } - num_explicit_defs: 0 - allow_extra_implicit_operands: true - flags: [pseudo, produces_code, allowed_pre_legalizer, terminator, branch, call, barrier, may_load, may_store, has_side_effects, not_duplicable, unmodeled_side_effects] - size: 8 - owner: post_ra_expansion - deadline: post_ra_finalized - - - id: 1224 - symbol: PseudoRET - name: PseudoRET - operands: [] - num_explicit_defs: 0 - allow_extra_implicit_operands: true - flags: [pseudo, produces_code, allowed_pre_legalizer, terminator, return, barrier] - size: 4 - owner: post_ra_expansion - deadline: post_ra_finalized - - - id: 1225 - symbol: JALR_CALL - name: JALR_CALL - assembly_mnemonic: jalr - encoding: 1344615 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 4, name: IMM } - - { kinds: [register_mask] } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [call, may_load, may_store, has_side_effects, produces_code, not_duplicable, unmodeled_side_effects] - scheduling_class: BRANCH - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1226 - symbol: JALR_TAIL - name: JALR_TAIL - assembly_mnemonic: jalr - encoding: 1344615 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 4, name: IMM } - - { kinds: [register_mask] } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [terminator, branch, indirect_branch, call, barrier, may_load, may_store, has_side_effects, produces_code, not_duplicable, unmodeled_side_effects] - scheduling_class: BRANCH - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1227 - symbol: JALR_RET - name: JALR_RET - assembly_mnemonic: jalr - encoding: 1344615 - operands: - - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } - - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } - - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } - num_explicit_defs: 1 - allow_extra_implicit_operands: true - flags: [terminator, return, barrier, produces_code] - scheduling_class: BRANCH - encoding_category: I - assembly_format: RD_RS1_IMM - - - id: 1228 - symbol: PseudoBR - name: PseudoBR - operands: - - { kinds: [basic_block], name: TARGET } - num_explicit_defs: 0 - flags: [pseudo, produces_code, allowed_pre_legalizer, terminator, branch, barrier] - size: 4 - owner: post_ra_expansion - deadline: post_ra_finalized diff --git a/backend/lib/Target/RISCV/RISCVCallingConv.rccdesc b/backend/lib/Target/RISCV/RISCVCallingConv.rccdesc new file mode 100644 index 0000000..b222023 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVCallingConv.rccdesc @@ -0,0 +1,33 @@ +calling_conventions: + - + id: 2 + symbol: LP64 + name: lp64 + integer_register_class: GPR + floating_register_class: FPR64 + integer_argument_registers: [X10, X11, X12, X13, X14, X15, X16, X17] + floating_argument_registers: [] + integer_return_registers: [X10, X11] + floating_return_registers: [] + preserved_mask: CSR_ILP32_LP64 + stack_alignment_bytes: 16 + stack_argument_alignment_bytes: 16 + shadow_space_bytes: 0 + supports_varargs: true + supports_tail_calls: true + - + id: 1 + symbol: LP64D + name: lp64d + integer_register_class: GPR + floating_register_class: FPR64 + integer_argument_registers: [X10, X11, X12, X13, X14, X15, X16, X17] + floating_argument_registers: [F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F16_D, F17_D] + integer_return_registers: [X10, X11] + floating_return_registers: [F10_D, F11_D] + preserved_mask: CSR_ILP32D_LP64D + stack_alignment_bytes: 16 + stack_argument_alignment_bytes: 16 + shadow_space_bytes: 0 + supports_varargs: true + supports_tail_calls: true diff --git a/backend/lib/Target/RISCV/RISCVGISel.rccdesc b/backend/lib/Target/RISCV/RISCVGISel.rccdesc new file mode 100644 index 0000000..97ed3d6 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVGISel.rccdesc @@ -0,0 +1,157 @@ +selection_rules: + - + id: select_g_sllw + priority: 100 + match: + opcode: G_SLLW + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + - { index: 2, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + - { index: 2, bank: GPR } + apply: { opcode: SLLW } + - + id: select_g_sraw + priority: 100 + match: + opcode: G_SRAW + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + - { index: 2, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + - { index: 2, bank: GPR } + apply: { opcode: SRAW } + - + id: select_g_srlw + priority: 100 + match: + opcode: G_SRLW + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + - { index: 2, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + - { index: 2, bank: GPR } + apply: { opcode: SRLW } + - + id: select_g_divw + priority: 100 + match: + opcode: G_DIVW + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + - { index: 2, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + - { index: 2, bank: GPR } + apply: { opcode: DIVW } + - + id: select_g_divuw + priority: 100 + match: + opcode: G_DIVUW + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + - { index: 2, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + - { index: 2, bank: GPR } + apply: { opcode: DIVUW } + - + id: select_g_remuw + priority: 100 + match: + opcode: G_REMUW + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + - { index: 2, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + - { index: 2, bank: GPR } + apply: { opcode: REMUW } + - + id: select_g_fcvt_w_rv64_s32 + priority: 100 + match: + opcode: G_FCVT_W_RV64 + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 32 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: FPR } + apply: { opcode: FCVT_W_S } + - + id: select_g_fcvt_w_rv64_s64 + priority: 100 + match: + opcode: G_FCVT_W_RV64 + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: FPR } + apply: { opcode: FCVT_W_D } + - + id: select_g_fcvt_wu_rv64_s32 + priority: 100 + match: + opcode: G_FCVT_WU_RV64 + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 32 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: FPR } + apply: { opcode: FCVT_WU_S } + - + id: select_g_fcvt_wu_rv64_s64 + priority: 100 + match: + opcode: G_FCVT_WU_RV64 + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: FPR } + apply: { opcode: FCVT_WU_D } + - + id: select_g_fclass_s32 + priority: 100 + match: + opcode: G_FCLASS + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 32 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: FPR } + apply: { opcode: FCLASS_S } + - + id: select_g_fclass_s64 + priority: 100 + match: + opcode: G_FCLASS + result_type: { kind: scalar, bits: 64 } + operand_types: + - { index: 1, kind: scalar, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: FPR } + apply: { opcode: FCLASS_D } diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoA.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoA.rccdesc new file mode 100644 index 0000000..c954f8e --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoA.rccdesc @@ -0,0 +1,329 @@ +instructions: + - + id: 1096 + symbol: LR_W + name: LR_W + assembly_mnemonic: lr.w + encoding: 268739631 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_PAREN_RS1 + - + id: 1097 + symbol: SC_W + name: SC_W + assembly_mnemonic: sc.w + encoding: 413443119 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1098 + symbol: AMOSWAP_W + name: AMOSWAP_W + assembly_mnemonic: amoswap.w + encoding: 145007663 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1099 + symbol: AMOADD_W + name: AMOADD_W + assembly_mnemonic: amoadd.w + encoding: 10789935 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1100 + symbol: AMOXOR_W + name: AMOXOR_W + assembly_mnemonic: amoxor.w + encoding: 547660847 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1101 + symbol: AMOAND_W + name: AMOAND_W + assembly_mnemonic: amoand.w + encoding: 1621402671 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1102 + symbol: AMOOR_W + name: AMOOR_W + assembly_mnemonic: amoor.w + encoding: 1084531759 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1103 + symbol: AMOMIN_W + name: AMOMIN_W + assembly_mnemonic: amomin.w + encoding: 2158273583 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1104 + symbol: AMOMAX_W + name: AMOMAX_W + assembly_mnemonic: amomax.w + encoding: 2695144495 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1105 + symbol: AMOMINU_W + name: AMOMINU_W + assembly_mnemonic: amominu.w + encoding: 3232015407 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1106 + symbol: AMOMAXU_W + name: AMOMAXU_W + assembly_mnemonic: amomaxu.w + encoding: 3768886319 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1107 + symbol: LR_D + name: LR_D + assembly_mnemonic: lr.d + encoding: 268743727 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_PAREN_RS1 + - + id: 1108 + symbol: SC_D + name: SC_D + assembly_mnemonic: sc.d + encoding: 413447215 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1109 + symbol: AMOSWAP_D + name: AMOSWAP_D + assembly_mnemonic: amoswap.d + encoding: 145011759 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1110 + symbol: AMOADD_D + name: AMOADD_D + assembly_mnemonic: amoadd.d + encoding: 10794031 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1111 + symbol: AMOXOR_D + name: AMOXOR_D + assembly_mnemonic: amoxor.d + encoding: 547664943 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1112 + symbol: AMOAND_D + name: AMOAND_D + assembly_mnemonic: amoand.d + encoding: 1621406767 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1113 + symbol: AMOOR_D + name: AMOOR_D + assembly_mnemonic: amoor.d + encoding: 1084535855 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1114 + symbol: AMOMIN_D + name: AMOMIN_D + assembly_mnemonic: amomin.d + encoding: 2158277679 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1115 + symbol: AMOMAX_D + name: AMOMAX_D + assembly_mnemonic: amomax.d + encoding: 2695148591 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1116 + symbol: AMOMINU_D + name: AMOMINU_D + assembly_mnemonic: amominu.d + encoding: 3232019503 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 + - + id: 1117 + symbol: AMOMAXU_D + name: AMOMAXU_D + assembly_mnemonic: amomaxu.d + encoding: 3768890415 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + num_explicit_defs: 1 + flags: [may_load, may_store, produces_code] + scheduling_class: ATOMIC + encoding_category: AMO + assembly_format: RD_RS2_PAREN_RS1 diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoBase.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoBase.rccdesc new file mode 100644 index 0000000..e1e84d0 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoBase.rccdesc @@ -0,0 +1,100 @@ +named_operands: + - { id: 1, symbol: RD, name: rd } + - { id: 2, symbol: RS1, name: rs1 } + - { id: 3, symbol: RS2, name: rs2 } + - { id: 4, symbol: IMM, name: imm } + - { id: 5, symbol: TARGET, name: target } + - { id: 6, symbol: CSR, name: csr } + - { id: 7, symbol: ZIMM, name: zimm } + - { id: 8, symbol: PRED, name: pred } + - { id: 9, symbol: SUCC, name: succ } + - { id: 10, symbol: FRD, name: frd } + - { id: 11, symbol: FRS1, name: frs1 } + - { id: 12, symbol: FRS2, name: frs2 } + - { id: 13, symbol: FRS3, name: frs3 } + - { id: 14, symbol: RM, name: rm } + +immediate_predicates: + - { id: 1, symbol: SIMM12, name: simm12, kind: signed, bits: 12 } + - { id: 2, symbol: UIMM20, name: uimm20, kind: unsigned, bits: 20 } + - { id: 3, symbol: UIMM5, name: uimm5, kind: unsigned, bits: 5 } + - { id: 4, symbol: UIMM6, name: uimm6, kind: unsigned, bits: 6 } + - { id: 5, symbol: UIMM12, name: uimm12, kind: unsigned, bits: 12 } + - { id: 6, symbol: UIMM4, name: uimm4, kind: unsigned, bits: 4 } + - { id: 7, symbol: RM, name: rm, kind: unsigned, bits: 3, allowed_values: [0, 1, 2, 3, 4, 7] } + - { id: 8, symbol: C_UIMM10_NZ_A4, name: c-uimm10-nz-a4, kind: unsigned, bits: 10, alignment: 4, nonzero: true } + - { id: 9, symbol: C_UIMM7_A4, name: c-uimm7-a4, kind: unsigned, bits: 7, alignment: 4 } + - { id: 10, symbol: C_UIMM8_A8, name: c-uimm8-a8, kind: unsigned, bits: 8, alignment: 8 } + - { id: 11, symbol: C_UIMM8_A4, name: c-uimm8-a4, kind: unsigned, bits: 8, alignment: 4 } + - { id: 12, symbol: C_UIMM9_A8, name: c-uimm9-a8, kind: unsigned, bits: 9, alignment: 8 } + - { id: 13, symbol: C_SIMM6, name: c-simm6, kind: signed, bits: 6 } + - { id: 14, symbol: C_SIMM6_NZ, name: c-simm6-nz, kind: signed, bits: 6, nonzero: true } + - { id: 15, symbol: C_SIMM9_A2, name: c-simm9-a2, kind: signed, bits: 9, alignment: 2 } + - { id: 16, symbol: C_SIMM12_A2, name: c-simm12-a2, kind: signed, bits: 12, alignment: 2 } + - { id: 17, symbol: C_SIMM10_A16_NZ, name: c-simm10-a16-nz, kind: signed, bits: 10, alignment: 16, nonzero: true } + +scheduling_classes: + - { id: 1, symbol: ALU, name: alu, micro_ops: 1, latency: 1 } + - { id: 2, symbol: LOAD, name: load, micro_ops: 1, latency: 3 } + - { id: 3, symbol: STORE, name: store, micro_ops: 1, latency: 1 } + - { id: 4, symbol: BRANCH, name: branch, micro_ops: 1, latency: 1 } + - { id: 5, symbol: SYSTEM, name: system, micro_ops: 1, latency: 1 } + - { id: 6, symbol: MUL, name: mul, micro_ops: 1, latency: 3 } + - { id: 7, symbol: DIV, name: div, micro_ops: 1, latency: 20 } + - { id: 8, symbol: FENCE, name: fence, micro_ops: 1, latency: 1 } + - { id: 9, symbol: ATOMIC, name: atomic, micro_ops: 1, latency: 4 } + - { id: 10, symbol: FP_ADD, name: fp-add, micro_ops: 1, latency: 4 } + - { id: 11, symbol: FP_MUL, name: fp-mul, micro_ops: 1, latency: 4 } + - { id: 12, symbol: FP_DIV, name: fp-div, micro_ops: 1, latency: 20 } + - { id: 13, symbol: FP_SQRT, name: fp-sqrt, micro_ops: 1, latency: 20 } + - { id: 14, symbol: FP_CONVERT, name: fp-convert, micro_ops: 1, latency: 4 } + - { id: 15, symbol: COMPRESSED, name: compressed, micro_ops: 1, latency: 1 } + +encoding_categories: + - { id: 1, symbol: R, name: r, size_bytes: 4 } + - { id: 2, symbol: I, name: i, size_bytes: 4 } + - { id: 3, symbol: S, name: s, size_bytes: 4 } + - { id: 4, symbol: B, name: b, size_bytes: 4 } + - { id: 5, symbol: U, name: u, size_bytes: 4 } + - { id: 6, symbol: J, name: j, size_bytes: 4 } + - { id: 7, symbol: SYSTEM, name: system, size_bytes: 4 } + - { id: 8, symbol: AMO, name: amo, size_bytes: 4 } + - { id: 9, symbol: R4, name: r4, size_bytes: 4 } + - { id: 10, symbol: C, name: c, size_bytes: 2 } + +assembly_formats: + - { id: 1, symbol: RD_IMM, name: rd-imm } + - { id: 2, symbol: RD_RS1_IMM, name: rd-rs1-imm } + - { id: 3, symbol: RD_RS1_RS2, name: rd-rs1-rs2 } + - { id: 4, symbol: RD_OFFSET_RS1, name: rd-offset-rs1 } + - { id: 5, symbol: RS2_OFFSET_RS1, name: rs2-offset-rs1 } + - { id: 6, symbol: RS1_RS2_TARGET, name: rs1-rs2-target } + - { id: 7, symbol: RD_TARGET, name: rd-target } + - { id: 8, symbol: NONE, name: none } + - { id: 9, symbol: IMM_IMM, name: imm-imm } + - { id: 10, symbol: RD_CSR_RS1, name: rd-csr-rs1 } + - { id: 11, symbol: RD_CSR_IMM, name: rd-csr-imm } + - { id: 12, symbol: RD_PAREN_RS1, name: rd-paren-rs1 } + - { id: 13, symbol: RD_RS2_PAREN_RS1, name: rd-rs2-paren-rs1 } + - { id: 14, symbol: FRD_OFFSET_RS1, name: frd-offset-rs1 } + - { id: 15, symbol: FRS2_OFFSET_RS1, name: frs2-offset-rs1 } + - { id: 16, symbol: FRD_FRS1_FRS2_RM, name: frd-frs1-frs2-rm } + - { id: 17, symbol: FRD_FRS1_FRS2_FRS3_RM, name: frd-frs1-frs2-frs3-rm } + - { id: 18, symbol: FRD_FRS1_RM, name: frd-frs1-rm } + - { id: 19, symbol: FRD_FRS1_FRS2, name: frd-frs1-frs2 } + - { id: 20, symbol: RD_FRS1_RM, name: rd-frs1-rm } + - { id: 21, symbol: RD_FRS1, name: rd-frs1 } + - { id: 22, symbol: RD_FRS1_FRS2, name: rd-frs1-frs2 } + - { id: 23, symbol: FRD_RS1_RM, name: frd-rs1-rm } + - { id: 24, symbol: FRD_RS1, name: frd-rs1 } + - { id: 25, symbol: TARGET, name: target } + - { id: 26, symbol: RS1_TARGET, name: rs1-target } + - { id: 27, symbol: RS1, name: rs1 } + - { id: 28, symbol: RD_RS2, name: rd-rs2 } + - { id: 29, symbol: IMM_SP, name: imm-sp } + - { id: 30, symbol: RD_IMM_SP, name: rd-imm-sp } + - { id: 31, symbol: RD_OFFSET_SP, name: rd-offset-sp } + - { id: 32, symbol: RS2_OFFSET_SP, name: rs2-offset-sp } + - { id: 33, symbol: FRD_OFFSET_SP, name: frd-offset-sp } + - { id: 34, symbol: FRS2_OFFSET_SP, name: frs2-offset-sp } + - { id: 35, symbol: RD_RS1, name: rd-rs1 } diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoC.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoC.rccdesc new file mode 100644 index 0000000..fa1b75a --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoC.rccdesc @@ -0,0 +1,515 @@ +instructions: + - + id: 1180 + symbol: C_ADDI4SPN + name: C_ADDI4SPN + assembly_mnemonic: c.addi4spn + encoding: 2048 + operands: + - { kinds: [register], role: def, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: C_UIMM10_NZ_A4, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM_SP + - + id: 1181 + symbol: C_FLD + name: C_FLD + assembly_mnemonic: c.fld + encoding: 9344 + operands: + - { kinds: [register], role: def, register_class: FPR64C, register_bank: FPR, memory_role: value, name: FRD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: C + assembly_format: FRD_OFFSET_RS1 + - + id: 1182 + symbol: C_LW + name: C_LW + assembly_mnemonic: c.lw + encoding: 17536 + operands: + - { kinds: [register], role: def, register_class: GPRC, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate], immediate_predicate: C_UIMM7_A4, name: IMM } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: C + assembly_format: RD_OFFSET_RS1 + - + id: 1183 + symbol: C_LD + name: C_LD + assembly_mnemonic: c.ld + encoding: 25728 + operands: + - { kinds: [register], role: def, register_class: GPRC, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: C + assembly_format: RD_OFFSET_RS1 + - + id: 1184 + symbol: C_FSD + name: C_FSD + assembly_mnemonic: c.fsd + encoding: 42120 + operands: + - { kinds: [register], role: use, register_class: FPR64C, register_bank: FPR, memory_role: value, name: FRS2 } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: C + assembly_format: FRS2_OFFSET_RS1 + - + id: 1185 + symbol: C_SW + name: C_SW + assembly_mnemonic: c.sw + encoding: 50312 + operands: + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate], immediate_predicate: C_UIMM7_A4, name: IMM } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: C + assembly_format: RS2_OFFSET_RS1 + - + id: 1186 + symbol: C_SD + name: C_SD + assembly_mnemonic: c.sd + encoding: 58504 + operands: + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate], immediate_predicate: C_UIMM8_A8, name: IMM } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: C + assembly_format: RS2_OFFSET_RS1 + - + id: 1187 + symbol: C_ADDI + name: C_ADDI + assembly_mnemonic: c.addi + encoding: 1029 + operands: + - { kinds: [register], role: def_use, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1188 + symbol: C_ADDIW + name: C_ADDIW + assembly_mnemonic: c.addiw + encoding: 9221 + operands: + - { kinds: [register], role: def_use, register_class: GPR_NX0, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1189 + symbol: C_LI + name: C_LI + assembly_mnemonic: c.li + encoding: 17413 + operands: + - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1190 + symbol: C_ADDI16SP + name: C_ADDI16SP + assembly_mnemonic: c.addi16sp + encoding: 24897 + operands: + - { kinds: [immediate], immediate_predicate: C_SIMM10_A16_NZ, name: IMM } + num_explicit_defs: 0 + flags: [produces_code] + implicit_defs: [{ register: X2 }] + implicit_uses: [{ register: X2 }] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: IMM_SP + - + id: 1191 + symbol: C_LUI + name: C_LUI + assembly_mnemonic: c.lui + encoding: 25605 + operands: + - { kinds: [register], role: def, register_class: GPR_NX0_NX2, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: C_SIMM6_NZ, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1192 + symbol: C_SRLI + name: C_SRLI + assembly_mnemonic: c.srli + encoding: 32773 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1193 + symbol: C_SRAI + name: C_SRAI + assembly_mnemonic: c.srai + encoding: 33797 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1194 + symbol: C_ANDI + name: C_ANDI + assembly_mnemonic: c.andi + encoding: 34821 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: C_SIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1195 + symbol: C_SUB + name: C_SUB + assembly_mnemonic: c.sub + encoding: 35845 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1196 + symbol: C_XOR + name: C_XOR + assembly_mnemonic: c.xor + encoding: 35877 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1197 + symbol: C_OR + name: C_OR + assembly_mnemonic: c.or + encoding: 35909 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1198 + symbol: C_AND + name: C_AND + assembly_mnemonic: c.and + encoding: 35941 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1199 + symbol: C_SUBW + name: C_SUBW + assembly_mnemonic: c.subw + encoding: 39941 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1200 + symbol: C_ADDW + name: C_ADDW + assembly_mnemonic: c.addw + encoding: 39973 + operands: + - { kinds: [register], role: def_use, register_class: GPRC, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1201 + symbol: C_J + name: C_J + assembly_mnemonic: c.j + encoding: 40961 + operands: + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: TARGET + - + id: 1202 + symbol: C_BEQZ + name: C_BEQZ + assembly_mnemonic: c.beqz + encoding: 49153 + operands: + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS1 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RS1_TARGET + - + id: 1203 + symbol: C_BNEZ + name: C_BNEZ + assembly_mnemonic: c.bnez + encoding: 57345 + operands: + - { kinds: [register], role: use, register_class: GPRC, register_bank: GPR, name: RS1 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RS1_TARGET + - + id: 1204 + symbol: C_SLLI + name: C_SLLI + assembly_mnemonic: c.slli + encoding: 1030 + operands: + - { kinds: [register], role: def_use, register_class: GPR_NX0, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_IMM + - + id: 1205 + symbol: C_FLDSP + name: C_FLDSP + assembly_mnemonic: c.fldsp + encoding: 9250 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRD } + - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } + num_explicit_defs: 1 + flags: [may_load, produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: LOAD + encoding_category: C + assembly_format: FRD_OFFSET_SP + - + id: 1206 + symbol: C_LWSP + name: C_LWSP + assembly_mnemonic: c.lwsp + encoding: 17442 + operands: + - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [immediate], immediate_predicate: C_UIMM8_A4, name: IMM } + num_explicit_defs: 1 + flags: [may_load, produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: LOAD + encoding_category: C + assembly_format: RD_OFFSET_SP + - + id: 1207 + symbol: C_LDSP + name: C_LDSP + assembly_mnemonic: c.ldsp + encoding: 25634 + operands: + - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } + num_explicit_defs: 1 + flags: [may_load, produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: LOAD + encoding_category: C + assembly_format: RD_OFFSET_SP + - + id: 1208 + symbol: C_JR + name: C_JR + assembly_mnemonic: c.jr + encoding: 33794 + operands: + - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS1 } + num_explicit_defs: 0 + flags: [terminator, branch, indirect_branch, produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RS1 + - + id: 1209 + symbol: C_MV + name: C_MV + assembly_mnemonic: c.mv + encoding: 33830 + operands: + - { kinds: [register], role: def, register_class: GPR_NX0, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1210 + symbol: C_EBREAK + name: C_EBREAK + assembly_mnemonic: c.ebreak + encoding: 36866 + operands: [] + num_explicit_defs: 0 + flags: [has_side_effects, produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: NONE + - + id: 1211 + symbol: C_JALR + name: C_JALR + assembly_mnemonic: c.jalr + encoding: 37890 + operands: + - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS1 } + num_explicit_defs: 0 + flags: [terminator, branch, indirect_branch, produces_code] + implicit_defs: [{ register: X1 }] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RS1 + - + id: 1212 + symbol: C_ADD + name: C_ADD + assembly_mnemonic: c.add + encoding: 37926 + operands: + - { kinds: [register], role: def_use, register_class: GPR_NX0, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR_NX0, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: COMPRESSED + encoding_category: C + assembly_format: RD_RS2 + - + id: 1213 + symbol: C_FSDSP + name: C_FSDSP + assembly_mnemonic: c.fsdsp + encoding: 42018 + operands: + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRS2 } + - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } + num_explicit_defs: 0 + flags: [may_store, produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: STORE + encoding_category: C + assembly_format: FRS2_OFFSET_SP + - + id: 1214 + symbol: C_SWSP + name: C_SWSP + assembly_mnemonic: c.swsp + encoding: 50210 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [immediate], immediate_predicate: C_UIMM8_A4, name: IMM } + num_explicit_defs: 0 + flags: [may_store, produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: STORE + encoding_category: C + assembly_format: RS2_OFFSET_SP + - + id: 1215 + symbol: C_SDSP + name: C_SDSP + assembly_mnemonic: c.sdsp + encoding: 58402 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [immediate], immediate_predicate: C_UIMM9_A8, name: IMM } + num_explicit_defs: 0 + flags: [may_store, produces_code] + implicit_uses: [{ register: X2 }] + scheduling_class: STORE + encoding_category: C + assembly_format: RS2_OFFSET_SP diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoD.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoD.rccdesc new file mode 100644 index 0000000..15e4ab1 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoD.rccdesc @@ -0,0 +1,509 @@ +instructions: + - + id: 1148 + symbol: FLD + name: FLD + assembly_mnemonic: fld + encoding: 8696839 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRD } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: FRD_OFFSET_RS1 + - + id: 1149 + symbol: FSD + name: FSD + assembly_mnemonic: fsd + encoding: 10794023 + operands: + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, memory_role: value, name: FRS2 } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: S + assembly_format: FRS2_OFFSET_RS1 + - + id: 1150 + symbol: FMADD_D + name: FMADD_D + assembly_mnemonic: fmadd.d + encoding: 1520731203 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1151 + symbol: FMSUB_D + name: FMSUB_D + assembly_mnemonic: fmsub.d + encoding: 1520731207 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1152 + symbol: FNMSUB_D + name: FNMSUB_D + assembly_mnemonic: fnmsub.d + encoding: 1520731211 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1153 + symbol: FNMADD_D + name: FNMADD_D + assembly_mnemonic: fnmadd.d + encoding: 1520731215 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1154 + symbol: FADD_D + name: FADD_D + assembly_mnemonic: fadd.d + encoding: 44336211 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1155 + symbol: FSUB_D + name: FSUB_D + assembly_mnemonic: fsub.d + encoding: 178553939 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1156 + symbol: FMUL_D + name: FMUL_D + assembly_mnemonic: fmul.d + encoding: 312771667 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1157 + symbol: FDIV_D + name: FDIV_D + assembly_mnemonic: fdiv.d + encoding: 446989395 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_DIV + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1158 + symbol: FSQRT_D + name: FSQRT_D + assembly_mnemonic: fsqrt.d + encoding: 1510245459 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_SQRT + encoding_category: R + assembly_format: FRD_FRS1_RM + - + id: 1159 + symbol: FSGNJ_D + name: FSGNJ_D + assembly_mnemonic: fsgnj.d + encoding: 581207123 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1160 + symbol: FSGNJN_D + name: FSGNJN_D + assembly_mnemonic: fsgnjn.d + encoding: 581211219 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1161 + symbol: FSGNJX_D + name: FSGNJX_D + assembly_mnemonic: fsgnjx.d + encoding: 581215315 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1162 + symbol: FMIN_D + name: FMIN_D + assembly_mnemonic: fmin.d + encoding: 715424851 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1163 + symbol: FMAX_D + name: FMAX_D + assembly_mnemonic: fmax.d + encoding: 715428947 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1164 + symbol: FCVT_W_D + name: FCVT_W_D + assembly_mnemonic: fcvt.w.d + encoding: 3255075923 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1165 + symbol: FCVT_WU_D + name: FCVT_WU_D + assembly_mnemonic: fcvt.wu.d + encoding: 3256124499 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1166 + symbol: FCVT_L_D + name: FCVT_L_D + assembly_mnemonic: fcvt.l.d + encoding: 3257173075 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1167 + symbol: FCVT_LU_D + name: FCVT_LU_D + assembly_mnemonic: fcvt.lu.d + encoding: 3258221651 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1168 + symbol: FMV_X_D + name: FMV_X_D + assembly_mnemonic: fmv.x.d + encoding: 3791946835 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1 + - + id: 1169 + symbol: FEQ_D + name: FEQ_D + assembly_mnemonic: feq.d + encoding: 2728698963 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: RD_FRS1_FRS2 + - + id: 1170 + symbol: FLT_D + name: FLT_D + assembly_mnemonic: flt.d + encoding: 2728694867 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: RD_FRS1_FRS2 + - + id: 1171 + symbol: FLE_D + name: FLE_D + assembly_mnemonic: fle.d + encoding: 2728690771 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: RD_FRS1_FRS2 + - + id: 1172 + symbol: FCLASS_D + name: FCLASS_D + assembly_mnemonic: fclass.d + encoding: 3791950931 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1 + - + id: 1173 + symbol: FCVT_D_W + name: FCVT_D_W + assembly_mnemonic: fcvt.d.w + encoding: 3523511379 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1174 + symbol: FCVT_D_WU + name: FCVT_D_WU + assembly_mnemonic: fcvt.d.wu + encoding: 3524559955 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1175 + symbol: FCVT_D_L + name: FCVT_D_L + assembly_mnemonic: fcvt.d.l + encoding: 3525608531 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1176 + symbol: FCVT_D_LU + name: FCVT_D_LU + assembly_mnemonic: fcvt.d.lu + encoding: 3526657107 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1177 + symbol: FMV_D_X + name: FMV_D_X + assembly_mnemonic: fmv.d.x + encoding: 4060382291 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1 + - + id: 1178 + symbol: FCVT_S_D + name: FCVT_S_D + assembly_mnemonic: fcvt.s.d + encoding: 1075086419 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR64, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_FRS1_RM + - + id: 1179 + symbol: FCVT_D_S + name: FCVT_D_S + assembly_mnemonic: fcvt.d.s + encoding: 1107592275 + operands: + - { kinds: [register], role: def, register_class: FPR64, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_FRS1_RM diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoF.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoF.rccdesc new file mode 100644 index 0000000..3149207 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoF.rccdesc @@ -0,0 +1,477 @@ +instructions: + - + id: 1118 + symbol: FLW + name: FLW + assembly_mnemonic: flw + encoding: 8692743 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, memory_role: value, name: FRD } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: FRD_OFFSET_RS1 + - + id: 1119 + symbol: FSW + name: FSW + assembly_mnemonic: fsw + encoding: 10789927 + operands: + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, memory_role: value, name: FRS2 } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: S + assembly_format: FRS2_OFFSET_RS1 + - + id: 1120 + symbol: FMADD_S + name: FMADD_S + assembly_mnemonic: fmadd.s + encoding: 1487176771 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1121 + symbol: FMSUB_S + name: FMSUB_S + assembly_mnemonic: fmsub.s + encoding: 1487176775 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1122 + symbol: FNMSUB_S + name: FNMSUB_S + assembly_mnemonic: fnmsub.s + encoding: 1487176779 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1123 + symbol: FNMADD_S + name: FNMADD_S + assembly_mnemonic: fnmadd.s + encoding: 1487176783 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS3 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R4 + assembly_format: FRD_FRS1_FRS2_FRS3_RM + - + id: 1124 + symbol: FADD_S + name: FADD_S + assembly_mnemonic: fadd.s + encoding: 10781779 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1125 + symbol: FSUB_S + name: FSUB_S + assembly_mnemonic: fsub.s + encoding: 144999507 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1126 + symbol: FMUL_S + name: FMUL_S + assembly_mnemonic: fmul.s + encoding: 279217235 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_MUL + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1127 + symbol: FDIV_S + name: FDIV_S + assembly_mnemonic: fdiv.s + encoding: 413434963 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_DIV + encoding_category: R + assembly_format: FRD_FRS1_FRS2_RM + - + id: 1128 + symbol: FSQRT_S + name: FSQRT_S + assembly_mnemonic: fsqrt.s + encoding: 1476691027 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_SQRT + encoding_category: R + assembly_format: FRD_FRS1_RM + - + id: 1129 + symbol: FSGNJ_S + name: FSGNJ_S + assembly_mnemonic: fsgnj.s + encoding: 547652691 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1130 + symbol: FSGNJN_S + name: FSGNJN_S + assembly_mnemonic: fsgnjn.s + encoding: 547656787 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1131 + symbol: FSGNJX_S + name: FSGNJX_S + assembly_mnemonic: fsgnjx.s + encoding: 547660883 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1132 + symbol: FMIN_S + name: FMIN_S + assembly_mnemonic: fmin.s + encoding: 681870419 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1133 + symbol: FMAX_S + name: FMAX_S + assembly_mnemonic: fmax.s + encoding: 681874515 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: FRD_FRS1_FRS2 + - + id: 1134 + symbol: FCVT_W_S + name: FCVT_W_S + assembly_mnemonic: fcvt.w.s + encoding: 3221521491 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1135 + symbol: FCVT_WU_S + name: FCVT_WU_S + assembly_mnemonic: fcvt.wu.s + encoding: 3222570067 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1136 + symbol: FCVT_L_S + name: FCVT_L_S + assembly_mnemonic: fcvt.l.s + encoding: 3223618643 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1137 + symbol: FCVT_LU_S + name: FCVT_LU_S + assembly_mnemonic: fcvt.lu.s + encoding: 3224667219 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1_RM + - + id: 1138 + symbol: FMV_X_W + name: FMV_X_W + assembly_mnemonic: fmv.x.w + encoding: 3758392403 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1 + - + id: 1139 + symbol: FEQ_S + name: FEQ_S + assembly_mnemonic: feq.s + encoding: 2695144531 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: RD_FRS1_FRS2 + - + id: 1140 + symbol: FLT_S + name: FLT_S + assembly_mnemonic: flt.s + encoding: 2695140435 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: RD_FRS1_FRS2 + - + id: 1141 + symbol: FLE_S + name: FLE_S + assembly_mnemonic: fle.s + encoding: 2695136339 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS2 } + num_explicit_defs: 1 + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_ADD + encoding_category: R + assembly_format: RD_FRS1_FRS2 + - + id: 1142 + symbol: FCLASS_S + name: FCLASS_S + assembly_mnemonic: fclass.s + encoding: 3758396499 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: FPR32, register_bank: FPR, name: FRS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: RD_FRS1 + - + id: 1143 + symbol: FCVT_S_W + name: FCVT_S_W + assembly_mnemonic: fcvt.s.w + encoding: 3489956947 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1144 + symbol: FCVT_S_WU + name: FCVT_S_WU + assembly_mnemonic: fcvt.s.wu + encoding: 3491005523 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1145 + symbol: FCVT_S_L + name: FCVT_S_L + assembly_mnemonic: fcvt.s.l + encoding: 3492054099 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1146 + symbol: FCVT_S_LU + name: FCVT_S_LU + assembly_mnemonic: fcvt.s.lu + encoding: 3493102675 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: RM, name: RM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [may_raise_fp_exception, produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1_RM + - + id: 1147 + symbol: FMV_W_X + name: FMV_W_X + assembly_mnemonic: fmv.w.x + encoding: 4026827859 + operands: + - { kinds: [register], role: def, register_class: FPR32, register_bank: FPR, name: FRD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: FP_CONVERT + encoding_category: R + assembly_format: FRD_RS1 diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoI.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoI.rccdesc new file mode 100644 index 0000000..3c5711c --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoI.rccdesc @@ -0,0 +1,875 @@ +instructions: + - + id: 1024 + symbol: LUI + name: LUI + assembly_mnemonic: lui + encoding: 5175 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: UIMM20, allowed_target_flags: 32, name: IMM } + num_explicit_defs: 1 + flags: [produces_code, rematerializable] + scheduling_class: ALU + encoding_category: U + assembly_format: RD_IMM + - + id: 1025 + symbol: AUIPC + name: AUIPC + assembly_mnemonic: auipc + encoding: 5143 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate, basic_block, global_symbol, external_symbol, mc_symbol], immediate_predicate: UIMM20, allowed_target_flags: 3, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: U + assembly_format: RD_IMM + - + id: 1026 + symbol: ADDI + name: ADDI + assembly_mnemonic: addi + encoding: 1344531 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 68, name: IMM } + num_explicit_defs: 1 + flags: [produces_code, rematerializable] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1042 + symbol: SRLI + name: SRLI + assembly_mnemonic: srli + encoding: 1365011 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1043 + symbol: SRAI + name: SRAI + assembly_mnemonic: srai + encoding: 1075106835 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1044 + symbol: ADDIW + name: ADDIW + assembly_mnemonic: addiw + encoding: 1344539 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + flags: [produces_code, rematerializable] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1045 + symbol: SLLIW + name: SLLIW + assembly_mnemonic: slliw + encoding: 1348635 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM5, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1046 + symbol: SRLIW + name: SRLIW + assembly_mnemonic: srliw + encoding: 1365019 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM5, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1047 + symbol: SRAIW + name: SRAIW + assembly_mnemonic: sraiw + encoding: 1075106843 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM5, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1048 + symbol: SLL + name: SLL + assembly_mnemonic: sll + encoding: 10785843 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1049 + symbol: SLT + name: SLT + assembly_mnemonic: slt + encoding: 10789939 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1050 + symbol: SLTU + name: SLTU + assembly_mnemonic: sltu + encoding: 10794035 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1051 + symbol: XOR + name: XOR + assembly_mnemonic: xor + encoding: 10798131 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1052 + symbol: SRL + name: SRL + assembly_mnemonic: srl + encoding: 10802227 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1053 + symbol: SRA + name: SRA + assembly_mnemonic: sra + encoding: 1084544051 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1054 + symbol: OR + name: OR + assembly_mnemonic: or + encoding: 10806323 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1055 + symbol: AND + name: AND + assembly_mnemonic: and + encoding: 10810419 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1056 + symbol: ADDW + name: ADDW + assembly_mnemonic: addw + encoding: 10781755 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1057 + symbol: SUBW + name: SUBW + assembly_mnemonic: subw + encoding: 1084523579 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1058 + symbol: SLLW + name: SLLW + assembly_mnemonic: sllw + encoding: 10785851 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1059 + symbol: SRLW + name: SRLW + assembly_mnemonic: srlw + encoding: 10802235 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1060 + symbol: SRAW + name: SRAW + assembly_mnemonic: sraw + encoding: 1084544059 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1061 + symbol: LB + name: LB + assembly_mnemonic: lb + encoding: 8684547 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1062 + symbol: LH + name: LH + assembly_mnemonic: lh + encoding: 8688643 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1063 + symbol: LW + name: LW + assembly_mnemonic: lw + encoding: 8692739 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1064 + symbol: LBU + name: LBU + assembly_mnemonic: lbu + encoding: 8700931 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1065 + symbol: LHU + name: LHU + assembly_mnemonic: lhu + encoding: 8705027 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1066 + symbol: LWU + name: LWU + assembly_mnemonic: lwu + encoding: 8709123 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1067 + symbol: SB + name: SB + assembly_mnemonic: sb + encoding: 10781731 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: S + assembly_format: RS2_OFFSET_RS1 + - + id: 1068 + symbol: SH + name: SH + assembly_mnemonic: sh + encoding: 10785827 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: S + assembly_format: RS2_OFFSET_RS1 + - + id: 1069 + symbol: SW + name: SW + assembly_mnemonic: sw + encoding: 10789923 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: S + assembly_format: RS2_OFFSET_RS1 + - + id: 1070 + symbol: BLT + name: BLT + assembly_mnemonic: blt + encoding: 9715811 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: B + assembly_format: RS1_RS2_TARGET + - + id: 1071 + symbol: BGE + name: BGE + assembly_mnemonic: bge + encoding: 9719907 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: B + assembly_format: RS1_RS2_TARGET + - + id: 1072 + symbol: BLTU + name: BLTU + assembly_mnemonic: bltu + encoding: 9724003 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: B + assembly_format: RS1_RS2_TARGET + - + id: 1073 + symbol: BGEU + name: BGEU + assembly_mnemonic: bgeu + encoding: 9728099 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: B + assembly_format: RS1_RS2_TARGET + - + id: 1074 + symbol: JALR + name: JALR + assembly_mnemonic: jalr + encoding: 1344615 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate, basic_block, global_symbol, external_symbol, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 4, name: IMM } + num_explicit_defs: 1 + flags: [terminator, branch, indirect_branch, produces_code] + scheduling_class: BRANCH + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1075 + symbol: FENCE + name: FENCE + assembly_mnemonic: fence + encoding: 15 + operands: + - { kinds: [immediate], immediate_predicate: UIMM4, name: PRED } + - { kinds: [immediate], immediate_predicate: UIMM4, name: SUCC } + num_explicit_defs: 0 + flags: [has_side_effects, produces_code] + scheduling_class: FENCE + encoding_category: I + assembly_format: IMM_IMM + - + id: 1076 + symbol: FENCE_I + name: FENCE_I + assembly_mnemonic: fence.i + encoding: 4111 + operands: [] + num_explicit_defs: 0 + flags: [has_side_effects, produces_code] + scheduling_class: FENCE + encoding_category: I + assembly_format: NONE + - + id: 1077 + symbol: CSRRW + name: CSRRW + assembly_mnemonic: csrrw + encoding: 1348723 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: RD_CSR_RS1 + - + id: 1078 + symbol: CSRRS + name: CSRRS + assembly_mnemonic: csrrs + encoding: 1352819 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: RD_CSR_RS1 + - + id: 1079 + symbol: CSRRC + name: CSRRC + assembly_mnemonic: csrrc + encoding: 1356915 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: RD_CSR_RS1 + - + id: 1080 + symbol: CSRRWI + name: CSRRWI + assembly_mnemonic: csrrwi + encoding: 1102963 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } + - { kinds: [immediate], immediate_predicate: UIMM5, name: ZIMM } + num_explicit_defs: 1 + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: RD_CSR_IMM + - + id: 1081 + symbol: CSRRSI + name: CSRRSI + assembly_mnemonic: csrrsi + encoding: 1107059 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } + - { kinds: [immediate], immediate_predicate: UIMM5, name: ZIMM } + num_explicit_defs: 1 + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: RD_CSR_IMM + - + id: 1082 + symbol: CSRRCI + name: CSRRCI + assembly_mnemonic: csrrci + encoding: 1111155 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [immediate], immediate_predicate: UIMM12, name: CSR } + - { kinds: [immediate], immediate_predicate: UIMM5, name: ZIMM } + num_explicit_defs: 1 + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: RD_CSR_IMM + - + id: 1027 + symbol: ADD + name: ADD + assembly_mnemonic: add + encoding: 10781747 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1028 + symbol: SUB + name: SUB + assembly_mnemonic: sub + encoding: 1084523571 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1029 + symbol: LD + name: LD + assembly_mnemonic: ld + encoding: 8696835 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, memory_role: value, name: RD } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 1 + flags: [may_load, produces_code] + scheduling_class: LOAD + encoding_category: I + assembly_format: RD_OFFSET_RS1 + - + id: 1030 + symbol: SD + name: SD + assembly_mnemonic: sd + encoding: 10794019 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, memory_role: value, name: RS2 } + - { kinds: [register, frame_index], role: use, register_class: GPR, register_bank: GPR, memory_role: address, name: RS1 } + - { kinds: [immediate, constant_pool_index, jump_table_index, global_symbol, external_symbol, block_address, mc_symbol], immediate_predicate: SIMM12, name: IMM, allowed_target_flags: 68 } + num_explicit_defs: 0 + flags: [may_store, produces_code] + scheduling_class: STORE + encoding_category: S + assembly_format: RS2_OFFSET_RS1 + - + id: 1031 + symbol: BEQ + name: BEQ + assembly_mnemonic: beq + encoding: 9699427 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: B + assembly_format: RS1_RS2_TARGET + - + id: 1032 + symbol: BNE + name: BNE + assembly_mnemonic: bne + encoding: 9703523 + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: B + assembly_format: RS1_RS2_TARGET + - + id: 1033 + symbol: JAL + name: JAL + assembly_mnemonic: jal + encoding: 1135 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 1 + flags: [terminator, branch, produces_code] + scheduling_class: BRANCH + encoding_category: J + assembly_format: RD_TARGET + - + id: 1034 + symbol: ECALL + name: ECALL + assembly_mnemonic: ecall + encoding: 115 + operands: [] + num_explicit_defs: 0 + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: NONE + - + id: 1035 + symbol: EBREAK + name: EBREAK + assembly_mnemonic: ebreak + encoding: 1048691 + operands: [] + num_explicit_defs: 0 + flags: [has_side_effects, produces_code] + scheduling_class: SYSTEM + encoding_category: SYSTEM + assembly_format: NONE + - + id: 1036 + symbol: SLTI + name: SLTI + assembly_mnemonic: slti + encoding: 1352723 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1037 + symbol: SLTIU + name: SLTIU + assembly_mnemonic: sltiu + encoding: 1356819 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1038 + symbol: XORI + name: XORI + assembly_mnemonic: xori + encoding: 1360915 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1039 + symbol: ORI + name: ORI + assembly_mnemonic: ori + encoding: 1369107 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1040 + symbol: ANDI + name: ANDI + assembly_mnemonic: andi + encoding: 1373203 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1041 + symbol: SLLI + name: SLLI + assembly_mnemonic: slli + encoding: 1348627 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoM.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoM.rccdesc new file mode 100644 index 0000000..62e8e6c --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoM.rccdesc @@ -0,0 +1,196 @@ +instructions: + - + id: 1083 + symbol: MUL + name: MUL + assembly_mnemonic: mul + encoding: 44336179 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: MUL + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1084 + symbol: MULH + name: MULH + assembly_mnemonic: mulh + encoding: 44340275 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: MUL + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1085 + symbol: MULHSU + name: MULHSU + assembly_mnemonic: mulhsu + encoding: 44344371 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: MUL + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1086 + symbol: MULHU + name: MULHU + assembly_mnemonic: mulhu + encoding: 44348467 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: MUL + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1087 + symbol: DIV + name: DIV + assembly_mnemonic: div + encoding: 44352563 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1088 + symbol: DIVU + name: DIVU + assembly_mnemonic: divu + encoding: 44356659 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1089 + symbol: REM + name: REM + assembly_mnemonic: rem + encoding: 44360755 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1090 + symbol: REMU + name: REMU + assembly_mnemonic: remu + encoding: 44364851 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1091 + symbol: MULW + name: MULW + assembly_mnemonic: mulw + encoding: 44336187 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: MUL + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1092 + symbol: DIVW + name: DIVW + assembly_mnemonic: divw + encoding: 44352571 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1093 + symbol: DIVUW + name: DIVUW + assembly_mnemonic: divuw + encoding: 44356667 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1094 + symbol: REMW + name: REMW + assembly_mnemonic: remw + encoding: 44360763 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1095 + symbol: REMUW + name: REMUW + assembly_mnemonic: remuw + encoding: 44364859 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: DIV + encoding_category: R + assembly_format: RD_RS1_RS2 diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoPseudo.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoPseudo.rccdesc new file mode 100644 index 0000000..4f16ec6 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoPseudo.rccdesc @@ -0,0 +1,380 @@ +instructions: + - + id: 1229 + symbol: G_SLLW + name: G_SLLW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1230 + symbol: G_SRAW + name: G_SRAW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1231 + symbol: G_DIVW + name: G_DIVW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1232 + symbol: G_CLZW + name: G_CLZW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1233 + symbol: G_CTZW + name: G_CTZW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1234 + symbol: G_FCVT_W_RV64 + name: G_FCVT_W_RV64 + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 1 } + - { kinds: [immediate] } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1235 + symbol: G_FCLASS + name: G_FCLASS + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 1 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1236 + symbol: G_ROLW + name: G_ROLW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1237 + symbol: G_SRLW + name: G_SRLW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1238 + symbol: G_DIVUW + name: G_DIVUW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1239 + symbol: G_REMUW + name: G_REMUW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1240 + symbol: G_RORW + name: G_RORW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1241 + symbol: G_BREV8 + name: G_BREV8 + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1242 + symbol: G_FCVT_WU_RV64 + name: G_FCVT_WU_RV64 + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 1 } + - { kinds: [immediate] } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1243 + symbol: G_CLSW + name: G_CLSW + operands: + - { kinds: [register], role: def, type_index: 0 } + - { kinds: [register], role: use, type_index: 0 } + num_explicit_defs: 1 + flags: [generic, pseudo, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1244 + symbol: Select_GPR_Using_CC_GPR + name: Select_GPR_Using_CC_GPR + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } + - { kinds: [immediate] } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } + num_explicit_defs: 1 + flags: [pseudo, produces_code, allowed_pre_legalizer] + owner: instruction_select + deadline: selected + - + id: 1245 + symbol: ReadFFLAGS + name: ReadFFLAGS + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR } + num_explicit_defs: 1 + implicit_uses: [{ register: FFLAGS }] + flags: [pseudo, produces_code, allowed_pre_legalizer, has_side_effects] + owner: post_ra_expansion + deadline: post_ra_finalized + + - + id: 1246 + symbol: WriteFFLAGS + name: WriteFFLAGS + operands: + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR } + num_explicit_defs: 0 + implicit_defs: [{ register: FFLAGS }] + flags: [pseudo, produces_code, allowed_pre_legalizer, has_side_effects] + owner: post_ra_expansion + deadline: post_ra_finalized + - + id: 1217 + symbol: PseudoLOAD_STACK_ARG + name: PseudoLOAD_STACK_ARG + operands: + - { kinds: [register], role: def, memory_role: value } + - { kinds: [frame_index] } + - { kinds: [immediate, integer_immediate] } + - { kinds: [immediate] } + num_explicit_defs: 1 + flags: [pseudo, produces_code, allowed_pre_legalizer, may_load] + owner: instruction_select + deadline: selected + - + id: 1218 + symbol: PseudoSTORE_STACK_ARG + name: PseudoSTORE_STACK_ARG + operands: + - { kinds: [register], role: use, memory_role: value } + - { kinds: [frame_index] } + - { kinds: [immediate, integer_immediate] } + - { kinds: [immediate] } + num_explicit_defs: 0 + flags: [pseudo, produces_code, allowed_pre_legalizer, may_store] + owner: instruction_select + deadline: selected + - + id: 1219 + symbol: PseudoBYVAL_COPY + name: PseudoBYVAL_COPY + operands: + - { kinds: [register], role: def } + - { kinds: [register], role: use, memory_role: address } + - { kinds: [frame_index] } + - { kinds: [immediate, integer_immediate] } + - { kinds: [immediate, integer_immediate] } + num_explicit_defs: 1 + flags: [pseudo, produces_code, allowed_pre_legalizer, may_load, may_store] + owner: instruction_select + deadline: selected + - + id: 1220 + symbol: ADJCALLSTACKDOWN + name: ADJCALLSTACKDOWN + operands: + - { kinds: [immediate, integer_immediate] } + - { kinds: [immediate, integer_immediate] } + num_explicit_defs: 0 + implicit_defs: [{ register: X2 }] + implicit_uses: [{ register: X2 }] + flags: [pseudo, allowed_pre_legalizer, has_side_effects] + owner: prologue_epilogue_insertion + deadline: frame_finalized + - + id: 1221 + symbol: ADJCALLSTACKUP + name: ADJCALLSTACKUP + operands: + - { kinds: [immediate, integer_immediate] } + - { kinds: [immediate, integer_immediate] } + num_explicit_defs: 0 + implicit_defs: [{ register: X2 }] + implicit_uses: [{ register: X2 }] + flags: [pseudo, allowed_pre_legalizer, has_side_effects] + owner: prologue_epilogue_insertion + deadline: frame_finalized + - + id: 1222 + symbol: PseudoCALL + name: PseudoCALL + operands: + - { kinds: [global_symbol, external_symbol, register], role: use, allowed_target_flags: 1 } + - { kinds: [register_mask], optional: true } + num_explicit_defs: 0 + implicit_defs: [{ register: X1 }] + allow_extra_implicit_operands: true + flags: [pseudo, produces_code, allowed_pre_legalizer, call, may_load, may_store, has_side_effects, not_duplicable, unmodeled_side_effects] + size: 8 + owner: post_ra_expansion + deadline: post_ra_finalized + - + id: 1223 + symbol: PseudoTAIL + name: PseudoTAIL + operands: + - { kinds: [global_symbol, external_symbol, register], role: use, allowed_target_flags: 1 } + - { kinds: [register_mask], optional: true } + num_explicit_defs: 0 + allow_extra_implicit_operands: true + flags: [pseudo, produces_code, allowed_pre_legalizer, terminator, branch, call, barrier, may_load, may_store, has_side_effects, not_duplicable, unmodeled_side_effects] + size: 8 + owner: post_ra_expansion + deadline: post_ra_finalized + - + id: 1224 + symbol: PseudoRET + name: PseudoRET + operands: [] + num_explicit_defs: 0 + allow_extra_implicit_operands: true + flags: [pseudo, produces_code, allowed_pre_legalizer, terminator, return, barrier] + size: 4 + owner: post_ra_expansion + deadline: post_ra_finalized + + - + id: 1225 + symbol: JALR_CALL + name: JALR_CALL + assembly_mnemonic: jalr + encoding: 1344615 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 4, name: IMM } + - { kinds: [register_mask] } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [call, may_load, may_store, has_side_effects, produces_code, not_duplicable, unmodeled_side_effects] + scheduling_class: BRANCH + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1226 + symbol: JALR_TAIL + name: JALR_TAIL + assembly_mnemonic: jalr + encoding: 1344615 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate, mc_symbol], immediate_predicate: SIMM12, allowed_target_flags: 4, name: IMM } + - { kinds: [register_mask] } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [terminator, branch, indirect_branch, call, barrier, may_load, may_store, has_side_effects, produces_code, not_duplicable, unmodeled_side_effects] + scheduling_class: BRANCH + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1227 + symbol: JALR_RET + name: JALR_RET + assembly_mnemonic: jalr + encoding: 1344615 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: SIMM12, name: IMM } + num_explicit_defs: 1 + allow_extra_implicit_operands: true + flags: [terminator, return, barrier, produces_code] + scheduling_class: BRANCH + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1228 + symbol: PseudoBR + name: PseudoBR + operands: + - { kinds: [basic_block], name: TARGET } + num_explicit_defs: 0 + flags: [pseudo, produces_code, allowed_pre_legalizer, terminator, branch, barrier] + size: 4 + owner: post_ra_expansion + deadline: post_ra_finalized diff --git a/backend/lib/Target/RISCV/RISCVInstrInfoZb.rccdesc b/backend/lib/Target/RISCV/RISCVInstrInfoZb.rccdesc new file mode 100644 index 0000000..103c3ab --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVInstrInfoZb.rccdesc @@ -0,0 +1,237 @@ +instructions: + - + id: 1247 + symbol: SH1ADD + name: SH1ADD + assembly_mnemonic: sh1add + encoding: 547660851 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1248 + symbol: SH2ADD + name: SH2ADD + assembly_mnemonic: sh2add + encoding: 547669043 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1249 + symbol: SH3ADD + name: SH3ADD + assembly_mnemonic: sh3add + encoding: 547677235 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1250 + symbol: SH1ADD_UW + name: SH1ADD_UW + assembly_mnemonic: sh1add.uw + encoding: 547660859 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1251 + symbol: SH2ADD_UW + name: SH2ADD_UW + assembly_mnemonic: sh2add.uw + encoding: 547669051 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1252 + symbol: SH3ADD_UW + name: SH3ADD_UW + assembly_mnemonic: sh3add.uw + encoding: 547677243 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1253 + symbol: SLLI_UW + name: SLLI_UW + assembly_mnemonic: slli.uw + encoding: 135566363 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [immediate], immediate_predicate: UIMM6, name: IMM } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1_IMM + - + id: 1254 + symbol: ADD_UW + name: ADD_UW + assembly_mnemonic: add.uw + encoding: 144999483 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1255 + symbol: SEXT_B + name: SEXT_B + assembly_mnemonic: sext.b + encoding: 1615107091 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1 + - + id: 1256 + symbol: SEXT_H + name: SEXT_H + assembly_mnemonic: sext.h + encoding: 1616155667 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: I + assembly_format: RD_RS1 + - + id: 1257 + symbol: ZEXT_H_RV32 + name: ZEXT_H_RV32 + assembly_mnemonic: zext.h + encoding: 134530099 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1 + - + id: 1258 + symbol: ZEXT_H_RV64 + name: ZEXT_H_RV64 + assembly_mnemonic: zext.h + encoding: 134530107 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + num_explicit_defs: 1 + flags: [produces_code] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1 + - + id: 1259 + symbol: MIN + name: MIN + assembly_mnemonic: min + encoding: 178570291 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1260 + symbol: MINU + name: MINU + assembly_mnemonic: minu + encoding: 178574387 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1261 + symbol: MAX + name: MAX + assembly_mnemonic: max + encoding: 178578483 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 + - + id: 1262 + symbol: MAXU + name: MAXU + assembly_mnemonic: maxu + encoding: 178582579 + operands: + - { kinds: [register], role: def, register_class: GPR, register_bank: GPR, name: RD } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS1 } + - { kinds: [register], role: use, register_class: GPR, register_bank: GPR, name: RS2 } + num_explicit_defs: 1 + flags: [produces_code, commutable] + scheduling_class: ALU + encoding_category: R + assembly_format: RD_RS1_RS2 diff --git a/backend/lib/Target/RISCV/RISCVRegisterInfo.rccdesc b/backend/lib/Target/RISCV/RISCVRegisterInfo.rccdesc new file mode 100644 index 0000000..7a63dc0 --- /dev/null +++ b/backend/lib/Target/RISCV/RISCVRegisterInfo.rccdesc @@ -0,0 +1,383 @@ +register_units: + - { id: 1, symbol: U_X0, name: x0.unit } + - { id: 2, symbol: U_X1, name: x1.unit } + - { id: 3, symbol: U_X2, name: x2.unit } + - { id: 4, symbol: U_X3, name: x3.unit } + - { id: 5, symbol: U_X4, name: x4.unit } + - { id: 6, symbol: U_X5, name: x5.unit } + - { id: 7, symbol: U_X6, name: x6.unit } + - { id: 8, symbol: U_X7, name: x7.unit } + - { id: 9, symbol: U_X8, name: x8.unit } + - { id: 10, symbol: U_X9, name: x9.unit } + - { id: 11, symbol: U_X10, name: x10.unit } + - { id: 12, symbol: U_X11, name: x11.unit } + - { id: 13, symbol: U_X12, name: x12.unit } + - { id: 14, symbol: U_X13, name: x13.unit } + - { id: 15, symbol: U_X14, name: x14.unit } + - { id: 16, symbol: U_X15, name: x15.unit } + - { id: 17, symbol: U_X16, name: x16.unit } + - { id: 18, symbol: U_X17, name: x17.unit } + - { id: 19, symbol: U_X18, name: x18.unit } + - { id: 20, symbol: U_X19, name: x19.unit } + - { id: 21, symbol: U_X20, name: x20.unit } + - { id: 22, symbol: U_X21, name: x21.unit } + - { id: 23, symbol: U_X22, name: x22.unit } + - { id: 24, symbol: U_X23, name: x23.unit } + - { id: 25, symbol: U_X24, name: x24.unit } + - { id: 26, symbol: U_X25, name: x25.unit } + - { id: 27, symbol: U_X26, name: x26.unit } + - { id: 28, symbol: U_X27, name: x27.unit } + - { id: 29, symbol: U_X28, name: x28.unit } + - { id: 30, symbol: U_X29, name: x29.unit } + - { id: 31, symbol: U_X30, name: x30.unit } + - { id: 32, symbol: U_X31, name: x31.unit } + - { id: 33, symbol: U_F0, name: f0.unit } + - { id: 34, symbol: U_F1, name: f1.unit } + - { id: 35, symbol: U_F2, name: f2.unit } + - { id: 36, symbol: U_F3, name: f3.unit } + - { id: 37, symbol: U_F4, name: f4.unit } + - { id: 38, symbol: U_F5, name: f5.unit } + - { id: 39, symbol: U_F6, name: f6.unit } + - { id: 40, symbol: U_F7, name: f7.unit } + - { id: 41, symbol: U_F8, name: f8.unit } + - { id: 42, symbol: U_F9, name: f9.unit } + - { id: 43, symbol: U_F10, name: f10.unit } + - { id: 44, symbol: U_F11, name: f11.unit } + - { id: 45, symbol: U_F12, name: f12.unit } + - { id: 46, symbol: U_F13, name: f13.unit } + - { id: 47, symbol: U_F14, name: f14.unit } + - { id: 48, symbol: U_F15, name: f15.unit } + - { id: 49, symbol: U_F16, name: f16.unit } + - { id: 50, symbol: U_F17, name: f17.unit } + - { id: 51, symbol: U_F18, name: f18.unit } + - { id: 52, symbol: U_F19, name: f19.unit } + - { id: 53, symbol: U_F20, name: f20.unit } + - { id: 54, symbol: U_F21, name: f21.unit } + - { id: 55, symbol: U_F22, name: f22.unit } + - { id: 56, symbol: U_F23, name: f23.unit } + - { id: 57, symbol: U_F24, name: f24.unit } + - { id: 58, symbol: U_F25, name: f25.unit } + - { id: 59, symbol: U_F26, name: f26.unit } + - { id: 60, symbol: U_F27, name: f27.unit } + - { id: 61, symbol: U_F28, name: f28.unit } + - { id: 62, symbol: U_F29, name: f29.unit } + - { id: 63, symbol: U_F30, name: f30.unit } + - { id: 64, symbol: U_F31, name: f31.unit } + - { id: 65, symbol: U_FFLAGS, name: fflags.unit } + - { id: 66, symbol: U_FRM, name: frm.unit } + - { id: 67, symbol: U_V0, name: v0.unit } + - { id: 68, symbol: U_V1, name: v1.unit } + - { id: 69, symbol: U_V2, name: v2.unit } + - { id: 70, symbol: U_V3, name: v3.unit } + - { id: 71, symbol: U_V4, name: v4.unit } + - { id: 72, symbol: U_V5, name: v5.unit } + - { id: 73, symbol: U_V6, name: v6.unit } + - { id: 74, symbol: U_V7, name: v7.unit } + - { id: 75, symbol: U_V8, name: v8.unit } + - { id: 76, symbol: U_V9, name: v9.unit } + - { id: 77, symbol: U_V10, name: v10.unit } + - { id: 78, symbol: U_V11, name: v11.unit } + - { id: 79, symbol: U_V12, name: v12.unit } + - { id: 80, symbol: U_V13, name: v13.unit } + - { id: 81, symbol: U_V14, name: v14.unit } + - { id: 82, symbol: U_V15, name: v15.unit } + - { id: 83, symbol: U_V16, name: v16.unit } + - { id: 84, symbol: U_V17, name: v17.unit } + - { id: 85, symbol: U_V18, name: v18.unit } + - { id: 86, symbol: U_V19, name: v19.unit } + - { id: 87, symbol: U_V20, name: v20.unit } + - { id: 88, symbol: U_V21, name: v21.unit } + - { id: 89, symbol: U_V22, name: v22.unit } + - { id: 90, symbol: U_V23, name: v23.unit } + - { id: 91, symbol: U_V24, name: v24.unit } + - { id: 92, symbol: U_V25, name: v25.unit } + - { id: 93, symbol: U_V26, name: v26.unit } + - { id: 94, symbol: U_V27, name: v27.unit } + - { id: 95, symbol: U_V28, name: v28.unit } + - { id: 96, symbol: U_V29, name: v29.unit } + - { id: 97, symbol: U_V30, name: v30.unit } + - { id: 98, symbol: U_V31, name: v31.unit } + +registers: + - { id: 1, symbol: X0, name: x0, encoding: 0, dwarf_register: 0, units: [{ unit: U_X0, lanes: 1 }], constant: true, reserved: true, aliases: [zero] } + - { id: 2, symbol: X1, name: x1, encoding: 1, dwarf_register: 1, units: [{ unit: U_X1, lanes: 1 }], aliases: [ra] } + - { id: 3, symbol: X2, name: x2, encoding: 2, dwarf_register: 2, units: [{ unit: U_X2, lanes: 1 }], reserved: true, aliases: [sp] } + - { id: 4, symbol: X3, name: x3, encoding: 3, dwarf_register: 3, units: [{ unit: U_X3, lanes: 1 }], reserved: true, aliases: [gp] } + - { id: 5, symbol: X4, name: x4, encoding: 4, dwarf_register: 4, units: [{ unit: U_X4, lanes: 1 }], reserved: true, aliases: [tp] } + - { id: 6, symbol: X5, name: x5, encoding: 5, dwarf_register: 5, units: [{ unit: U_X5, lanes: 1 }], aliases: [t0] } + - { id: 7, symbol: X6, name: x6, encoding: 6, dwarf_register: 6, units: [{ unit: U_X6, lanes: 1 }], aliases: [t1] } + - { id: 8, symbol: X7, name: x7, encoding: 7, dwarf_register: 7, units: [{ unit: U_X7, lanes: 1 }], aliases: [t2] } + - { id: 9, symbol: X8, name: x8, encoding: 8, dwarf_register: 8, units: [{ unit: U_X8, lanes: 1 }], aliases: [s0, fp] } + - { id: 10, symbol: X9, name: x9, encoding: 9, dwarf_register: 9, units: [{ unit: U_X9, lanes: 1 }], aliases: [s1] } + - { id: 11, symbol: X10, name: x10, encoding: 10, dwarf_register: 10, units: [{ unit: U_X10, lanes: 1 }], aliases: [a0] } + - { id: 12, symbol: X11, name: x11, encoding: 11, dwarf_register: 11, units: [{ unit: U_X11, lanes: 1 }], aliases: [a1] } + - { id: 13, symbol: X12, name: x12, encoding: 12, dwarf_register: 12, units: [{ unit: U_X12, lanes: 1 }], aliases: [a2] } + - { id: 14, symbol: X13, name: x13, encoding: 13, dwarf_register: 13, units: [{ unit: U_X13, lanes: 1 }], aliases: [a3] } + - { id: 15, symbol: X14, name: x14, encoding: 14, dwarf_register: 14, units: [{ unit: U_X14, lanes: 1 }], aliases: [a4] } + - { id: 16, symbol: X15, name: x15, encoding: 15, dwarf_register: 15, units: [{ unit: U_X15, lanes: 1 }], aliases: [a5] } + - { id: 17, symbol: X16, name: x16, encoding: 16, dwarf_register: 16, units: [{ unit: U_X16, lanes: 1 }], aliases: [a6] } + - { id: 18, symbol: X17, name: x17, encoding: 17, dwarf_register: 17, units: [{ unit: U_X17, lanes: 1 }], aliases: [a7] } + - { id: 19, symbol: X18, name: x18, encoding: 18, dwarf_register: 18, units: [{ unit: U_X18, lanes: 1 }], aliases: [s2] } + - { id: 20, symbol: X19, name: x19, encoding: 19, dwarf_register: 19, units: [{ unit: U_X19, lanes: 1 }], aliases: [s3] } + - { id: 21, symbol: X20, name: x20, encoding: 20, dwarf_register: 20, units: [{ unit: U_X20, lanes: 1 }], aliases: [s4] } + - { id: 22, symbol: X21, name: x21, encoding: 21, dwarf_register: 21, units: [{ unit: U_X21, lanes: 1 }], aliases: [s5] } + - { id: 23, symbol: X22, name: x22, encoding: 22, dwarf_register: 22, units: [{ unit: U_X22, lanes: 1 }], aliases: [s6] } + - { id: 24, symbol: X23, name: x23, encoding: 23, dwarf_register: 23, units: [{ unit: U_X23, lanes: 1 }], aliases: [s7] } + - { id: 25, symbol: X24, name: x24, encoding: 24, dwarf_register: 24, units: [{ unit: U_X24, lanes: 1 }], aliases: [s8] } + - { id: 26, symbol: X25, name: x25, encoding: 25, dwarf_register: 25, units: [{ unit: U_X25, lanes: 1 }], aliases: [s9] } + - { id: 27, symbol: X26, name: x26, encoding: 26, dwarf_register: 26, units: [{ unit: U_X26, lanes: 1 }], aliases: [s10] } + - { id: 28, symbol: X27, name: x27, encoding: 27, dwarf_register: 27, units: [{ unit: U_X27, lanes: 1 }], aliases: [s11] } + - { id: 29, symbol: X28, name: x28, encoding: 28, dwarf_register: 28, units: [{ unit: U_X28, lanes: 1 }], aliases: [t3] } + - { id: 30, symbol: X29, name: x29, encoding: 29, dwarf_register: 29, units: [{ unit: U_X29, lanes: 1 }], aliases: [t4] } + - { id: 31, symbol: X30, name: x30, encoding: 30, dwarf_register: 30, units: [{ unit: U_X30, lanes: 1 }], aliases: [t5] } + - { id: 32, symbol: X31, name: x31, encoding: 31, dwarf_register: 31, units: [{ unit: U_X31, lanes: 1 }], aliases: [t6] } + - { id: 33, symbol: F0_D, name: f0_d, encoding: 0, dwarf_register: 32, units: [{ unit: U_F0, lanes: 1 }], aliases: [ft0] } + - { id: 34, symbol: F1_D, name: f1_d, encoding: 1, dwarf_register: 33, units: [{ unit: U_F1, lanes: 1 }], aliases: [ft1] } + - { id: 35, symbol: F2_D, name: f2_d, encoding: 2, dwarf_register: 34, units: [{ unit: U_F2, lanes: 1 }], aliases: [ft2] } + - { id: 36, symbol: F3_D, name: f3_d, encoding: 3, dwarf_register: 35, units: [{ unit: U_F3, lanes: 1 }], aliases: [ft3] } + - { id: 37, symbol: F4_D, name: f4_d, encoding: 4, dwarf_register: 36, units: [{ unit: U_F4, lanes: 1 }], aliases: [ft4] } + - { id: 38, symbol: F5_D, name: f5_d, encoding: 5, dwarf_register: 37, units: [{ unit: U_F5, lanes: 1 }], aliases: [ft5] } + - { id: 39, symbol: F6_D, name: f6_d, encoding: 6, dwarf_register: 38, units: [{ unit: U_F6, lanes: 1 }], aliases: [ft6] } + - { id: 40, symbol: F7_D, name: f7_d, encoding: 7, dwarf_register: 39, units: [{ unit: U_F7, lanes: 1 }], aliases: [ft7] } + - { id: 41, symbol: F8_D, name: f8_d, encoding: 8, dwarf_register: 40, units: [{ unit: U_F8, lanes: 1 }], aliases: [fs0] } + - { id: 42, symbol: F9_D, name: f9_d, encoding: 9, dwarf_register: 41, units: [{ unit: U_F9, lanes: 1 }], aliases: [fs1] } + - { id: 43, symbol: F10_D, name: f10_d, encoding: 10, dwarf_register: 42, units: [{ unit: U_F10, lanes: 1 }], aliases: [fa0] } + - { id: 44, symbol: F11_D, name: f11_d, encoding: 11, dwarf_register: 43, units: [{ unit: U_F11, lanes: 1 }], aliases: [fa1] } + - { id: 45, symbol: F12_D, name: f12_d, encoding: 12, dwarf_register: 44, units: [{ unit: U_F12, lanes: 1 }], aliases: [fa2] } + - { id: 46, symbol: F13_D, name: f13_d, encoding: 13, dwarf_register: 45, units: [{ unit: U_F13, lanes: 1 }], aliases: [fa3] } + - { id: 47, symbol: F14_D, name: f14_d, encoding: 14, dwarf_register: 46, units: [{ unit: U_F14, lanes: 1 }], aliases: [fa4] } + - { id: 48, symbol: F15_D, name: f15_d, encoding: 15, dwarf_register: 47, units: [{ unit: U_F15, lanes: 1 }], aliases: [fa5] } + - { id: 49, symbol: F16_D, name: f16_d, encoding: 16, dwarf_register: 48, units: [{ unit: U_F16, lanes: 1 }], aliases: [fa6] } + - { id: 50, symbol: F17_D, name: f17_d, encoding: 17, dwarf_register: 49, units: [{ unit: U_F17, lanes: 1 }], aliases: [fa7] } + - { id: 51, symbol: F18_D, name: f18_d, encoding: 18, dwarf_register: 50, units: [{ unit: U_F18, lanes: 1 }], aliases: [fs2] } + - { id: 52, symbol: F19_D, name: f19_d, encoding: 19, dwarf_register: 51, units: [{ unit: U_F19, lanes: 1 }], aliases: [fs3] } + - { id: 53, symbol: F20_D, name: f20_d, encoding: 20, dwarf_register: 52, units: [{ unit: U_F20, lanes: 1 }], aliases: [fs4] } + - { id: 54, symbol: F21_D, name: f21_d, encoding: 21, dwarf_register: 53, units: [{ unit: U_F21, lanes: 1 }], aliases: [fs5] } + - { id: 55, symbol: F22_D, name: f22_d, encoding: 22, dwarf_register: 54, units: [{ unit: U_F22, lanes: 1 }], aliases: [fs6] } + - { id: 56, symbol: F23_D, name: f23_d, encoding: 23, dwarf_register: 55, units: [{ unit: U_F23, lanes: 1 }], aliases: [fs7] } + - { id: 57, symbol: F24_D, name: f24_d, encoding: 24, dwarf_register: 56, units: [{ unit: U_F24, lanes: 1 }], aliases: [fs8] } + - { id: 58, symbol: F25_D, name: f25_d, encoding: 25, dwarf_register: 57, units: [{ unit: U_F25, lanes: 1 }], aliases: [fs9] } + - { id: 59, symbol: F26_D, name: f26_d, encoding: 26, dwarf_register: 58, units: [{ unit: U_F26, lanes: 1 }], aliases: [fs10] } + - { id: 60, symbol: F27_D, name: f27_d, encoding: 27, dwarf_register: 59, units: [{ unit: U_F27, lanes: 1 }], aliases: [fs11] } + - { id: 61, symbol: F28_D, name: f28_d, encoding: 28, dwarf_register: 60, units: [{ unit: U_F28, lanes: 1 }], aliases: [ft8] } + - { id: 62, symbol: F29_D, name: f29_d, encoding: 29, dwarf_register: 61, units: [{ unit: U_F29, lanes: 1 }], aliases: [ft9] } + - { id: 63, symbol: F30_D, name: f30_d, encoding: 30, dwarf_register: 62, units: [{ unit: U_F30, lanes: 1 }], aliases: [ft10] } + - { id: 64, symbol: F31_D, name: f31_d, encoding: 31, dwarf_register: 63, units: [{ unit: U_F31, lanes: 1 }], aliases: [ft11] } + - { id: 65, symbol: F0_F, name: f0_f, encoding: 0, dwarf_register: 32, units: [{ unit: U_F0, lanes: 1 }] } + - { id: 66, symbol: F1_F, name: f1_f, encoding: 1, dwarf_register: 33, units: [{ unit: U_F1, lanes: 1 }] } + - { id: 67, symbol: F2_F, name: f2_f, encoding: 2, dwarf_register: 34, units: [{ unit: U_F2, lanes: 1 }] } + - { id: 68, symbol: F3_F, name: f3_f, encoding: 3, dwarf_register: 35, units: [{ unit: U_F3, lanes: 1 }] } + - { id: 69, symbol: F4_F, name: f4_f, encoding: 4, dwarf_register: 36, units: [{ unit: U_F4, lanes: 1 }] } + - { id: 70, symbol: F5_F, name: f5_f, encoding: 5, dwarf_register: 37, units: [{ unit: U_F5, lanes: 1 }] } + - { id: 71, symbol: F6_F, name: f6_f, encoding: 6, dwarf_register: 38, units: [{ unit: U_F6, lanes: 1 }] } + - { id: 72, symbol: F7_F, name: f7_f, encoding: 7, dwarf_register: 39, units: [{ unit: U_F7, lanes: 1 }] } + - { id: 73, symbol: F8_F, name: f8_f, encoding: 8, dwarf_register: 40, units: [{ unit: U_F8, lanes: 1 }] } + - { id: 74, symbol: F9_F, name: f9_f, encoding: 9, dwarf_register: 41, units: [{ unit: U_F9, lanes: 1 }] } + - { id: 75, symbol: F10_F, name: f10_f, encoding: 10, dwarf_register: 42, units: [{ unit: U_F10, lanes: 1 }] } + - { id: 76, symbol: F11_F, name: f11_f, encoding: 11, dwarf_register: 43, units: [{ unit: U_F11, lanes: 1 }] } + - { id: 77, symbol: F12_F, name: f12_f, encoding: 12, dwarf_register: 44, units: [{ unit: U_F12, lanes: 1 }] } + - { id: 78, symbol: F13_F, name: f13_f, encoding: 13, dwarf_register: 45, units: [{ unit: U_F13, lanes: 1 }] } + - { id: 79, symbol: F14_F, name: f14_f, encoding: 14, dwarf_register: 46, units: [{ unit: U_F14, lanes: 1 }] } + - { id: 80, symbol: F15_F, name: f15_f, encoding: 15, dwarf_register: 47, units: [{ unit: U_F15, lanes: 1 }] } + - { id: 81, symbol: F16_F, name: f16_f, encoding: 16, dwarf_register: 48, units: [{ unit: U_F16, lanes: 1 }] } + - { id: 82, symbol: F17_F, name: f17_f, encoding: 17, dwarf_register: 49, units: [{ unit: U_F17, lanes: 1 }] } + - { id: 83, symbol: F18_F, name: f18_f, encoding: 18, dwarf_register: 50, units: [{ unit: U_F18, lanes: 1 }] } + - { id: 84, symbol: F19_F, name: f19_f, encoding: 19, dwarf_register: 51, units: [{ unit: U_F19, lanes: 1 }] } + - { id: 85, symbol: F20_F, name: f20_f, encoding: 20, dwarf_register: 52, units: [{ unit: U_F20, lanes: 1 }] } + - { id: 86, symbol: F21_F, name: f21_f, encoding: 21, dwarf_register: 53, units: [{ unit: U_F21, lanes: 1 }] } + - { id: 87, symbol: F22_F, name: f22_f, encoding: 22, dwarf_register: 54, units: [{ unit: U_F22, lanes: 1 }] } + - { id: 88, symbol: F23_F, name: f23_f, encoding: 23, dwarf_register: 55, units: [{ unit: U_F23, lanes: 1 }] } + - { id: 89, symbol: F24_F, name: f24_f, encoding: 24, dwarf_register: 56, units: [{ unit: U_F24, lanes: 1 }] } + - { id: 90, symbol: F25_F, name: f25_f, encoding: 25, dwarf_register: 57, units: [{ unit: U_F25, lanes: 1 }] } + - { id: 91, symbol: F26_F, name: f26_f, encoding: 26, dwarf_register: 58, units: [{ unit: U_F26, lanes: 1 }] } + - { id: 92, symbol: F27_F, name: f27_f, encoding: 27, dwarf_register: 59, units: [{ unit: U_F27, lanes: 1 }] } + - { id: 93, symbol: F28_F, name: f28_f, encoding: 28, dwarf_register: 60, units: [{ unit: U_F28, lanes: 1 }] } + - { id: 94, symbol: F29_F, name: f29_f, encoding: 29, dwarf_register: 61, units: [{ unit: U_F29, lanes: 1 }] } + - { id: 95, symbol: F30_F, name: f30_f, encoding: 30, dwarf_register: 62, units: [{ unit: U_F30, lanes: 1 }] } + - { id: 96, symbol: F31_F, name: f31_f, encoding: 31, dwarf_register: 63, units: [{ unit: U_F31, lanes: 1 }] } + - { id: 97, symbol: FFLAGS, name: fflags, encoding: 0, dwarf_register: 65, units: [{ unit: U_FFLAGS, lanes: 1 }], artificial: true, reserved: true } + - { id: 98, symbol: FRM, name: frm, encoding: 0, dwarf_register: 66, units: [{ unit: U_FRM, lanes: 1 }], artificial: true, reserved: true } + - { id: 99, symbol: V0, name: v0, encoding: 0, dwarf_register: 96, units: [{ unit: U_V0, lanes: 1 }] } + - { id: 100, symbol: V1, name: v1, encoding: 1, dwarf_register: 97, units: [{ unit: U_V1, lanes: 1 }] } + - { id: 101, symbol: V2, name: v2, encoding: 2, dwarf_register: 98, units: [{ unit: U_V2, lanes: 1 }] } + - { id: 102, symbol: V3, name: v3, encoding: 3, dwarf_register: 99, units: [{ unit: U_V3, lanes: 1 }] } + - { id: 103, symbol: V4, name: v4, encoding: 4, dwarf_register: 100, units: [{ unit: U_V4, lanes: 1 }] } + - { id: 104, symbol: V5, name: v5, encoding: 5, dwarf_register: 101, units: [{ unit: U_V5, lanes: 1 }] } + - { id: 105, symbol: V6, name: v6, encoding: 6, dwarf_register: 102, units: [{ unit: U_V6, lanes: 1 }] } + - { id: 106, symbol: V7, name: v7, encoding: 7, dwarf_register: 103, units: [{ unit: U_V7, lanes: 1 }] } + - { id: 107, symbol: V8, name: v8, encoding: 8, dwarf_register: 104, units: [{ unit: U_V8, lanes: 1 }] } + - { id: 108, symbol: V9, name: v9, encoding: 9, dwarf_register: 105, units: [{ unit: U_V9, lanes: 1 }] } + - { id: 109, symbol: V10, name: v10, encoding: 10, dwarf_register: 106, units: [{ unit: U_V10, lanes: 1 }] } + - { id: 110, symbol: V11, name: v11, encoding: 11, dwarf_register: 107, units: [{ unit: U_V11, lanes: 1 }] } + - { id: 111, symbol: V12, name: v12, encoding: 12, dwarf_register: 108, units: [{ unit: U_V12, lanes: 1 }] } + - { id: 112, symbol: V13, name: v13, encoding: 13, dwarf_register: 109, units: [{ unit: U_V13, lanes: 1 }] } + - { id: 113, symbol: V14, name: v14, encoding: 14, dwarf_register: 110, units: [{ unit: U_V14, lanes: 1 }] } + - { id: 114, symbol: V15, name: v15, encoding: 15, dwarf_register: 111, units: [{ unit: U_V15, lanes: 1 }] } + - { id: 115, symbol: V16, name: v16, encoding: 16, dwarf_register: 112, units: [{ unit: U_V16, lanes: 1 }] } + - { id: 116, symbol: V17, name: v17, encoding: 17, dwarf_register: 113, units: [{ unit: U_V17, lanes: 1 }] } + - { id: 117, symbol: V18, name: v18, encoding: 18, dwarf_register: 114, units: [{ unit: U_V18, lanes: 1 }] } + - { id: 118, symbol: V19, name: v19, encoding: 19, dwarf_register: 115, units: [{ unit: U_V19, lanes: 1 }] } + - { id: 119, symbol: V20, name: v20, encoding: 20, dwarf_register: 116, units: [{ unit: U_V20, lanes: 1 }] } + - { id: 120, symbol: V21, name: v21, encoding: 21, dwarf_register: 117, units: [{ unit: U_V21, lanes: 1 }] } + - { id: 121, symbol: V22, name: v22, encoding: 22, dwarf_register: 118, units: [{ unit: U_V22, lanes: 1 }] } + - { id: 122, symbol: V23, name: v23, encoding: 23, dwarf_register: 119, units: [{ unit: U_V23, lanes: 1 }] } + - { id: 123, symbol: V24, name: v24, encoding: 24, dwarf_register: 120, units: [{ unit: U_V24, lanes: 1 }] } + - { id: 124, symbol: V25, name: v25, encoding: 25, dwarf_register: 121, units: [{ unit: U_V25, lanes: 1 }] } + - { id: 125, symbol: V26, name: v26, encoding: 26, dwarf_register: 122, units: [{ unit: U_V26, lanes: 1 }] } + - { id: 126, symbol: V27, name: v27, encoding: 27, dwarf_register: 123, units: [{ unit: U_V27, lanes: 1 }] } + - { id: 127, symbol: V28, name: v28, encoding: 28, dwarf_register: 124, units: [{ unit: U_V28, lanes: 1 }] } + - { id: 128, symbol: V29, name: v29, encoding: 29, dwarf_register: 125, units: [{ unit: U_V29, lanes: 1 }] } + - { id: 129, symbol: V30, name: v30, encoding: 30, dwarf_register: 126, units: [{ unit: U_V30, lanes: 1 }] } + - { id: 130, symbol: V31, name: v31, encoding: 31, dwarf_register: 127, units: [{ unit: U_V31, lanes: 1 }] } + +register_banks: + - { id: 1, symbol: GPR, name: GPRB, maximum_size_bits: 64 } + - { id: 2, symbol: FPR, name: FPRB, maximum_size_bits: 64 } + - { id: 3, symbol: CSR, name: CSRB, maximum_size_bits: 32 } + - { id: 4, symbol: VR, name: VRB, maximum_size_bits: 512 } + +register_classes: + - + id: 1 + symbol: GPR + name: GPR + bank: GPR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31] + allocation_order: [X5, X6, X7, X28, X29, X30, X31, X10, X11, X12, X13, X14, X15, X16, X17, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X1] + - + id: 2 + symbol: GPRC + name: GPRC + bank: GPR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [X8, X9, X10, X11, X12, X13, X14, X15] + allocation_order: [X10, X11, X12, X13, X14, X15, X8, X9] + - + id: 3 + symbol: FPR64 + name: FPR64 + bank: FPR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [F0_D, F1_D, F2_D, F3_D, F4_D, F5_D, F6_D, F7_D, F8_D, F9_D, F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F16_D, F17_D, F18_D, F19_D, F20_D, F21_D, F22_D, F23_D, F24_D, F25_D, F26_D, F27_D, F28_D, F29_D, F30_D, F31_D] + allocation_order: [F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F16_D, F17_D, F0_D, F1_D, F2_D, F3_D, F4_D, F5_D, F6_D, F7_D, F28_D, F29_D, F30_D, F31_D, F8_D, F9_D, F18_D, F19_D, F20_D, F21_D, F22_D, F23_D, F24_D, F25_D, F26_D, F27_D] + - + id: 4 + symbol: FPR64C + name: FPR64C + bank: FPR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [F8_D, F9_D, F10_D, F11_D, F12_D, F13_D, F14_D, F15_D] + allocation_order: [F10_D, F11_D, F12_D, F13_D, F14_D, F15_D, F8_D, F9_D] + - + id: 5 + symbol: FPR32 + name: FPR32 + bank: FPR + size_bits: 32 + spill_size_bits: 32 + spill_alignment_bits: 32 + lanes: 1 + registers: [F0_F, F1_F, F2_F, F3_F, F4_F, F5_F, F6_F, F7_F, F8_F, F9_F, F10_F, F11_F, F12_F, F13_F, F14_F, F15_F, F16_F, F17_F, F18_F, F19_F, F20_F, F21_F, F22_F, F23_F, F24_F, F25_F, F26_F, F27_F, F28_F, F29_F, F30_F, F31_F] + allocation_order: [F10_F, F11_F, F12_F, F13_F, F14_F, F15_F, F16_F, F17_F, F0_F, F1_F, F2_F, F3_F, F4_F, F5_F, F6_F, F7_F, F28_F, F29_F, F30_F, F31_F, F8_F, F9_F, F18_F, F19_F, F20_F, F21_F, F22_F, F23_F, F24_F, F25_F, F26_F, F27_F] + - + id: 6 + symbol: FPR32C + name: FPR32C + bank: FPR + size_bits: 32 + spill_size_bits: 32 + spill_alignment_bits: 32 + lanes: 1 + registers: [F8_F, F9_F, F10_F, F11_F, F12_F, F13_F, F14_F, F15_F] + allocation_order: [F10_F, F11_F, F12_F, F13_F, F14_F, F15_F, F8_F, F9_F] + - + id: 7 + symbol: GPR_NX0 + name: GPR_NX0 + bank: GPR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31] + allocation_order: [X5, X6, X7, X28, X29, X30, X31, X10, X11, X12, X13, X14, X15, X16, X17, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X1] + - + id: 8 + symbol: GPR_NX0_NX2 + name: GPR_NX0_NX2 + bank: GPR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [X1, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31] + allocation_order: [X5, X6, X7, X28, X29, X30, X31, X10, X11, X12, X13, X14, X15, X16, X17, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X1] + - + id: 9 + symbol: FFLAGS + name: FFLAGS + bank: CSR + size_bits: 32 + spill_size_bits: 32 + spill_alignment_bits: 32 + lanes: 1 + registers: [FFLAGS] + allocation_order: [] + allocatable: false + - + id: 10 + symbol: FRM + name: FRM + bank: CSR + size_bits: 32 + spill_size_bits: 32 + spill_alignment_bits: 32 + lanes: 1 + registers: [FRM] + allocation_order: [] + allocatable: false + - + id: 11 + symbol: VR + name: VR + bank: VR + size_bits: 64 + spill_size_bits: 64 + spill_alignment_bits: 64 + lanes: 1 + registers: [V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30, V31] + allocation_order: [] + allocatable: false + +register_masks: + - + name: CSR_ILP32_LP64 + preserved: [X1, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27] + - + name: CSR_ILP32D_LP64D + preserved: [X1, X8, X9, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, F8_D, F9_D, F18_D, F19_D, F20_D, F21_D, F22_D, F23_D, F24_D, F25_D, F26_D, F27_D, F8_F, F9_F, F18_F, F19_F, F20_F, F21_F, F22_F, F23_F, F24_F, F25_F, F26_F, F27_F] + +mir_operand_flags: + direct_mask: 127 + direct: + - { name: riscv-call, value: 1 } + - { name: riscv-pcrel-hi, value: 2 } + - { name: riscv-pcrel-lo, value: 4 } + - { name: riscv-copy-f32, value: 8 } + - { name: riscv-copy-f64, value: 16 } + - { name: riscv-hi, value: 32 } + - { name: riscv-lo, value: 64 } + bitmask: [] -- cgit v1.2.3