Skip to content

Releases: intel/intel-graphics-compiler

igc-1.0.8279

10 Aug 08:50
Compare
Choose a tag to compare

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

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.8173

03 Aug 09:44
Compare
Choose a tag to compare

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

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7862

06 Jul 08:31
Compare
Choose a tag to compare

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

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7781

28 Jun 15:16
Compare
Choose a tag to compare

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

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7712

22 Jun 07:08
Compare
Choose a tag to compare

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

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7683

14 Jun 10:24
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Create FunctionCloningThreshold flag to limit the number of times functions can be cloned.
  • Fixed small typo from LegalizeFunctionSignatures pass.
  • Support vector of pointers bitcasts in GenXPromoteArray.
  • Add a key EnableVISADCE to control visa DCE.
  • Add registry key control to total GRF number
  • Remove deprecated code from label creation routines in VC backend.
  • Introduce vector combiner pass.
  • Support more vector instructions in InstRebuilder.
  • LLVM11 upgrade oriented fixes.
  • IGA: Add XEHP platform.
  • Allowing to combine canonicalization and saturation Considering mix mode operations for flushing denorms to zero.
  • implement proper error reporting for the case when VC platform selector could not determine target platform.
  • Add check during parsing clang tool version.
  • Optimize mergeScalar pass to benefit more cases.
  • Improving reporting for CISA builder creation error
  • Set DispatchGPGPUWalkerAlongYFirst default to 1.
  • Avoid dst/src overlap for indirect access operand.
  • For mergeLoad, make sure to sort mergable loads first so that we will merge as large as possible.
  • Fixup lowering of boolean shufflevector for pseudoscalar case in VC.
  • Embed debug info in zebin.
  • Avoid producing 'rndz' instruction operating on double.
  • Disable unsafe math for builtin fp64 math functions.
  • Fix memory overwriting in TPM
  • Support for SPV_INTEL_token type in IGC SPIRV Consumer.
  • Move addLoop API to LoopDetection class.
  • Added GTPIN_XEHP_CORE enum value.
  • Fixup DG1 platform selector for VC.
  • Enable merging of non-uniform stateful UBO loads by default.
  • Finalize DG1 open sourcing for VC backend
  • Assert InstToRebuild structure validity.
  • Disallow remat to optimize mov inserted by aligned scalar split pass.
  • Check in LVN whether def covers full use.
  • Remove superfluous assert in RectListOptimizationPass.
  • ZEBinary: move global/const symbols to program scoped IR
  • Update constant coalescing pass to merge non-uniform loads when promotion to sampler is disabled.
  • Improving reporting for CISA errors
  • Add missing debug line info in FixAddrSpaceCast pass case 1
  • Fix the global token assignment algorithm to consider the src token
  • updated copyright headers in IGC/VectorCompiler
  • vISA BinaryEncodingIGA: Clear send EOT bit in ExDesc only on Xe+
  • Type Legalization issue with resolving PhiNode Value
  • take proper lldELF for custom prebuilds
  • After skipping DCE output variables, re-enable DCE. (this is the 3rd try.)
  • Enable strict internal options parser in vc
  • Implement support for both SPV-IR forms of vstore builtins
  • Implicit support for both SPV-IR forms of OpGroupAsyncCopy and OpGroupWaitEvent
  • If a var is output, it cannot be DCE'ed
  • Enable omission of private/local address space checks for generic pointer load/store.
  • Fix the issue of linear scan RA in case empty liveness.
  • Enable lldELF usage.
  • GenXLowering handle llvm gather and scatter llvm masked load and store.
  • Add missing intrinsics to WIAnalysis
  • Ignore scalar api options in vc option parser
  • Fix dwarf column info option description
  • Add IGC options to option parser
  • VC should be able to calculate 32-bit constant subregion from a 64-bit one
  • Register demotion after function vectorization. This makes vectorization easier, but we need to handle phi properly.
  • Include the ElfPackager in compilations.
  • Avoid dynamic generic pointer resolution branches if possible.
  • Fix HandleLoadStoreInstruction emit wrong IR
  • Updates code responsible for finding common base and offset for buffer loads. Detect or+add pattern.
  • Remove symbol table duplication in VC.
  • Reduce the number of non-uniform loads produced by constant coalescing.
  • Correctly handle a barrier with both global and local memory fence semantics.
  • Enable EmitDebugLoc reg key by default. Reduce threshold to coalesce to avoid false positive.

Dependencies revisions

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7423

18 May 13:29
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • API option to control per-thread memory,
  • Add GenXAggregatePseudoLowering to the list of GenX passes,
  • Add helper macro for tablegen,
  • Add missing dependencies on llvm libs for VC,
  • Add missing dl to vc driver link libraries,
  • Add missing library for vc codegen,
  • Add option 'EnableDivergentBarrierCheck' to check for barriers that may be in divergent control flow,
  • Add option to strip debug info from llvm IR,
  • Add support for function pointer relocation to global/constant buffer. Save relocation data to module metadata, to be patched with actual function address by runtime,
  • Added missing header in preparation of LLVM 11,
  • Added more passes to igc_opt,
  • After IGCInstructionCombiningPass address of an indirectly called function is used inside 'combined' store instruction. In order to process by further passes such constant expressions has to be splitted,
  • Allow cmd arg, registered in passInfo, to be used as pass names in IGC keys PrintAfter and PrintBefore,
  • Allow float to packed half-float move on select platforms, Nth try,
  • Avoid same space AS casts in LowerGPCallArg,
  • BCR tunning,
  • Bug fixes to enable function pointers directly passed by FE (Commit attempt #3),
  • Change default stateless private size,
  • Change encoding of return register location in each function's epilogue in FDE,
  • Cleanup old emulation functions to preserve compatibility with old ISPC,
  • Correction in LLD build,
  • Cosmetic fixes for VC emu boilerplate generator,
  • Detect local to generic pointer casts, second try,
  • Disable Read suppression with single IGC key,
  • Do not load zero values from genx.alloca,
  • Dump just after each pass execution,
  • Enable ZWDelta in Code Patch,
  • Enable immediate pool for cmp instruction,
  • Enabling preRA_Schedule in default ForceFastestSIMD due to the ACOdyssey regression in IGC-4149,
  • Expanding BufferType Buffer Type range is set to 32 instead of 16,
  • Fix CSEL before EOT, there may be atomic URB inst,
  • Fix Travis environmental error, libc6,
  • Fix Ubuntu build instruction,
  • Fix bug where class type was encoded as struct type in dwarf,
  • Fix calculation of TPM address offset and emit warning if allocated space is not enough,
  • Fix debug info reader for static members,
  • Fix debug line info in GenericAddressDynamicResolution,
  • Fix erroneous unary "~" implementation for cm-cl vector,
  • Fix frame destruction boundary condition,
  • Fix incorrect CISA offset attached to EOT,
  • Fix lowering shader interpreted values (GS),
  • Fix packed immediate handling on platforms that don't have byte regioning,
  • Fix phi nodes coalescing. In the case of indirectbr instruction several phi nodes may have the same PHICPY segment. Coalescing analysis was not ready for this and it led to excess copies,
  • Fix stack mem option parsing,
  • Fix the bug in flag register spill/fill clean up,
  • Fix the optimization EnableMergeTransposeSLM,
  • Fixing DebugLoc's in VectorPreProcess pass,
  • Flip DispatchAlongY override setting to reflect new default,
  • For padding constant/global buffers, use stringstream width/fill instead of writing characters one by one,
  • Handle convert jmpi to goto correctly on platforms that don't support predCtrl width,
  • Handling ConstantInt and PtrToInt in evaluating constant address Also adding a new helper function for retreiving constant address,
  • High-Level Load/Store G4IR support,
  • Implement OpTypeBufferSurfaceINTEL in the old SPIRV-LLVM-Translator,
  • Implement more efficient emulation for floating point global atomics,
  • Improve jump codegen by setting uniform if jump's flag is workgroup/global uniform under EU fusion,
  • Included lldELF library to IGC solution,
  • Initial implementation of 64-bit integer division routines for VC backend,
  • Introducing lowering diagnostics kind,
  • Keep pass disabled in this checkin,
  • Limit the display of the warning for the ShowFullVectorsInShaderDumps flag to one in the console,
  • Link debug info with required llvm libraries,
  • Make VC option parser IGC top level component,
  • Make emitStateRegID() inputs easier to read,
  • Make run()/reset() members private. Add inProgress flag to avoid recomputation when it is already in progress causing stack overrun,
  • Merge stores/loads from different SLM buffers,
  • Minor improvement to TGL workaround,
  • Minor improvements to split aligned scalar pass,
  • Move code to strip debug info before CheckInstrType pass,
  • Move common LLVM build setup to one placeo,
  • Move dependent instructions for ZWDelta into the payload section,
  • Move link libraries from plugin to codegen library,
  • Move linux backend plugin code to separate file,
  • Need to check Bti Value is constant first,
  • Optimize mergeScalar pass to benefit more cases, third try,
  • Option for explicit stateless private size,
  • Option for globals localization configuration. More modes of localization is supported,
  • Packetizer need to handle the argument with an addrspacecast as its use,
  • Pass llvm options using compilation options,
  • Pre-allocate all R1Lo aliases,
  • Re-enable IGC registry key TotalGRFNum,
  • Remember backend config in genx module,
  • Remove debug llvm options parsing in VC,
  • Report unsupported SPIRV opcode,
  • Requested by debugger, copy "sret" argument to return register upon stack function exit, such that debugger can query the return value of the function. Also added the "sret" attribute to implicit vector pointer argument used to represent the return value as specified in the IGC call convention ABI,
  • Require mad dst to be aligned in split aligned scalar pass,
  • Resolve circular dependency in vc metadata headers,
  • Same code style of 'const' order,
  • Set Payload LiveOut as Output to prevent reallocation,
  • Set default globals localization to always localize vectors,
  • Simplify legalization of store instructions with constants,
  • Simplifying the geometry shader lowering pass,
  • Some crean up passes, which were added after LateInlineUnmaskedFunc=1, created complex or combined instructions. These instructions have to split with BreakConstantExpr pass,
  • Support build of spirv translator with prebuilt LLVM,
  • Support load inst in GenXAggregatePseudoLowering,
  • Switch to OCL conformant return value in VC printf,
  • Switch to use InstVisitor in GenXAggregatePseudoLowering,
  • Transform SPV_INTEL_optimization_hints into SPV_KHR_expect_assume,
  • Try to insert VectorUniform intrinsic to the lowest common dominator of all loads and stores,
  • Update addSamplerFlushBeforeEOT with additional HW requirements,
  • Update the insertInstLabel to fixEndifWhileLabels,
  • Use cmake argument parser in build bif function,
  • Use link wrapper to filter link command for vc plugin,
  • Use llvm source hook for SPIRV translator,
  • When LateInlineUnmaskedFunc is on the following SROA pass created ShuffleVector instructions which is not supported in code generation. Add legalization pass to expand such instruction into supported ones,
  • When creating a new call, make sure call inst's calling convention matches its callee, otherwise the call would be deleted (by instcombine),
  • When promoting arrays to registers wrong assumption regarding support for fp64 and int64 is made,
  • Workaround for IMAGE_SUPPORT macro definition in Clang,
  • ZEBinary: Add sampler_index to payload arguments,
  • ZEBinary: fallback/assert when encounter inline sampler,
  • ZEBinary: support Rela format in ZEELFObjectBuilder,
  • Other fixes and improvements.

Dependencies revisions

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7181

10 May 14:54
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Avoid O(n^2) iteration over kernel declares.
  • Disable bundle conflict reduction if there is spill
  • Change the footprint for OWORD load.
  • Add check for IGC destruction. If IGC static objects are destructed then IGC returns error code to driver.
  • Copy clang sources to handle opencl-clang patching
  • Respect per instruction contraction flag in mad pattern match.
  • Add warning when -cmc option is used for SPIRV path
  • Add BCR support in RA for TGL
  • Enable Shader debug hash code on for dx and ogl adapters by default
  • Emulation inliner means to inline emulation functions only.
  • Instructions using acc operands are not candidates for this optimization as such instructions have alignment restrictions.
  • High-Level Load/Store G4IR support.
  • Fix CM FE Interface

Dependencies revisions

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7152

27 Apr 14:13
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Proper cleanup after matching reverse sqrt.
  • Set return location register to DW_CFA_undefined in kernel frame.
  • Limit Vec Element in ShaderDump
  • Check if value stored at BLOCK_INDEX_INVOKR_FUNC is NULL FixAddressSpace for PHINode
  • Remove unnecessary legacy code that was creating lot of strings in dwarf.
  • Add globals to cache. These include function arguments.
  • Introduce llvm hooks for LLVM projects
  • Fix the dependence tracking for ACC regsiter
  • Embed debug info in zebin
  • Fix creation of fshl and fshr
  • Fix: Build succeeded despite undefined builtin
  • Handle more patterns in dynamic buffer promotion.
  • Use helper function to handle LLVM components in IGC
  • Fix the bug of forceDebugSWSB
  • Remove dependence tracking for flag register.
  • Move LLVM prebuild handling to IGC cmakes
  • Add simple push for bindless buffers.
  • Fix crash in TypesLegalizationPass when array is return from function call.
  • Create VCDriver library with compilation manager code
  • Noopt attribute nolonger disables inlining without noinline attribute present.
  • Change assumed simd size in determining private memory size per physical thread.
  • Add getBuilder member function in G4_INST class.
  • Match inverse sqrt from division.
  • Refactor optimizing 3d ld instructions.
  • Update the acc sub algorithm to reduce compilation time.
  • Fix the csel instruction inserted after else.
  • Add scan for peephole opt of acc substition.
  • Allow IGC keys PrintAfter/PrintBefore to take a list of pass names.
  • Redesign handling of spirv lib in IGC

Dependencies revisions

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.7076

27 Apr 14:26
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Respect per instruction contraction flag in mad pattern match.
  • Add enable preemption to finalizer flags.
  • Support for SPV_KHR_linkonce_odr in SPIRV Reader.
  • When promoting arrays to registers wrong assumption regarding fp64 and int64 is made.
  • Enhance m_num1DAccesses lookup in CS
  • Enable partial emulation for fp64 div/sqrt for OCL
  • Change interface for revision id information
  • Add possibility to force bindless constant buffers to be untyped.

Dependencies revisions

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.