Skip to content

Releases: KhronosGroup/SPIRV-LLVM-Translator

Binaries linked against LLVM 12.0.0

14 May 09:06
Compare
Choose a tag to compare

TODO:

  • Add description.

Full changelog is available at v11.0.0..v12.0.0

SPIR-V LLVM translator based on LLVM v7.1

05 Jun 15:13
Compare
Choose a tag to compare

Latest development build 2021-02-19 23:36 UTC

21 Jan 09:28
1dbc09c
Compare
Choose a tag to compare
Accept intrinsic namings into -spirv-allow-unknown-intrinsics (#912)

Previously, enabling the option would let all intrinsics through
the translator. From now on, the option can be configured so
that only specific intrinsic calls with the given prefix are
allowed, while those not matching the prefix will result in an
error as if no option was given.

The allowed intrinsic prefixes are fed into the option as a
comma-separated list, akin to `--spirv-ext`. The list can also
be left unspecified, which, as before, will accept all intrinsic
calls into SPIR-V.

One of the relevant use cases involves llvm.genx.* intrinsics,
which stem from SYCL ESIMD code, but can also mix with common LLVM
intrinsics that stem from regular SYCL code. It would be desirable
to allow ESIMD-specific intrinsics, but still error out on other
unknown ones, To better highlight this case, all ESIMD-specific
tests have been switched to passing an explicit prefix to the
CLI option.

Binaries linked against LLVM 11.0.0

16 Oct 14:43
Compare
Choose a tag to compare

Improvements

eae3788 Added experimental support for more debug operations from DWARF spec
52ec14a Added -spirv-debug-info-version option to allow setting desired extended instruction set for debug info
b703fb9 Added new API that allows pass translator options to regularization passes
49f1634 Added -spirv-allow-unknown-intrinsics option, which allows to translate arbitrary LLVM intrinsics as user-declared functions
6707e5e Implemented lowering of llvm.sadd.with.overflow.[i16/i32/i64]
0420de4 Added error message if WordCount exceeds 16-bit max value
43cf458 d147071 197abb9 Added support for SPIRV to LLVM translation of built-ins from cl_khr_subgroup_* extensions
25683eb Replaced abort() with exit() in llvm-spirv tool
d9063e9 Added possibility to control -spirv-mem2reg via API
47fdd96 Added support for translation of llvm.sqrt intrinsics into SPIR-V
8c9d757 Added handling for non-zero values during llvm.memset translation
7df2269 Improved support for llvm.memmove intrinsic
7bf9e14 Added support for DebugInfoNone in DebugTypeComposite
0d1a32e Added possibility to set MemoryModel via LLVM IR metadata
54bcbf2 Extended -spirv-max-version option to accept 1.2 and 1.3 SPIR-V versions
ef1606f 33d1092 Added support for non-constant Semantic argument of OpMemoryBarrier and OpControlBarrier
e89518b Enabled strict rules to set ContractionOFF
076974e Added -spirv-fp-contract={on|off|fast} option to control how floating-point contraction is translated
3882d24 Added support of function pointers in cast instructions
08849f5 Adjusted FPGA IVDep translation for embedded loops
54f072e Added support for lowering of constant expressions vector
667bf13 Added spirv-target-env option to select desired representation of SPIR-V in LLVM IR during SPIR-V -> LLVM IR translation
4a4e0ae Added translation of fast math flags for binary arithmetic ops
1ef8bfc Added support for translation of llvm.fabs and llvm.ceil intrinsics into SPIR-V
39edc1d Added support for translation of atomicrmw LLVM IR instruction into SPIR-V
0401a32 Added support for translation of cmpxchg LLVM IR instruction into SPIR-V
e980e04 Added support for translation of specialization constant instructions from SPIR-V Friendly IR
bab8e49 Improved error handling of llvm::getSpecConstInfo API

Support for SPIR-V extensions

4c608cc 73dfc6d 70a3c5f Added support for SPV_INTEL_vector_compute extension
f158d11 9891e0d Added support for SPV_INTEL_float_controls2
3bc9ff0 Added support for SPV_KHR_float_controls
12f05f6 Added support for OpConstFunctionPointerINTEL from SPV_INTEL_function_pointers
0bb365d Added support for hls_float functions from SPV_INTEL_arbitrary_precision_fixed_point
3a5ab43 Added support for SPV_INTEL_fpga_buffer_location
945913c Added support for LSU controls built-in from SPV_INTEL_fpga_memory_accesses
d8dd6f4 Added support for SPV_INTEL_usm_storage_classes
bc23f64 Added support for SPV_INTEL_optimization_hints
d6404ce Added support for SPV_INTEL_arbitrary_precision_integers
7abc765 Updated support for SPV_INTEL_fpga_loop_control to match revision E
05cdada Added support for ForcePow2DepthINTEL from SPV_INTEL_fpga_memory_attributes
7a0767f Added support for SPV_INTEL_inline_assembly
89c9541 Added support for SPV_INTEL_io_pipes
33d4946 Added support for NoGlobalOffsetINTEL from SPV_INTEL_kernel_attributes

Bug fixes

52ec14a Fixed Extended instruction set name for debug info in SPIR-V
37ec668 Fixed handling of phi nodes in LowerConstExprs.
0931be9 Fixed emitting SPIRV metadata for non-kernel functions in PreprocessMetadata
a86e15f Fixed translation of kernel args of arbitrary integer pointer type
9333920 Improved SPIRVToLLVM::transOCLBuiltinFromVariable to handle more complex cases
bd6bb33 Fixed crash on debug info when -spirv-allow-unknow intrinsics option enabled.
f85915c Fixed crash happened during LLVM function aliases translation
966bbba Fixed trunc to bool lowering
c013096 Fixed error on translation of llvm.trap instrinsic by ignoring it
9777594 453799f c9ca432 Fixed various issues with function pointers handling
39482f5 Fixed translation of calls to undefined functions when debug info is present
54827e6 Fixed translation of debug info for constant sampler
33d1092 Fixed translation of OpControlBarier to OCL1.2
cb3be86 Fixed translation of relational operations
710d731 Fixed capability emitted for SpecId decoration
6a03da6 Fixed generation of Float16 capability

Misc

8b58a7f Removed deprecated -spirv-atomic-prefix option
5e01f2c Removed code relying on OpSource during SPIR-V -> LLVM IR translation

Full changelog is available at v10.0.0..v11.0.0

Binaries linked against LLVM 10.0.0

30 Mar 17:21
Compare
Choose a tag to compare

Improvements

2674e50 Improved handling of invalid integer bit widths
b152e65 Added support for using an external LLVM tree when embedding in another project
dd09f1f Added support for specialization constants
d09b6b6 Added support for reading OpTranspose
5a56513 Added support for reading OpMatrixTimesMatrix
14e2c5f Added translation of FPFastMathMode decorations
128e4c5 Added support for fneg when translate from LLVM to SPIR-V
4581205 Added support for reading OpVectorTimesMatrix
e63a7cb Added support for reading OpMatrixTimesVector
9ed3c9d Added support for reading OpMatrixTimesScalar
87028d0 Added support for ctlz/cttz intrinsics via OpExtInst
a0a7f26 Added command line options to restrict maximum allowed SPIR-V version
355a324 Extend translator API to pass different translation options through it
a471a21 Added options to control list of allowed/disallowed extensions
f76a925 Removed -spirv-no-deref-attr option in favor of new options

Support for SPIR-V extensions

76e5087 Aligned FPGA Loop Controls translation with the spec (rev C)
cf331a5 Added support for translation of SPV_INTEL_media_block_io extension from SPIR-V to LLVM IR
3fdc1a5 Added support for Intel FPGA bank_bits memory from SPV_INTEL_fpga_memory_attributes extension
9833dca Added support for SPV_INTEL_fpga_function_attributes extension
934d50e Added support for SPV_INTEL_function_pointers extension

Docs

3f0fd56 Added documentation for version and extensions handling

Bug fixes

5642686 Fixed mangling of some cl_intel_device_size_avc_motion_estimation functions
129232c Fixed translation of read_image* built-ins to SPIR-V
1bf22f1 Fixed translation of template composite type debug info
6c32a4c Fixed translation of OpAtomicUMin and OpAtomicUMax instructions from SPIR-V to LLVM IR
0cd8d12 Fixed reading OpNop instruction from SPIR-V
7bb245d Fixed setting of nsw flag when translating OpSNegate
9b898c6 Fixed translator crash on empty input files
da3b1e4 Fixed mangling for s_upsample
e172692 Fixed comparison of pointers to conform with SPIR-V spec
a073937 Fixed translation of OpGenericCastToPtrExplicit
03389df Fixed OpLine debug info contradicting control flow semantics
78adccf Fixed missing OpExtension for instructions from SPV_INTEL_subgroups
10dee68 Fixed translation of 64-bit atomics to OpenCL 1.2
e692372 Fixed translation of OpBitReverse
05e8a8b Fixed enqueue_kernel builtins translation from SPIR-V to LLVM (also 00ce5f0)
b144b22 Fixed atomic functions translation to OpenCL 1.2
0b26dd3 Fixed translation of OpLogicalNot
af95033 Fixed handling of SPV_KHR_no_integer_wrap_decoration
2a1efad Fixed return type for fp16 vector comparison builtins
c8e3320 Replaced noduplicate attribute with convergent attribute for barriers

Full changelog is available at v9.0.0-1...v10.0.0

Binaries linked against LLVM 9.0.1

02 Mar 09:07
Compare
Choose a tag to compare
Pre-release

With this release LLVM is updated to 9.0.1
This update also contains various fixes and improvements backported from the master branch.

The changelog is available at v9.0.0-1...v9.0.1-1

Binaries linked against LLVM 8.0.1 (Update 3)

28 Feb 11:46
Compare
Choose a tag to compare

This update contains various fixes and improvements backported from the master branch.

The changelog is available at v8.0.1-2...v8.0.1-3

Binaries linked against LLVM 9.0.0

24 Sep 08:12
Compare
Choose a tag to compare

With this release LLVM is updated to version 9.
Also it includes number of bugfixes, improvements and new features.

What's new (notable changes):

36d4530 Remove the _SPIRV_LLVM_API switch
d51037e Translate Intel FPGA memory attributes
eea79f2 Reject 0-length arrays
967e8fa Propagate error message from SPIRVModule import
62fe6db Add separate functions for reading and translating SPIR-V
b1ecd4a Set atomic_compare_exchange argument address space to generic
564c8d1 Implementation of SPIRV->LLVM IR translation for SPV_INTEL_device_side_avc_motion_estimation extension.
756525f Select target ocl builtins version based on new spirv-ocl-builtins-version option [SPIRV->LLVM]
de0957d Disabling mem2reg by default
9d56898 Translate OpBitCount
898d0ec Translate OpBitReverse
d470e38 Add support for OpenCL 1.2 atomics builtins translation from SPIRV to LLVM
3b6882e Implement SPV_INTEL_unstructured_loop_controls extension
7923aae Add handling of max SPIR-V version to SPIRVReader
d14c20e Extend TranslatorOpts to handle SPIR-V extensions
5913618 Implementation of SPV_INTEL_function_pointers extension
07f2978 Update LLVM_SPIRV_VERSION in CMakeLists.txt to 9.0.0.1

Full changelog at 9e58245...v9.0.0-1

Binaries linked against LLVM 8.0.1 (Update 2)

16 Aug 16:22
Compare
Choose a tag to compare

This update contains various fixes and improvements backported from the master branch.

What's new (notable changes):

e232c22 Fix ocl v2.0 atomic functions arguments address spaces
5abe20a Select target ocl builtins version based on new spirv-ocl-builtins-version option [SPIRV->LLVM]
5f710f2 Remove the _SPIRV_LLVM_API switch
6b954b0 Fix lifetime start intrinsic translation
103a017 Add separate functions for reading and translating SPIR-V
600943f Set atomic_compare_exchange argument address space to generic
72fba58 Remove generating of spirv.EntryPoint metadata
6e0d11d Fix translation of undef initializers of LLVM structures
72d54ea Support addrspacecast on SPIR-V built-in variables
d14a7f9 Map memory semantics and memory order enums in runtime
d9c77fa Add support for OpenCL 1.2 atomics builtins translation from SPIRV to LLVM
81a82b0 Enable translation of pass-by-value and pass-by-reference DI flags
fbb2f2e Translate OpBitReverse
9704dfb Translate OpBitCount
040b3f0 Disabling mem2reg by default

Full changelog is available at v8.0.1-1...v8.0.1-2

Binaries linked against LLVM 8.0.1

26 Jun 17:54
Compare
Choose a tag to compare
v8.0.1-1

Tagging 8.0.1 release