From adcf8c9b1bd1b47e00bf859693112cea1f7e8c9f Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Mon, 10 Aug 2026 20:36:50 +0800 Subject: [Tooling] Complete backend tooling and validation --- backend/tools/MIRTool/CMakeLists.txt | 91 ++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 backend/tools/MIRTool/CMakeLists.txt (limited to 'backend/tools/MIRTool/CMakeLists.txt') diff --git a/backend/tools/MIRTool/CMakeLists.txt b/backend/tools/MIRTool/CMakeLists.txt new file mode 100644 index 0000000..3388481 --- /dev/null +++ b/backend/tools/MIRTool/CMakeLists.txt @@ -0,0 +1,91 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +add_executable(RCCBackendMIRTool MIRToolMain.cpp) +rcc_backend_configure_target(RCCBackendMIRTool) +target_link_libraries( + RCCBackendMIRTool + PRIVATE + RCCBackend::Tooling + RCCBackend::RISCV +) + +set_target_properties( + RCCBackendMIRTool + PROPERTIES + OUTPUT_NAME rcc-backend-mir +) + +install( + TARGETS RCCBackendMIRTool + EXPORT RCCBackendTargets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +) + +find_program(RCCBackendMIRToolLLVMMC NAMES llvm-mc-20 llvm-mc) +find_program(RCCBackendMIRToolLLVMReadELF NAMES llvm-readelf-20 llvm-readelf) +find_program(RCCBackendMIRToolLLVMObjdump NAMES llvm-objdump-20 llvm-objdump) + +set(RCCBackendMIRToolInputDirectory "${RCC_BACKEND_SOURCE_DIR}/unittests/Target/Inputs") +set(RCCBackendMIRToolTestDirectory "${CMAKE_CURRENT_BINARY_DIR}/tests") + +add_test( + NAME RCCBackend.MIRTool.StagesAndPasses + COMMAND + "${CMAKE_COMMAND}" + "-DTOOL=$" + "-DINPUT=${RCCBackendMIRToolInputDirectory}/RISCVGenericPipeline.mir" + "-DWORK_DIRECTORY=${RCCBackendMIRToolTestDirectory}/stages" + -P "${CMAKE_CURRENT_SOURCE_DIR}/MIRToolStageTest.cmake" +) + +foreach( + InputName + IN ITEMS + RISCVGenericPipeline + RISCVWideConstantPipeline + RISCVDataPipeline + RISCVStackFramePipeline +) + add_test( + NAME RCCBackend.MIRTool.Assembly.${InputName} + COMMAND + "${CMAKE_COMMAND}" + "-DTOOL=$" + "-DINPUT=${RCCBackendMIRToolInputDirectory}/${InputName}.mir" + "-DOUTPUT=${RCCBackendMIRToolTestDirectory}/${InputName}.s" + -DOUTPUT_KIND=assembly + "-DLLVM_MC=${RCCBackendMIRToolLLVMMC}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/MIRToolOutputTest.cmake" + ) + add_test( + NAME RCCBackend.MIRTool.Object.${InputName} + COMMAND + "${CMAKE_COMMAND}" + "-DTOOL=$" + "-DINPUT=${RCCBackendMIRToolInputDirectory}/${InputName}.mir" + "-DOUTPUT=${RCCBackendMIRToolTestDirectory}/${InputName}.o" + -DOUTPUT_KIND=object + "-DLLVM_READELF=${RCCBackendMIRToolLLVMReadELF}" + "-DLLVM_OBJDUMP=${RCCBackendMIRToolLLVMObjdump}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/MIRToolOutputTest.cmake" + ) +endforeach() + +add_test( + NAME RCCBackend.MIRTool.Operations + COMMAND + "${CMAKE_COMMAND}" + "-DTOOL=$" + "-DINPUT=${RCCBackendMIRToolInputDirectory}/RISCVGenericPipeline.mir" + "-DWORK_DIRECTORY=${RCCBackendMIRToolTestDirectory}/operations" + -P "${CMAKE_CURRENT_SOURCE_DIR}/MIRToolOperationsTest.cmake" +) + +set_tests_properties( + RCCBackend.MIRTool.StagesAndPasses + RCCBackend.MIRTool.Operations + PROPERTIES TIMEOUT 180 +) + +rcc_backend_register_format_files("${CMAKE_CURRENT_SOURCE_DIR}/MIRToolMain.cpp") +rcc_backend_register_tidy_files("${CMAKE_CURRENT_SOURCE_DIR}/MIRToolMain.cpp") -- cgit v1.2.3