2
我嘗試編譯我的opencl內核到llvm IR。「clang」執行常見的子表達式消除嗎?
下面的指令
/家庭/爲mypass/LLVM /調試+斷言/斌/鐺-I /家庭/ ian031545/libclc /通用/包括-include CLC/clc.h -Dcl_clang_storage_class_specifiers -target nvptx - nvidiacl -Xclang -mlink-位碼文件-Xclang /ian031545/libclc/nvptx--nvidiacl/lib/builtins.bc -S -emit,LLVM kernel.cl -o kernel.ll
OpenCL的內核的結構看起來像這樣
__kernel(){
if() x[i]=a+b+1
else x[i]=a+b+2
}
和使用上面這個樣子的指令後,LLVM IR
entry: // it perform a+b here , we say c
then part: // it perform c+1
else part: // it perform c+2
有誰知道爲什麼鐺做這樣的優化在這裏的? (我們說它的前端)
或者它可能不是一種優化?
我不知道爲什麼鏗鏘在這裏做這個,爲了什麼目的?
我可以問問clang不要這樣做嗎?在上面的指令中添加標誌?
在此先感謝
謝謝,但這並沒有早期的優化。我可以關閉一些像「early cse」這樣的特定優化嗎? –
不是我所知。但是,使用'-O0'生成未優化的IR後,您可以使用'opt'完成所需的所有優化。 – shrm
@IanTsai考慮投票和/或接受答案,如果它有幫助。 – shrm