参考:https://github.com/harvard-acc/LLVM-Tracer
0. 环境安装(用的docker)
docker pull xyzsam/gem5-aladdin
docker run -it --rm --mount source
=gem5-aladdin-workspace,target
=/workspace xyzsam/gem5-aladdin
1.使用
Go to /your/path/to/LLVM-Tracer/example/triad
export WORKLOAD
=triad
export TRACER_HOME
=/your/path/to/LLVM-Tracer
${TRACER_HOME}/bin/get-labeled-stmts triad.c -- -I
${LLVM_HOME}/lib/clang/6.0.0/include
clang -g -O1 -S -fno-slp-vectorize -fno-vectorize -fno-unroll-loops -fno-inline -emit-llvm -o triad.llvm triad.c
opt -S -load
=${TRACER_HOME}/build/full-trace/full_trace.so -fulltrace -labelmapwriter triad.llvm -o triad-opt.llvm
llc -filetype
=asm -o full.s full.llvm
g++ -fno-inline -o triad-instrumented full.s -lm -lz -no-pie
./triad-instrumented
注:几乎每一步都会生成不同的文件,可以每执行一句后,ls查看triad文件夹里的变化