【问题标题】:Using llvm-mca with CMake在 CMake 中使用 llvm-mca
【发布时间】:2021-11-24 03:04:42
【问题描述】:

我正在尝试设置 llvm-mca 以使用 CMake。官方文档给出了简单的命令来输出信息,例如。

$ clang foo.c -O2 -target x86_64-unknown-unknown -S -o - | llvm-mca -mcpu=btver2

这对简单文件非常有用。但是我不确定如何对此进行扩展并使用 CMake 为实际项目实施它。

【问题讨论】:

  • add_custom_command.

标签: cmake llvm-mca


【解决方案1】:

为遇到此问题的其他人发布我的答案。

#compile with optimizations on
target_compile_options(Executable PRIVATE -O3 -g)

#this will convert the passed file to assembly
add_custom_command(
        OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/assembly.s
        COMMAND ${CMAKE_CXX_COMPILER}
        ARGS ${CMAKE_CURRENT_SOURCE_DIR}/foo.cpp -O3 -S -o ${CMAKE_CURRENT_SOURCE_DIR}/assembly.s
        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/foo.cpp
        COMMENT "Generating The Assembly File"
        VERBATIM
)

#this will convert the assembly analysis
add_custom_command(
        OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/analysis.txt
        COMMAND llvm-mca
        ARGS -mcpu=btver2 -timeline ${CMAKE_CURRENT_SOURCE_DIR}/assembly.s -o ${CMAKE_CURRENT_SOURCE_DIR}/analysis.txt
        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assembly.s
        COMMENT "Running LLVM MCA"
        VERBATIM
)

add_custom_target(run ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assembly.s ${CMAKE_CURRENT_SOURCE_DIR}/analysis.txt)

可能值得一提的是,我绝不是专家,但 LLVM MCA 似乎用于一次分析单个文件。这意味着一个简单的命令(例如我在上面提问时粘贴的)实际上就足够了。

还有一个错误“错误:未找到汇编指令”。意味着优化可能删除了 START 和 END 宏之间的所有代码(当我制作一个简单的测试程序时发生在我身上)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多