> Хз что они под этим имеют в виду, но в зависимостях beignet нет LLVMEnvironment variables are used all over the code. Most important ones are:
OCL_OUTPUT_GEN_IR (0 or 1). Output Gen IR (scalar intermediate representation) code
OCL_OUTPUT_LLVM (0 or 1). Output LLVM code after the lowering passes
OCL_OUTPUT_LLVM_BEFORE_EXTRA_PASS (0 or 1). Output LLVM code before the lowering passes
>и они сами же и говорили что используют местечковый кодогенератор, т.к. все попытки использовать LLVM приводили к большим граблям.
Вот вы опять требуете от ллвм чего то не того. Ессно если хочется кодогенерировать для экзотической архитектуры то придется поработать самому, да. Как раз в принципе то поддержка влив заложена, но конечно добиться чтоб она нормально работала придется самим заинтересованным лицам, кому же еще то.
VLIW Packetizer
In a Very Long Instruction Word (VLIW) architecture, the compiler is responsible for mapping instructions to functional-units available on the architecture. To that end, the compiler creates groups of instructions called packets or bundles. The VLIW packetizer in LLVM is a target-independent mechanism to enable the packetization of machine instructions.
вот и нвидия тоже свой бэкэнд к ллвм написала и что?
The NVPTX code generator under lib/Target/NVPTX is an open-source version of the NVIDIA NVPTX code generator for LLVM. It is contributed by NVIDIA and is a port of the code generator used in the CUDA compiler (nvcc). It targets the PTX 3.0/3.1 ISA and can target any compute capability greater than or equal to 2.0 (Fermi). This target is of production quality and should be completely compatible with the official NVIDIA toolchain.