LLVM 上的简单标量支持
Posted
技术标签:
【中文标题】LLVM 上的简单标量支持【英文标题】:Simplescalar support on LLVM 【发布时间】:2012-02-10 05:28:41 【问题描述】:我想查看 LLVM IR 程序的配置文件。简单标量模拟器是否支持 LLVM?有没有其他模拟器可以做同样的事情?
【问题讨论】:
【参考方案1】:如果 Simplescalar 支持 ARM 和 x86 ELF 二进制文件,它可以与 LLVM 编译的程序一起使用。
但如果您想做简单的分析(在真实 CPU 上运行时程序的每个部分需要多少时间),您可以查看更多已知的分析器,例如:
google-perftools 或 callgrind/cachegrind 或 oprofile.您不能只运行 LLVM IR,因为 SimpleScalar 或通常的分析器不支持 LLVM 的 IR。 lli 和其他 llvm 工具支持 IR。
如果您想分析使用了哪些分支以及使用频率,可以使用 LLVM 分析 PGO(配置文件引导优化)。有 llvm-prof utility 和 utils/profile.pl
脚本来分析 LLVM IR 程序。
如何来自utils/profile.pl
source:
# Program: profile.pl
#
# Synopsis: Insert instrumentation code into a program, run it with the JIT,
# then print out a profile report.
#
# Syntax: profile.pl [OPTIONS] bytecodefile <arguments>
#
# OPTIONS may include one or more of the following:
# -block - Enable basicblock profiling
# -edge - Enable edge profiling
# -function - Enable function profiling
# -o <filename> - Emit profiling information to the specified file, instead
# of llvmprof.out
#
# Any unrecognized options are passed into the invocation of llvm-prof
内部是
-
运行 opt 并带有一些
-insert-*-profiling
通行证。输出是仪表 IR
使用 lli 运行内置的 IR(希望使用 JIT)
启动 llvm-prof 以将 llvmprof.out 转换为可读文本
PS 有一些关于 LLLVM 分析的研究论文:llvm.org/pubs/2010-04-NeustifterProfiling.pdf
【讨论】:
以上是关于LLVM 上的简单标量支持的主要内容,如果未能解决你的问题,请参考以下文章