struct例子测试流程

1、# Optimization Level 3 exec clang ${design}.c -emit-llvm -c -fno-builtin -O3 -fno-vectorize -fno-slp-vectorize -fno-unroll-loops -o ${design}_O3.bc使用clang O3进行编译出BC

2、找到hw_flow.cc文件,将inline的OPT打开,并将下列代码注释掉。

#if 0
  Optimizer opt;
  opt.setOutputFileName("hw.bc");
  opt.setNoOutput(false);
  opt.optimize(module);
#endif
 //  llc -march=v ${name}.bc -o ${name}.v
  Compiler llc;
  llc.set_march("v");
  llc.set_output_file_name(output);
  bool success = llc.compile(module);
  return success;

让其生成hw.bc,此时生成出来的bc文件没有function

3、通过我的rm_struct pass处理步骤得出的hw.bc文件,得到rm_struct.bc文件。

4、再打开上述注释文件,跑步骤3生成的bc文件,得到最终结果。

ESL_0.2 run.tcl

set design struct 
set out_dir output
# Set device, which will load the specific *.tcl
set_device Virtex7 
set_clock_period 10
#source legup.tcl
#source config.tcl


#exec ./mark_labels.pl ${design}.c > ${design}_labeled.c
#exec clang-3.5 ${design}_labeled.c -emit-llvm -pthread -c -fno-builtin -m32 -O3 -fno-vectorize -fno-slp-vectorize -mllvm -inline-threshold=-100 -o ${design}.bc 

#exec clang ${design}.c -emit-llvm -c -fno-builtin -O0 -mllvm -inline-threshold=-100 -fno-inline -fno-vectorize -fno-slp-vectorize -o ${design}.bc

# Optimization Level 0
exec clang ${design}.c -emit-llvm -c -fno-builtin -O1 -mllvm -disable-llvm-optzns -o ${design}.bc

# Optimization Level 1
#exec clang ${design}.c -emit-llvm -c -g -O1 -o ${design}_O1.bc
#exec opt -always-inline ${design}.bc -o  ${design}_inline.bc
#run_hybrid ${design}.bc  


if {[file isdirectory $out_dir]} {
  file delete -force $out_dir
}
file mkdir $out_dir


#run_hw ${design}_O1.bc
run_hw ${design}.bc  
#run_hw 3d.bc
#run_hw a.o.3.bc  

exec llvm-dis hw.bc
exec llvm-dis rm_struct.bc 

首先处理未被优化的bc文件,在对经过rm_struct pass处理得出的bc进行opt -O3优化

clang struct.c -emit-llvm -c -O1 -mllvm -disable-llvm-optzns -o 12-9-temp1.bc
opt -O3 12-9-temp.bc -o out.bc

为了与vivado对比,${design}_O3.bc是需要的最终文件。

set design struct 
set out_dir output
# Set device, which will load the specific *.tcl
set_device Virtex7 
set_clock_period 10
#source legup.tcl
#source config.tcl


#exec ./mark_labels.pl ${design}.c > ${design}_labeled.c
#exec clang-3.5 ${design}_labeled.c -emit-llvm -pthread -c -fno-builtin -m32 -O3 -fno-vectorize -fno-slp-vectorize -mllvm -inline-threshold=-100 -o ${design}.bc 

#exec clang ${design}.c -emit-llvm -c -fno-builtin -O0 -mllvm -inline-threshold=-100 -fno-inline -fno-vectorize -fno-slp-vectorize -o ${design}.bc

# Optimization Level 0
# exec clang ${design}.c -emit-llvm -c -fno-builtin -O1 -mllvm -disable-llvm-optzns -o ${design}.bc

# Optimization Level 1
#exec clang ${design}.c -emit-llvm -c -g -O1 -o ${design}_O1.bc
#exec opt -always-inline ${design}.bc -o  ${design}_inline.bc
#run_hybrid ${design}.bc  
# Optimization Level 3
 exec clang ${design}.c -emit-llvm -c -fno-builtin -O3 -fno-vectorize -fno-slp-vectorize -fno-unroll-loops  -o ${design}_O3.bc

 exec clang ${design}.c -emit-llvm -c -fno-builtin -O1 -mllvm -disable-llvm-optzns -fno-vectorize -fno-slp-vectorize -fno-unroll-loops -o ${design}_O1.bc

#exec clang ${design}.c -emit-llvm -c -fno-builtin -O1 -mllvm -disable-llvm-optzns -o ${design}.bc

if {[file isdirectory $out_dir]} {
  file delete -force $out_dir
}
file mkdir $out_dir

#run_hw ${design}_O1.bc
#run_hw ${design}_O3.bc  
#run_hw hw.bc
#run_hw 3d.bc
#run_hw a.o.3.bc  

exec llvm-dis hw.bc

exec llvm-dis rm_struct.bc 

opt struct_O1.bc -O3 -disable-loop-unrolling -disable-slp-vectorization -o 12-10-temp-O1.bc

-disable-loop-vectorization
-disable-tail-calls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值