Skip to content

Releases: intel/intel-graphics-compiler

igc-1.0.4361

24 Jul 10:04
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Removed SIMD size dependence on -g. SIMD size is an optimization so it is dependent on whether optimizations are enabled.
  • Removed the code related to replacing unreachable instructions with "return undef".
  • Added an analysis to check if an instruction's def reaches the end of its parent basic block.
  • Added Vector Compute backend
  • Added build option, vISA_noStitchExternFunc, to control the stitching policy.
  • Added extra condition for transforming ptr-arg.
  • Fixed defect where 32word and 64word in align directives failed parse.
  • Fixed DILocation for globals that are localized.
  • Fixed payload coalesing missing issue for dual-source RTW on SIMD16.
  • Move Accumulator substitution into its own file.
  • Skipping marking source variables with Output attribute.
  • CISA assembly update.
  • SWSB improvements.
  • Avoiding div by zero while doing spillCost computations.
  • Write to null register when inlineAsm output is unused.
  • Enhance stateless simple push to allow promoting regions where the starting address can be a sum of 2 runtime values.
  • Increase the maximum size of arguments that can be passed to OpenCL kernel to 2 KB.
  • Optimize double precision SQRT instruction.
  • Do not include zero-sized variable (e.g., Arg/Retval when there's no stack call) in global RA.
  • Do explicit var split for local live-ranges only.
  • Support vector type for llvm.copysign
  • Protecting ISA generated variables from conflicting with vISA keywords (vISA reserved words are suffixed with _ (iteratively)).
  • Set push constant mode to gather if the driver only supports gather.
  • DWARF debugger location expressions fixes.
  • Turn off writing caller's frame-pointer to callee's stack. Since this feature is needed only for stack-walk, we can turn it off by default with compiler flag: EnableWriteOldFPToStack.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4312

20 Jul 12:14
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Removed implicit arg support in stack calls. Implicit arguments cannot be explicitly passed to stack called functions as function arguments. Support for implicit arg usage inside stack called functions will be detailed in future calling convention specifications.
  • Removed support for handling struct return values in IGC BE. Following SPIR-V call conventions, all struct arguments and return values are converted to pass-by-pointer arguments. This removes the need for BE to support functions returning struct values, as IGC FE should convert all struct types to pass-by-pointer.
  • Removed stack return support in VISA codegen. All return values that requires return on stack should be converted to pass-by-pointer argument in FE.
  • Removed unneeded assert in PeepholeTypeLegalizer. The function does a bitcast cleanup but just falls through to the default for many cases where the 'prevInst' is a legal type.
  • Removed unused file HWCapsOpen.inc
  • Removed some unused passes.
  • Refactored code for stateless buffer loads promotion.
  • Refactored code for SLM int64 atomics builtins.
  • Refactored vISA verification. Add checks for undefined/multiple-defined labels in vISA assembly.
  • Refactored for function alwaysinline attribute. Allows testing subroutines/stack-calls/indirect-calls without causing performance issues in default mode.
  • Refactored typed read/write emitters.
  • Refactor MDLocation to use the new Metadata class.
  • Implemented lowering of umul_with_overflow and smul_with_overflow intrinsics.
  • Added hw_preemption_mode to ZEInfo.
  • Added the HWORD, 32WORD and 64WORD support.
  • Added a metadata framework to vISA. First use is to tag comments to a Gen instruction.
  • Added comments and annotations to our shader dumps for IGC Intrinsics.
  • Added default initializers to kernel info and fixed visa option.
  • Added new instruction splitting pass for instructions that touch more than 2 GRFs.
  • Combine bindless support for buffers and images. A new internal flag is introduced (-cl-intel-use-bindless-mode). A new field is introduced tp pass the bindless info to NEO.
  • Introduction of new intrinsics to handle saturation modifier for some operations.
  • Changes to denseMatrixLimit heuristic.
  • Changed OverrideOCLMaxParamSize type from bool to DWORD.
  • Replace G4_BB::insert() wth G4_BB::insertBefore() and G4_BB::insertAfter(). These functions attach debug info to instruction being inserted.
  • Changing bb->getInstList() to BB's wrapper when possible.
  • Various fixes for vISA inline assembly. Making sure the operands refer to the correct vISA variable name. Also update error reporting.
  • Support variable argument list in IGC_ASSERT
  • IGC_ASSERT introduced to IGC/AdaptorCommon and IGC/GenISAIntrinsics.
  • Improvements to GRF alignment check.
  • Update SInstrTypes - gather information about wave instrinsics.
  • Updated ICBE_VERSION
  • DWARF debugger location expressions fixes.
  • Fix a typo for the type of SLM int64 smin/smax atomics.
  • Fixing defect when given very long vISA variable names strncpy_s requires dstsz to be strictly less than count to copy.
  • Fixed the bug of dependence reduction in the old toke allocation algorithm.
  • Fix for stack-call fill.
  • DWARF debugger location expressions fixes.
  • Stack call with spill fix.
  • Aborting compilation if inline asm parsing fails.
  • Handle 16-byte alignment correct for trivial and local RA.
  • Handle G4_AddrExp in evenlySplitInst() correctly.
  • Force retry if LICM pass may cause high spill in CS.
  • Avoiding read-modify-write for spills on NoMask sends.
  • Calculated HWTID mask dependent on HW gen: 0x1FF for Pre-Gen9 0x3FF for Gen10+
  • Finish further instruction processing after PHI instruction lowering.
  • Other minor bug fixes, refactors and small improvements.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4241

02 Jul 09:02
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Rename enableSimd32 variable to reflect the usage.
  • Add Frame-Pointer support to stack calls.
  • Add support for explicit split coalescing in LRA.
  • replace assert to error for not supported llvm version in Scalar.h.
  • ZEBinWriter: Fix standalone build and add test option.
  • Add missing fence before EOT W/A when a kernel only has typed writes.
  • Flag to override the value imposed on the kernel by CL_DEVICE_MAX_PARAMETER_SIZE.
  • Fix select handling in ResolveGAS.
  • Generating bindless access for image.
  • Allow alignment improvement for all cases except stateful accesses, in which the base of stateful surface could be as little as DW, thus we can assume align 4 on stateful messages.
  • Fix spilled variable offset alignment when scratch space compression is enabled.
  • fix the SWSB globalt token allocation bug.
  • avoid dst and src overlap when they are using same variable.
  • Added support for DG1 platform.
  • Fix the acc number of channels value in SubPair method.
  • VISA R0 variable name for easier debugging.
  • Support ForceBestSIMD on pixel shaders.
  • DWARF debugger location expressions fixes.
  • Adding new CustomSafeOpt pattern for Ldrawvector.
  • Add missing set in CMakeLists.
  • Disable implicit args for functions called from indirect functions.
  • Adding needed out of bounds check for constant coalescing.
  • Reduce the even align to improve BCR.
  • Fix a bug in variable split. Fix condition for right bound check in split verification pass.
  • Fix the loop info in SWSB.
  • Relax condition in Simd32Profitability.
  • Disable LRA when split changes IR. Fix coalescing in color assignment to make it work with preRA scheduled code. Add more conditions in split verification.
  • Check string types after int/float/vec types since we can distinguish between those based only on their type.
  • Prevent rematerialization of relocation mov.
  • Adjust TPM size for CM.
  • Wrap methods related to indirect calls.
  • Move variable split pass invocation to Optimizer before pre-RA scheduler. Add verification step to check assignment overlap.
  • Limit the INT64 HW support. Fix the acc number of channels value.
  • Remove alwaysinline attribute for function calls with aggregate and GAS pointer arguments. Support stack calls for struct type and GAS pointer args.
  • Removed asserts that can actually trigger currently. For example:
  • Fix condition to guarantee 'IfBB' is non-null below.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4155

25 Jun 10:25
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Fix wave intrinsics fp16 emulation

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4154

22 Jun 12:37
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Add implementation for proper half precision using mul and mad instructions.
  • Perform read-modify-write only for spills inside divergent control flow.
  • Implement emulation of 64b mov.
  • Run Emu64OpsPass preprocessor also if DataLayout contains 64bit global or local pointers.
  • Better heuristic for A64WA.
  • Check for dst/src overlap for IEEE FP64 macros.
  • Enable SWSBDepReduction option by default.
  • Minor fixes and improvements.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4111

17 Jun 08:49
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Removed splitVariables pass as it should be subsumed by the split4GRFVars pass.
  • When stack is used, make sure the spill/fill temp is at least one GRF.
  • Fixed offset calculation for indirect function calls.
  • Added optimization stats.
  • Aligned caller-save and callee-save frame offset to 64 byte.
  • Moved updateDebugLoc() function into help.hpp to avoid static definition of this function in several .cpp files.
  • Fixed non-uniform calls with return on stack.
  • Added vISA verifier check for input that straddles GRF boundary.
  • Refactored hard-coding register size in a few legalization checks.
  • Removed indentation from namespaces blocks.
  • Removed m_ShaderMode from PS codegen, as its base already has it.
  • Renamed m_ShaderMode -> m_ShaderDisdpatchMode in visa emitter.
  • Use int copy instead of float copy during spill code generation.
  • vISA syntax enables more identifiers (VAR), which used to be lexical keywords such as "byte", "word"
  • Fix WaDisableSendSrcDstOverlap() for instructions in divergent control flow.
  • Fix -timestats issue so VISA SPILL is not counted twice.
  • Updated IGA.
  • Unpaired Op and Subfunction. Now there are Op::MATH and subfunction MathFC::INV, instead of Op::MATH_INV.
  • Enabled color syntax in terminal output of IGAExe.
  • Improvements to diagnostics in parser.
  • Moved some OpSpec methods to cpp file to make header interface clearer.
  • Old ld/st syntax removed.
  • Changes to vISA IGA adapter to use new IR.
  • Other vISA IGA adapter refactoring and improvements.
  • Fixed file path in .asm dumps (missing slash between directory and file).
  • Fixed a leak from CreateSystemThreadKernel.
  • Added capturing some statistics: loop count, send instruction count, spill/fill operation count and estimated cycle count regardless of dump settings.
  • Added fix in variable split to detect multiple definitions correctly.
  • Fixed gtpin header with explicit padding.
  • Removeed alignment requirement for definitions in non-divergent BBs.
  • Refactored GenIntrinsics to include comments in files and remove old csv comment file.
  • Dst/src overlap bug fix.
  • Dumping SPIRV files in clLinkProgram scenario.
  • Emit top line number instead of zero.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4062

04 Jun 14:26
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Vary private memory stack size based on SIMD width.
  • Make register pressure estimate more accurate by considering alignment for <1GRF variables.
  • Minor fixes and improvements.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.4053

27 May 11:19
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Add option for the first fit window in local RA
  • Plumbs LLVM names into vISA to improve debugging and readability of both vISA and GEN assembly
  • Add WriteOnly Attribute for Intrinsic generation
  • Make pre-defined FE SP/BP 64-bits by default
  • Extended Math instruction is given a little higher weight than other instruction
  • Fix build with system LLVM: do not hardcode LLVM library path
  • Fixed non-uniform call code gen
  • Fix a bug in reducing maximun IGC stack size from 8K to 1K
  • ZEBinWriter: Refine TargetFlags definition for ELF header
  • Set buffer size per inline buffer. Multiple inline buffers can be defined
  • Removing the dst/src overlap checking after augmentation
  • Rebuild physical register pool when kernel parameters are updated.
  • Add ZEBinWriter for building ZE binary object
  • Remove redundant sampler header movs
  • Avoid hard-coding CS local_id alignment.
  • Reduce IGC stack size from 8K to 1K when there's stack call
  • Fix for mad_sat using long type
  • Update max supported spirv version in SPIRV Translator
  • Change more instruction creation to use createMov/createBinOp wapper.
  • Includes some minor fixes for SWSB and send decoding
  • Use Target attribute whenever it is possible, rather than target option.
  • Optimization for inline constant/global data buffers.
  • Fix the bug in the respond length cal for SVM block read.
  • Fixing Debug Info generation for IndirectlyCalled functions.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.3977

18 May 16:39
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Added AnnotateUniformAllocas pass.
  • Added handling of StructType in metadata.
  • Improvements to ShaderDumpEnable asm output; specifically the input arguments (added types).
  • Refactored fence before EOT and handle function calls.
  • Compute natural loops after modifying CFG.
  • Copying struct by element instead of by byte.
  • Disabling MTP when stack calls are present.
  • Removed an obsolete W/A.
  • Extended LVN; fixed a memory leak.
  • Removed hard-coding message's and declare's size for pixel interpolator message.
  • Removed hard-coding SIMD size for render target's write with stencil.
  • Removed hard-coding R0 and R1 sizes in payload.
  • Replaced isInSimdFlow() with isDivergent() with a new function isAllLaneActive().
  • Made Inst->isBackward() return true for while loops.
  • Added GPTin build options.
  • Marked CVariable fields "const".
  • Other minor changes and improvements.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.

igc-1.0.3951

13 May 14:27
Compare
Choose a tag to compare

Fixed Issues / Improvements

  • Fixed performance regression due to ConstantBufferCount.
  • Add GTPin flags to support L0 driver path.
  • Fixed struct return uniform to non-uniform copy.
  • Indirect call support in SWSB.
  • Add AnnotateUniformAllocas pass.
  • Extend LVN.
  • Minor fixes and improvements.

Ubuntu 18.04 binary packages for LLVM10/Clang10 are included.