2013-08-04 4 views
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이 왜 이런 종류의 최적화를 수행하는지 알고 있습니까? (우리는 프론트 엔드라고 말합니다)

또는 최적화의 종류 일 수 있습니까?

왜 여기 clang이 어떤 목적으로이 작업을 수행하는지 모르겠습니다.

위의 명령에 플래그를 추가하여 clang에 요청하지 않을 수 있습니까? 사전

답변

1

에서

덕분에 연타로 -O0 플래그를 사용하십시오.

+0

감사합니다. 그러나 초기 최적화가 아닙니다. "early cse"와 같은 특정 최적화 기능을 끌 수 있습니까? –

+1

제 지식은 없습니다. 그러나 일단'-O0'를 사용하여 최적화되지 않은 IR을 생성하면'opt'를 사용하여 필요한 모든 최적화 작업을 수행 할 수 있습니다. – shrm

+0

@IanTsai 답변이 도움이된다면 위 표결 및/또는 수락을 고려하십시오. – shrm