Results 1 to 3 of 3

Thread: compatible issue between SPIR and LLVM/Clang 3.9+

  1. #1
    Join Date
    Mar 2017

    compatible issue between SPIR and LLVM/Clang 3.9+

    SPIR1.2 is defined using LLVM 3.2, and SPIR2.0 is defined using LLVM3.4. And, SPIR is also one of the possible output for SYCL device compiler (and SPIR is chosen in real production computecpp from codeplay) .

    But latest LLVM/clang (for example version 3.9) is not compatible with LLVM 3.2/3.4, mainly in two parts:
    1. some metadata is changed from module level to function level in llvm 3.9.
    for example, the kernel function flag. If spir is pared with llvm/clang 3.9, no kernel function could be found.

    2. mangle is changed (fixed to be correct for Itanium ABI) in llvm3.9. see
    with this change, the function name/parameters in spir could not be demangled correctly with llvm3.9.

    In open source community, it is nature to follow the new version of llvm/clang, but it conflicts with spir. Do we have any plan to discuss/resolve it? thanks.

  2. #2
    Join Date
    Mar 2017
    Quote Originally Posted by kisstop View Post
    If I understand correctly, clang 3.9.0 and 3.9.1 do not support OpenCL on ARM, and there is nothing that can be done after clang+llvm are compiled.
    sorry, but does this relative to the compatible issue?

    btw, as far as i know, clang compiles opencl kernel from source code to llvm IR, and then it is up to hardware vendor to convert llvm IR to hardware instructions.

  3. #3
    Junior Member
    Join Date
    Oct 2016
    Not sure if this is relevant, but I noticed it's possible to use eg`-Dllvm=llvm_40`, when compiling llvm, in order to rename the namespace. This means it's possible to link with both llvm versions, hopefully without issue. You can see a gist of the symbol dump of LLVMCore, after building with this define, here:

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Proudly hosted by Digital Ocean