News:LLVM Targets

LLVM Targets

LLVM Targets

By Oleg / December 8, 2016

With =sys-devel/llvm-3.9.0 and =sys-devel/clang-3.9.0 new LLVM_TARGETS USE_EXPAND introduced which is relying on llvm's build system configuration for a specific microarchitecture host targets support:

  • AMDGPU support for AMD & ATI graphic cards.
  • X86 support for 32-bit, 64-bit and x32 arch. (AMD64 and EMT64, respectively)
  • BPF support for Berkeley Packet Filtering.
  • ARM support for ARM processors.
  • NVPTX support for NVIDIA cards.

By default following targets enabled:

  • 32- and 64-bit arch profiles: X86, AMDGPU, BPF and NVPTX
  • arm profile: ARM and BPF

Changing this settings is not recommended, however, if wanted, with LLVM_TARGETS it is now possible to control what microarchitecture support LLVM will be configured with, depending on hardware. For example, with NVIDIA cards, it make sense to leave only NVPTX targets. To achieve this, following changes in /etc/portage/make.conf needed:

/etc/portage/make.conf - Excerpt of make.conf with NVIDIA cards
LLVM_TARGETS="NVPTX"

For ATI cards this can confuse with AMDGPU video xorg drivers! While named same, this is a different thing. LLVM target support for all range of ATI cards named AMDGPU

/etc/portage/make.conf - Excerpt of make.conf with ATI cards
LLVM_TARGETS="AMDGPU"

Let's verify what targets enabled with default settings:

oleg2 ~ # llc -version
LLVM (http://llvm.org/):
  LLVM version 3.9.0
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: westmere

  Registered Targets:
    amdgcn  - AMD GCN GPUs
    bpf     - BPF (host endian)
    bpfeb   - BPF (big endian)
    bpfel   - BPF (little endian)
    nvptx   - NVIDIA PTX 32-bit
    nvptx64 - NVIDIA PTX 64-bit
    r600    - AMD GPUs HD2XXX-HD6XXX
    x86     - 32-bit X86: Pentium-Pro and above
    x86-64  - 64-bit X86: EM64T and AMD64
oleg2 ~ #