Releases: intel/intel-graphics-compiler
igc-1.0.9289
Fixed Issues / Improvements
- Implement support for KHR SPV-IR for select functions from OpenCL Extended Instruction Set
- Automatic detection of SPMD, ESIMD and SPMD+ESIMD SPIR-V modules
- Implement support for KHR SPV-IR for native math functions from OpenCL Extended Instruction Set
- ZEBinary: Split const buffer into two, one for general consts, one for strings
- Support for SPV_INTEL_group_instructions extension
- Support relocations inside const/global sections
- Implement support for KHR SPV-IR for math_ext functions from OpenCL Extended Instruction Set
- Implement KHR SPV-IR support for OpSMulExtended and OpUMulExtended
- Automatic detection of SPMD, ESIMD and SPMD+ESIMD SPIR-V modules
- Implement support for KHR SPV-IR for integer math functions from OpenCL Extended Instruction Set
- ZEBIN: Support emitting .visaasm section if the corresponding field in program output is set.
- Implement support for KHR SPV-IR for half math functions from OpenCL Extended Instruction Set
- Implement support for KHR SPV-IR for geometric math functions from OpenCL Extended Instruction Set
- Implement support for KHR SPV-IR for GenericCastToPtrExplicit and GenericPtrMemSemantics
- Implement support for KHR SPV-IR for opcodes operating on OpTypePipe and OpTypeReserveId
- Make FunctionControl and SelectiveFunctionControl compatible with each other
- Selectively set FunctionControl for functions subset
- Implement support for KHR SPV-IR for common math functions from OpenCL Extended Instruction Set
- No LUT log() implementation for double.
- Implement support for KHR SPV-IR for shuffle2 from Extended Instruction Set
- Implement support for KHR SPV-IR for opcodes operating on OpTypeEvent
- Implement support for KHR SPV-IR for s_min and u_min from OpenCL Extended Instruction Set
- Implement support for KHR SPV-IR for prefetch function from OpenCL Extended Instruction Set
- Implement support for KHR SPV-IR for opcodes operating on OpTypePipe and OpTypeReserveId
- Implement support for KHR SPV-IR for shuffle and shuffle2 from Extended Instruction Set
- Implement support for KHR SPV-IR for opcodes operating on OpTypeDeviceEvent and OpTypeQueue
- Change the Spill Threshold for SLM heuristic for better SIMD selection
- New VISA_BUILDER_API for user to query the generated .visaasm string.
- Add mapping for DWARF language codes to SourceLanguage
- Separate SymbolTable and RelocTable generation for patch token and ZEBinary
- Allowing to combine canonicalization and saturation
- Parametrize handling of 2d images in runtime info
- Promote Arg/Ret to virtual variables for eliminations after subroutine call conversion
- Improve decoding of constant composites
- Move replacement of 2d image type to OCL runtime info
- Implement support for KHR SPV-IR for OpBuildNDRage
- Support Unordered SPIR-V builtin in VC
- Implement popcnt and czt via BiFs in VC
- Allow implicit arg usage in subroutine to load from buffer
- Update to make CreateVISALabelVar always return a fresh label.
- Implement SPIR-V globals via BIFs in VC
- Implement support for KHR SPV-IR for image query opcodes
- Enabling LTO for stage compilation
- Enable preemption for VC path on SKL+
- Implement support for KHR SPV-IR for OpImageRead and OpImageWrite opcodes
- Minimize chances of spilling unaligned scalars. Spilling unaligned scalars may not benefit register pressure, and in fact could cause avalanche effect on spills.
- Change data type of mask to an STL type for protection from memory overruns.
- Replace known workgroup size after inlining
- Move VCPassManager to VCSupport library
- Enable URBPartialWrites pass by default
- Variables marked as live-in should be treated as input variables.
- Add bundle conflict for none-dpas three source instructions
- Add new vISA opcode "add3o" for ternary add with overflow condition modifier.
- Add new implicit args intrinsics support
- Check to Avoid Load merge for negative addresses.
- Add bundle conflict for three source instructions
- Deduce general operand instead of indirect in inline assembly if indirection doesn't exist
- Allowing to combine canonicalization and saturation
- Enable URBPartialWrites pass by default
- Change the default ArgKind in CMABI pass
- Support Ordered SPIR-V builtin in VC
- Implement support for KHR SPV-IR for SPV_INTEL_subgroups opcodes
- Improve of mapping instr to func in IGCMetric
- Disallow aligned scalar split if variable is used as send dst.
Dependencies revisions
- intel/opencl-clang@9247630
- KhronosGroup/SPIRV-LLVM-Translator@329ab86 (for opencl-clang)
- intel/vc-intrinsics@2cd5a7b
- KhronosGroup/SPIRV-LLVM-Translator@55278a4 (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM11/Clang11 are included.
Full Changelog: igc-1.0.8744...igc-1.0.9289
igc-1.0.8744
Fixed Issues / Improvements
- Initial implementation of INTEL Joint Matrix SPIR-V extension,
- Fix cross-compiling elf_packager,
- LLVM 13 build fixes,
- Continued work on
DIModule
SPIRV extension, - Extend VC dumps with the debug info diagnostics,
- Other fixes and improvements.
Dependencies revisions
- intel/opencl-clang@fd68f64
- KhronosGroup/SPIRV-LLVM-Translator@c67e6f2 (for opencl-clang)
- intel/vc-intrinsics@e5ad7e0
- KhronosGroup/SPIRV-LLVM-Translator@d8d516e (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM11/Clang11 are included.
igc-1.0.8708
Fixed Issues / Improvements
- Switch to LLVM11.1.0
- Part fix for buildbreak on LLVM12
- Part fix for buildbreak on LLVM13
- Fix for excessive stateless allocations
- Simplify extraction of DISubprogram node
- Support funnel shift intrinsics
- Enable madw use in i64 mul emulator.
- Forcing SIMD16 when there are too many memory access instructions
- Support for cl_khr_integer_dot_product
- Formatting fixes in DWARF emitters
- Other minor fixes and improvements.
Dependencies revisions
- intel/opencl-clang@fd68f64
- KhronosGroup/SPIRV-LLVM-Translator@c67e6f2 (for opencl-clang)
- intel/vc-intrinsics@e5ad7e0
- KhronosGroup/SPIRV-LLVM-Translator@d8d516e (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM11/Clang11 are included.
igc-1.0.8517
Fixed Issues / Improvements
- Fix compile output dumping when recompilation happens
- simplify extraction of DISubprogram nodes
- Apply WA on flag spill
- regsiter allocation support for NoMask WA
- Enable madw use in i64 mul emulator
- Fix the madw issue if the dst is not GRF-aligned or the stride is not 1.
- Enabling CustomPasses for OpenCL
- Calculate correct sub-reg offset for spilled destination when preload is skipped.
- Add missing check on argument type.
- Add support for FNeg instruction uniform analysis
- Prepare VCBE to handle standalone stack calls
- Parsing Options for internal options
- Add diagnostics to GenXLegalization
- Insert extra mov to avoid immediate source for BF_CVT instruction
- Change passing -debug option to finalizer
- Add diagnostics to GenXLegalization
- Refactor SPIRV builtins related to SPV_INTEL_subgroups extension
- Mark payload live-outs as busy for gtpin.
- Remove unecessary DebugFlag enum values
- Add PatternMatch support for FNeg instruction
- Mark setup inputs as PayloadLiveOut to avoid GTPin's issue
- Fix arguments kind rewriting in bindless promotion
- Enable optimization to skip redundant fill in RMW.
- Convert URB partial writes to full-mask writes
- Fix the src/dst regioning issue in emitSimdMediaBlockWrite().
- Autogenerate getTranslatedBuiltinOperands in CMCL
- Autogenerate getTranslatedBuiltinType in CMCL
- Add an assertion in GenXAggregatePseudoLowering
- Emit error for externs unresolved during lining
- Autogenerate IntrinsicForBuiltin array in CMCL
- Remove strinstream usage causing memory freeing issues
- Add support for LLVM 12 in Vector Compiler
- Support plain samplers for ze binary
- Fix predicate commonning in GenXCategory
- Add option for scheduling control
- Apply WA on flag spill
- Autogenerate BuiltinCallHandlers array in CMCL.
- Fix use-after-free in GenXSimdCFConformance
- Fix non-deterministic processing in GenXCisaBuilder
- Fix calculation of type size for function pointers
- Mark payload live-outs as busy for gtpin.
- Allow mid-thread pre-emption even when stack calls are used.
- Preserve memory ordering in GenXBaling
- Fix FixInvalidFuncName pass
- Adding numWorkgroupUsed
- ZEBIN ELF spec update.
- Support plain samplers for OCL binary
- Treat all memory-related operations as high-cost in baling
- Refactor CMCL builtin return type definition
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@d9ffe1f
- KhronosGroup/SPIRV-LLVM-Translator@5569f6c (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.
Update 2021-09-06 07:45 UTC: Packages uploaded at the original time of release have broken version number (1629709536). Please use newely uploaded packages with version number 8517.
Update 2021-11-17 19:57 UTC: Package with broken version number (1629709536) removed.
igc-1.0.8365
Fixed Issues / Improvements
- Added a new BB type
FCALL_TYPE
, - Outline math built-ins into a seprate file,
- Constant fold add3 in vISA,
- Fix race condition in SIP,
- Fix SkipBitCast not to skip pointer casts when address space changed,
- Other minor fixes and improvements.
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@d9ffe1f
- KhronosGroup/SPIRV-LLVM-Translator@5569f6c (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.
igc-1.0.8279
Fixed Issues / Improvements
- Open source the ALDERLAKE_P,
- IGA update for GED0.97.1,
- Enable merging basic blocks if possible,
- Enable IR verification passes in debug builds for VC,
- Introducing ShaderDumpFilter,
- Implemented i64 emulation for long->double conversion builtins,
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@d9ffe1f
- KhronosGroup/SPIRV-LLVM-Translator@5569f6c (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.
igc-1.0.8173
Fixed Issues / Improvements
- Fix SIMD-32 insertelement
- Add missing DP4A definitions for VectorCompute
- Fix bug in the global token allocation in SWSB
- Support for SPV_INTEL_bfloat16_conversions
- Fix stack call ret size calculation.
- Increase threshold for HPC compilation
- Fix build break on Fedora34
- Fix a bug when deciding whether fill is redundant in
read-modify-write spill - Improve memory intrinsics width legalization
- Other minor fixes and improvements.
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@d9ffe1f
- KhronosGroup/SPIRV-LLVM-Translator@5569f6c (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.
igc-1.0.7862
Fixed Issues / Improvements
- Enable aligned scalar split pass.
- Propagate HasBarrier flag from stack call functions to kernel.
- Optimize metadata saves to reduce compilation time.
- Fix in aligned scalar split to not insert copy for pseudo kill and pseudo use.
- Implement support for Khronos SPV-IR for Group opcodes.
- Use max PTSS supported when using stack calls as estimating size needed to store BE stack is not always possible.
- Fix the issue that immediate operand type must be :ud for addc and subb opcodes.
- Fix propogation of uniformity through uitof.
- Implement support for Khronos SPV-IR for OpImageSampleExplicitLod&OpSampledImage.
- Change Emulation replacement for logic operations(and, or, xor).
- Support forward declared pointer type as a function paramter in SPIRVReader
- Replace type pointers by ids in SPIRVTypeFunction.
- Support string selection indexing in GenXPrintfLegalization.
- Updated printing of decoded debug info.
- Add new flag for supporting legacy and new bindless buffer modes.
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@069ced1
- KhronosGroup/SPIRV-LLVM-Translator@9d8d032 (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.
igc-1.0.7781
Fixed Issues / Improvements
- Move types legalization from SPIRV Translator to OCL Unification,
- Allow controling SPV-IR version in BiFModule from cmake level,
- Correcting the frc intrinsic definition,
- Enable auto register selection,
- vISA: Fixed platform name in needIPWA,
- Pattern match for loads from a pointer coming from another load,
- ZEBinary: use unique_ptr and fix typos,
- Combining icmp and xor in CustomSafeOptPass,
- Consider vector of pointers in GenXVisaRegAlloc::getRegForValueOrNull,
- Enabled more passes for igc_opt,
- Add simplify regions pass,
- Fix CMABI pointers to copy-in/out transformation,
- Allowing to combine canonicalization and saturation Considering mix mode operations for flushing denorms to zero,
- Disable unsafe math for builtin fp64 math functions,
- Enable aligned scalar split pass,
- Report the number of send stall cycles in program output,
- Generate implicit printf buffer arg in zebin,
- Update copyright headers,
- Use ABI alignment if none specified in constant encoding,
- Add conditions to keep code hw conformant after aligned scalar split pass,
- Minor refactoring of label creation facilities in VC CisaBuilder,
- Fix warning reported by static analysis tool,
- Aligned scalar split pass is run only in first GRA iteration, if it spills. This helps target optimization to programs that may spill,
- Seperate flag pointing out SPIRV Khronos Translator usage between scalar and vector compiler,
- LLVM11 oriented fixes,
- Disable CMABI pass for indirectly called functions,
- Fix in remat when looking up variable references. Lexical id of last use was incorrectly populated in some cases,
- Fixup constness of some fields in FunctionGroup classes,
- Fix invocation of Dominator::dominates() method when detecting loops. Added new API G4_BB::dominates() that internally runs dominator pass,
- Other fixes and improvements.
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@069ced1
- KhronosGroup/SPIRV-LLVM-Translator@9d8d032 (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.
igc-1.0.7712
Fixed Issues / Improvements
- Enable vISA for XeHP platform.
- Fix memory overwriting in TPM.
- Create FunctionCloningThreshold flag to limit the number of times functions can be cloned.
- Removing duplicated code to optimize loads.
- Add support for noalias/alias.scope.
- Enabling CustomPasses for OpenCL.
- Updates IGA.
- Other minor fixes and improvements.
Dependencies revisions
- intel/opencl-clang@c8cd72e
- KhronosGroup/SPIRV-LLVM-Translator@424e375 (for opencl-clang)
- intel/vc-intrinsics@069ced1
- KhronosGroup/SPIRV-LLVM-Translator@9d8d032 (for VectorCompiler)
- llvm/[email protected]
Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.