pub mod riscv_asm_printer;
pub mod riscv_bitmanip_isel;
pub mod riscv_calling_convention;
pub mod riscv_crypto_isel;
pub mod riscv_deep;
pub mod riscv_frame_lowering;
pub mod riscv_hypervisor_isel;
pub mod riscv_instr_info;
pub mod riscv_isel;
pub mod riscv_mc_decoder;
pub mod riscv_mc_encoder;
pub mod riscv_optimize;
pub mod riscv_register_info;
pub mod riscv_subtarget;
pub mod riscv_target_machine;
pub mod riscv_vector_isel;
pub mod riscv_x86_bridge;
pub use riscv_asm_printer::RiscVAsmPrinter;
pub use riscv_bitmanip_isel::{
riscv_bitmanip_isel_table, BitmanipPattern, RiscVBitmanipIselEngine, RiscVBitmanipIselTable,
};
pub use riscv_calling_convention::{
RiscVArgClass, RiscVArgInfo, RiscVCallFrame, RiscVCallingConvention, RiscVTypeInfo,
};
pub use riscv_crypto_isel::{
build_riscv_crypto_isel_table, CryptoOperation, RiscVCryptoFeatures, RiscVCryptoIselEngine,
RiscVCryptoIselTable, RiscVCryptoPattern,
};
pub use riscv_hypervisor_isel::{
build_riscv_hypervisor_isel_table, hypervisor_csrs, RiscVHypervisorFeatures,
RiscVHypervisorIselEngine, RiscVHypervisorIselTable, RiscVHypervisorPattern,
};
pub use riscv_instr_info::{RiscVInstrDesc, RiscVInstrInfo, RiscVOpcode, RiscVOperandType};
pub use riscv_isel::RiscVInstructionSelector;
pub use riscv_mc_decoder::RiscVMCDecoder;
pub use riscv_mc_encoder::RiscVMCEncoder;
pub use riscv_optimize::{RiscVOptStats, RiscVPeepholeOptimizer};
pub use riscv_register_info::{
RiscVRegClass, RiscVRegisterInfo, FPR_BASE, GPR_BASE, RV_FPR_COUNT, RV_GPR_COUNT, RV_MAX_REG_ID,
};
pub use riscv_subtarget::RiscVSubtarget;
pub use riscv_target_machine::{CodeModel, OptimizationLevel, RelocModel, RiscVTargetMachine};
pub use riscv_vector_isel::{
RVVAsmEmitter, RVVConfig, RiscVVectorISel, RiscVVectorOpcode, RVVLMUL, RVVSEW,
};
pub use riscv_x86_bridge::{
build_riscv_to_x86_map, build_x86_to_riscv_map, compare_instruction_cost, riscv_opcode_cost,
x86_opcode_cost, AliasRelation, AllocationStrategy, ArgPassingClass, BranchComparison,
BridgeConfig, BridgeInstruction, BridgeRISCVCallingConvention, BridgeRISCVFrameLowering,
BridgeRISCVInstrInfo, BridgeRISCVTargetMachine, BridgeRISCvRegisterInfo, BridgeStats,
CodeSizeComparison, ComparisonMetrics, ConstraintType, CostComparison,
CrossTargetBranchAnalyzer, CrossTargetConstMaterializer, CrossTargetFrameLowering,
CrossTargetLowering, CrossTargetOptResult, CrossTargetRISCV, CrossTargetRegisterAlloc,
ExtensionFlags, ISetComparison, LiveInterval, LoweringRule, OptimizationComparison,
PatternCategory, PerformanceComparison, RISCVX86Bridge, RegisterAlias, ReplacementStep,
RiscVABI, SharedFrameLoweringContext, SharedISelMatch, SharedISelPatterns, SharedPattern,
SharedRegClass, SharedRegisterAllocContext, SpillSlotInfo, TargetArch, TargetFeatureSet,
X86RISCVComparisons, RV32_DATA_LAYOUT, RV64_DATA_LAYOUT, RV_FPR_NAMES, RV_GPR_NAMES,
RV_VR_NAMES,
};
pub const RISCV_ENDIANNESS: &str = "little";
pub const RISCV_STACK_ALIGNMENT: u32 = 16;
pub const RISCV_RED_ZONE_SIZE: u32 = 0;
pub const RISCV_PAGE_SIZE: u32 = 4096;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_riscv_constants() {
assert_eq!(RISCV_ENDIANNESS, "little");
assert_eq!(RISCV_STACK_ALIGNMENT, 16);
assert_eq!(RISCV_RED_ZONE_SIZE, 0);
assert_eq!(RISCV_PAGE_SIZE, 4096);
}
}