1、# optimization level 3 exec clang $.c -emit-llvm -c -fno-builtin -o3 -fno-vectorize -fno-slp-vectorize -fno-unroll-loops -o $_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 $.bc -o $.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 $.c > $_labeled.c
#exec clang-3.5 $_labeled.c -emit-llvm -pthread -c -fno-builtin -m32 -o3 -fno-vectorize -fno-slp-vectorize -mllvm -inline-threshold=-100 -o $.bc
#exec clang $.c -emit-llvm -c -fno-builtin -o0 -mllvm -inline-threshold=-100 -fno-inline -fno-vectorize -fno-slp-vectorize -o $.bc
# optimization level 0
exec clang $.c -emit-llvm -c -fno-builtin -o1 -mllvm -disable-llvm-optzns -o $.bc
# optimization level 1
#exec clang $.c -emit-llvm -c -g -o1 -o $_o1.bc
#exec opt -always-inline $.bc -o $_inline.bc
#run_hybrid $.bc
iffile
mkdir
$out_dir
#run_hw $_o1.bc
run_hw $.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對比,$_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 $.c > $_labeled.c
#exec clang-3.5 $_labeled.c -emit-llvm -pthread -c -fno-builtin -m32 -o3 -fno-vectorize -fno-slp-vectorize -mllvm -inline-threshold=-100 -o $.bc
#exec clang $.c -emit-llvm -c -fno-builtin -o0 -mllvm -inline-threshold=-100 -fno-inline -fno-vectorize -fno-slp-vectorize -o $.bc
# optimization level 0
# exec clang $.c -emit-llvm -c -fno-builtin -o1 -mllvm -disable-llvm-optzns -o $.bc
# optimization level 1
#exec clang $.c -emit-llvm -c -g -o1 -o $_o1.bc
#exec opt -always-inline $.bc -o $_inline.bc
#run_hybrid $.bc
# optimization level 3
exec clang $.c -emit-llvm -c -fno-builtin -o3 -fno-vectorize -fno-slp-vectorize -fno-unroll-loops -o $_o3.bc
exec clang $.c -emit-llvm -c -fno-builtin -o1 -mllvm -disable-llvm-optzns -fno-vectorize -fno-slp-vectorize -fno-unroll-loops -o $_o1.bc
#exec clang $.c -emit-llvm -c -fno-builtin -o1 -mllvm -disable-llvm-optzns -o $.bc
iffile
mkdir
$out_dir
#run_hw $_o1.bc
#run_hw $_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
struct繼承例子
include using namespace std enum breed struct mammal mammal int getage const void setage int age int getweight const void setweight int weight void sp...
流程控制 struct
if但選擇結構 if 布林表示式 if雙選擇結構 if 布林表示式 else if多選擇結構 if 布林表示式1 else if 布林表示式2 else 巢狀的if結構 if 布林表示式1 switch多選擇結構 switch expression while迴圈 int i 0 int sum 0...
struct2執行流程
1 客戶端提交乙個httpservletrequest請求 action或jsp頁面 2 請求被提交到一系列filter過濾器,如actioncleanup和filterdispatcher等 3 filterdispatcher是struts2控制器的核心,它通常是過濾器鏈中的最後乙個過濾器 6 ...