configuration_flags.md

June 5, 2026 ยท View on GitHub

Configuration flags for Linux Release

Overview

Linux release build allows enabling user-selected configuration flags. They are available after installing release build according to the instructions here. This file is autogenerated from igc_flags.h.

Important notice

Configuration flags are generally used either for debug purposes or to experimentally change the compiler's behavior. Intel does not guarantee full performance and conformance when using configuration flags.

How to enable a flag

A flag is enabled when it is set as a variable in an environment.

The syntax is as follows:

IGC_<flag>=<value>

For example - to enable ShaderDumpEnable flag in shell:

$ export IGC_ShaderDumpEnable=1

VISA optimization

FlagDescriptionRelease builds
AddVISADumpDeclarationsToEndAdd a comment with .decl section to the end of VISA console dump. Used in tests.Available
AssumeUniformIndirectCallAssume indirect call is uniform to avoid looping code-
AvoidDstSrcGRFOverlapavoid GRF overlap for destination and source operands of an SIMD16/SIMD32 instruction-
AvoidSrc1Src2Overlapavoid src1 and src2 GRF overlap to avoid the conflict without read suppression-
CSSIMD16_SpillThresholdPercentage of instructions allowed for spilling on CS SIMD16-
CSSIMD32_HighThresholdInstCountInstructions count limit to allow higher spill threshold on CS SIMD32-
CSSIMD32_SpillThresholdPercentage of instructions allowed for spilling on CS SIMD32-
DPASTokenReductionoptimization to reduce the tokens used for DPAS instruction.Available
DisableCSELdisable csel peep-hole-
DisableFlagOptDisable optimization cmp with logic op-
DisableGatherRSFusionSyncWADisable WA for gather instruction when read suppression and EU fusion are enabled.Available
DisableHFMathDisables HF math instructions.-
DisableIfCvtDisable ifcvt-
DisableMixModeDisables mix mode in vISA BE.-
DisableRegDistDepdistable regDist dependenceAvailable
DisableSendSSetting this to 1/true adds a compiler switch to not generate sends commands, default is to enable sends-
DisableThreeALUPipesDisable three ALU Pipelines. XeHP onlyAvailable
DisableWriteCombineDisable write combine. PVC+ only-
DumpASMToConsoleDump ASM to console and do early exitAvailable
DumpPromoteI8Dump useful info during promoting i8 to i16Available
DumpVISAASMToConsoleDump VISAASM to console and do early exitAvailable
Enable16DWURBWriteEnable 16 Dword URB Write messagesAvailable
Enable16OWSLMBlockRWEnable 16 OWord (8 GRF) SLM block read/write messageAvailable
Enable64BMediaBlockRWEnable 64 byte wide media block read/write messageAvailable
EnableAdd3Enable Add3. XeHP+ onlyAvailable
EnableAtomicFusionTo enable/disable atomic send fusion (simd8 shaders). Valid if EnableSendFusion is on.-
EnableBCREnable bank conflict reduction.Available
EnableBfnEnable Bfn. XeHP+ onlyAvailable
EnableCallUniform[tmp, testing] Ignore indirect call's uniformAvailable
EnableCallWAControl call WA when EU fusion is on. 0: off; 1: onAvailable
EnableCoalesceScalarMovesEnable scalar moves to be coalesced into fewer movesAvailable
EnableForceDebugSWSBEnable force debugging functionality for software scoreboard generationAvailable
EnableGatherWithImmPreRA0: disabled, 1: sampler is enabled, 2: other msg enabled, 3 always use s0.0 for sendAvailable
EnableGroupScheduleForBCEnable bank conflict reduction in scheduling.Available
EnableHWGenerateThreadIDEnable new behavior of HW generating threadID for GPGPU pipe. XeHP and non-OCL only.Available
EnableHWGenerateThreadIDForTileYEnable HW generating threadID for GPGPU pipe for TileY mode. XeHP and non-OCL only.Available
EnableIGAEncoderEnable VISA IGA encoder-
EnableIGASWSBUse IGA for SWSBAvailable
EnableIndirectInstEndEnable the indirect sent, end with candidate of the id value specified by the keyAvailable
EnableIndirectInstStartEnable the indirect sent, start with candidate of the id value specified by the keyAvailable
EnableKeepDpasMacroIf enabled, dpas macro sequence from input will not be broken up by visa scheduler-
EnableMathDPASWAPVC math instruction running with DPAS issue-
EnableNonOCLWalkOrderSelEnable WalkOrder selection for HW generating threadID for GPGPU pipe. XeHP and non-OCL only.Available
EnablePassInlineData1: Force pass 1st GRF of cross-thread payload as inline data; -1: Force disable passing inline dataAvailable
EnablePreemptionEnable generating preeemptable code (SKL+)-
EnablePromoteI8Enable promoting i8 (char) to i16 on all ALU insts that does support i8. It's only for XeHPC+ for now.Available
EnablePromoteI8VecControl if a certain i8 vector needs to be promoted (detail in code)Available
EnablePvtMemHalfToFloatEnable conversion from half to float for private memory.Available
EnableQWRotateInstructionsEnable QW type support for rotate instructions. PVC only.Available
EnableQuickTokenAllocInsert dependence resolve for kernel stitchingAvailable
EnableRemoveLoopDependencyEnable removing of fantom loop dependency introduced by SROAAvailable
EnableSWSBInstStallEnable force stall to specific(start) instruction start for software scoreboard generationAvailable
EnableSWSBInstStallEndEnable force stall to end instruction for software scoreboard generationAvailable
EnableSWSBStitchInsert dependence resolve for kernel stitchingAvailable
EnableSWSBTokenBarrierEnable force specific instruction as a barrier for software scoreboard generationAvailable
EnableSendFusionEnable(!=0)/disable(0)/force(2) send fusion. Valid for simd8 shader/kernel only.-
EnableSeparateScratchWAApply the workaround in slot0 and slot1 sizes when separating scratch spacesSeparate scratch space.Available
EnableSpillSpaceCompressionEnable spill space compression. 0 - off, 1 - on, 2 - platform default-
EnableUntypedSurfRWofSSEnable untyped surface RW to scratch space. XeHP A0 only.Available
EnableVISABinaryEnable VISA BinaryAvailable
EnableVISABoundsCheckingEnable VISA bounds checking.-
EnableVISADebugRuns VISA in debug mode, all optimizations disabled-
EnableVISADotAllEnable VISA DotAll. Dumps dot files for intermediate stages-
EnableVISADumpCommonISAEnable VISA Dump Common ISAAvailable
EnableVISAJmpiEnable/Disable VISA generating jmpi (scalar jump).-
EnableVISANoBXMLEncoderEnable VISA No-BXML encoder-
EnableVISANoScheduleEnable VISA No-ScheduleAvailable
EnableVISAOutputEnable VISA GenISA outputAvailable
EnableVISAPreSchedEnable VISA Pre-RA SchedulerAvailable
EnableVISASlowpathEnable VISA Slowpath. Needed to dump .visaasmAvailable
EnableVISAStructurizerEnable/Disable VISA structurizer. See value defs in igc_flags.hpp.-
ExpandPlaneEnable pln to mad macro expansion.-
Force32bitConstantGEPLoweringGo back to old version of GEP lowering for constant address space. PVC only-
ForceAllowSmallSpillAllow small spills regardless of SIMD, API, or platform. The spill amount is set below-
ForceBCRForce bank conflict reduction, no matter spill or not.Available
ForceHWThreadNumberPerEUTotal HW thread number per-EU.-
ForceInlineDataForXeHPCForce InlineData for XeHPC. For testing purposes.Available
ForceNoMaskWA[tmp, testing] Force NoMaskWA on any platforms-
ForcePreemptionWAForce generating preemptable code across platformsAvailable
ForcePreserveR0Setting this to true makes VISA preserve r0 in r0Available
ForcePromoteI8Force promoting i8 (char) to i16 on all ALU insts (for testing).Available
ForceSubReturnIf a subroutine does not have a return, generate a dummy return if this key is set (to meet visa requirement)-
ForceTexelMaskClearIf set to 1 or 2, forces evaluate messages to clear the texel mask to 0 or 1, respectively.Available
ForceUniformBufferForce buffer operand to be uniform-
ForceUniformSurfaceSamplerForce surface and sampler operand to be uniform-
ForceVISAPreSchedForce enabling of VISA Pre-RA Scheduler-
ForceVISAStructurizerForce VISA structurizer for testing. Used on platforms in which we turns off SCF and use UCF by default-
GetSendAfterWriteDistanceGet the after write dependence distanceAvailable
GlobalSendVarSplitEnable global send variable splitting when we are about to spill-
NewSpillCostFunctionUse new spill cost function in VISA RA-
NoMaskWAEnable NoMask WA by using software-computed emask flag-
PVCSendWARWAenable PVC send WAR WAAvailable
ReplaceIndirectCallWithJmpiReplace indirect call with jmpi instruction (HW WA)Available
ReservedRegisterNumReserve register number for spill cost testing.-
SIMD16_SpillThresholdPercentage of instructions allowed for spilling on SIMD16-
SIMD32_SpillThresholdPercentage of instructions allowed for spilling on SIMD32-
SIMD8_SpillThresholdPercentage of instructions allowed for spilling on SIMD8-
SWSBMakeLocalWARmake WAR SBID dependence tracking BB localAvailable
SWSBReplaceARWithAWreplace .src with .dstAvailable
SWSBTokenNumTotal tokens used for SWSB.Available
SchedWithSendSrcReadCycleScheduling with GRF read cycle from send.Available
ScratchSpaceSizeLimitSize limit of scratch space. XeHP and above only. Test only. Remove it once stabalized.Available
ScratchSpaceSizeReservedReserved size of scratch space. XeHP and above only. Test only. Remove it once stabalized.Available
SeparateSpillPvtScratchSpaceSeparate scratch spaces for spillfill and privatememory. XeHP and above only. Test only. Remove it once stabalized.Available
SetA0toTdrForSendcSet A0 to tdr0 before each sendc/sendscAvailable
SpillCompressionThresholdOverrideSet a threshold number (1K based) to run with spill compression-
TotalGRFNumTotal GRF setting for both IGC-LLVM and vISAAvailable
TotalGRFNum4CSTotal GRF setting for both IGC-LLVM and vISA, for ComputeShader-only experiment.-
UnifiedSendCycleUsing unified send cycle.-
Use16ByteBindlessSamplerTrue if 16-byte aligned bindless sampler state is used-
UseLinearScanRAuse Linear Scan as default register allocation algorithm-
UseMathWithLUTUse the implementations of cos, cospi, log, sin, sincos, and sinpi with Look-Up Tables (LUT).-
VISALTOvISA LTO optimization flags. check LINKER_TYPE for more details-
VISAOptionsOptions to vISA. Space-separated options.Available
VISAPostScheduleEndBBIDThe ID of BB which will be last scheduled-
VISAPostScheduleStartBBIDThe ID of BB which will be first scheduled-
VISAPreSchedCtrlConfigure Pre-RA Scheduler, default(0), logging(1), latency(2), pressure(4)Available
VISAPreSchedCtrlDpasSpecial Pre-RA Scheduler configuration for kernels with dpasAvailable
VISAPreSchedExtraGRFBump up GRF number to make pre-RA Scheduling more greedy, 0 for the default-
VISAPreSchedRPThresholdThreshold to commit a pre-RA Scheduling without spills, 0 for the default-
VISAScheduleEndBBIDThe ID of BB which will be last scheduled-
VISAScheduleStartBBIDThe ID of BB which will be first scheduled-
VISASpillAllowedSpill size allowed without increasing GRF number in VRT-
VISASpillAllowed256GRFSpill size allowed specifically for 256 GRF case-
WARSWSBLocalEndWAR localization end BBAvailable
WARSWSBLocalStartWAR localization start BBAvailable
disableCompactionDisables compaction.Available
disableIGASyntaxDisables GEN isa text output using IGA and new syntax.-

IGC Optimization

FlagDescriptionRelease builds
AllowMem2RegSetting this to true makes IGC run mem2reg even when optimizations are disabledAvailable
BlockPushConstantGRFThresholdSet the maximum limit for block push constants i.e. UBO data pushed.
Set to 0xFFFFFFFF to use the default threshold for the platform.
Note that for small pixel shaders the PayloadSizeThreshold may be the limiting factor.
-
CodeLoopSinkingMinSizeDon't sink in the loop if the number of instructions in the kernel is less-
CodeSchedulingAttemptsLimitLimit the number of scheduling attemptsAvailable
CodeSchedulingCommitGreedyRPCommit greedy regpressure scheduling in case better scheduling has not succeedAvailable
CodeSchedulingConfigOverride the default scheduling config. Debug only - no backward compatibility-
CodeSchedulingDumpLevelCode scheduling dump verbosity levelAvailable
CodeSchedulingForceMWOnlyForce scheduling to consider only latencyAvailable
CodeSchedulingForceRPOnlyForce scheduling to consider only register pressureAvailable
CodeSchedulingGreedyRPHigherRPCommitIf GreedyRP was chosen, commit it also if the estimated RP is higher than the original schedule RPAvailable
CodeSchedulingMWOptimizedHigherRPCommitIf the new schedule is expected to have better latency hiding, commit it also if the estimated RP is higher than the original schedule RPAvailable
CodeSchedulingOnlyRecompilationEnable code scheduling only on 2nd tryAvailable
CodeSchedulingRPMarginSchedule so that the register pressure is less than #grf - marginAvailable
CodeSchedulingRPThresholdDo scheduling only if the original register pressure is higher than #GRF - margin + thresholdAvailable
CodeSchedulingRenameAllAllow renaming all values for debug purposes-
CodeSinking2dLoadSchedulingInstrInstructions number to step to schedule 2d loads in advance before the load use to cover latency. 0 to insert it immediately before use-
CodeSinkingLoadSchedulingInstrInstructions number to step to schedule loads in advance before the load use to cover latency. 0 to insert it immediately before use-
CodeSinkingMinSizeDon't sink if the number of instructions in the kernel is less-
DisableAttributePushBit mask to disable push Attribute per shader stages. bit0 = All, Bit 1 = VS, Bit 2 = HS, Bit 3 = DS, Bit 4 = GS-
DisableBranchSwapingSetting this to 1/true adds a compiler switch to disable branch swapping.-
DisableCoalescingSynchronizationObjectMaskThe mask is casted to IGC::SyncInstMask and informs which synchronization objects should not be coalesced. Note that synchronization objects classified in multiple types are not disabled if any bit describing them is off.Available
DisableCodeHoistingSetting this to 1/true adds a compiler switch to disable code-hoisting-
DisableCodeSchedulingDisable local code schedulingAvailable
DisableCodeSinkingSetting this to 1/true adds a compiler switch to disable code-sinking-
DisableCodeSinkingInputVecSetting this to 1/true disable sinking inputVec inst (test)-
DisableConstBaseGlobalBaseArgDo no generate kernel implicit arguments: constBase and globalBase-
DisableConstantCoalescingSetting this to 1/true adds a compiler switch to disable constant coalesing-
DisableConstantCoalescingOfStatefulNonUniformLoadsDisable merging non-uniform loads from stateful buffers. Note: does not affect merging to sampler loads-
DisableConstantCoalescingOutOfBoundsCheckSetting this to 1/true adds a compiler switch to disable constant coalesing out of bounds check-
DisableCustomUnsafeOptDisable IGC to run custom unsafe optimizations-
DisableDX9LowPrecisionDisables HF in DX9.-
DisableDotAddToDp4aMergeDisable Dot and Add ops to Dp4a merge optimization.-
DisableDynamicResInfoFoldingDisable Dynamic ResInfo Instruction Folding-
DisableDynamicTextureFoldingDisable Dynamic Texture Folding-
DisableEmptyBlockRemovalSetting this to 1/true adds a compiler switch to disable empty block optimization-
DisableFDivReassociationDisable reassociation for Fdiv operations to avoid precision difference-
DisableFlattenSmallSwitchDisable the flatten small switch pass-
DisableGatingSimilarSamplesDisable Gating of similar sample instructions-
DisableIGCOptimizationsSetting this to 1/true adds a compiler switch to disables all the above IGC optimizations-
DisableIPConstantPropagationDisable Inter-procedrual constant propgation-
DisableIRVerificationSetting this to 1/true adds a compiler switch to disable IGC IR verification.-
DisableImmConstantOptDisable IGC IndirectICBPropagaion optimization-
DisableLLVMGenericOptimizationsDisable LLVM generic optimization passes-
DisableLoadSinkingSetting this to 1/true adds a compiler switch to disable load sinking during retry-
DisableLoopSinkDisable sinking in all loopsAvailable
DisableLoopSplitWidePHIsDisable splitting of loop PHI values to eliminate subvector extract operations-
DisableLoopUnrollSetting this to 1/true adds a compiler switch to disable loop unrolling.Available
DisableMCSOptDisable IGC to run MCS optimization-
DisableMatchFloorSetting this to 1/true adds a compiler switch to disable sub-frc = floor optimization-
DisableMatchMadSetting this to 1/true adds a compiler switch to disable mul+add = mad optimization-
DisableMatchPowSetting this to 1/true adds a compiler switch to disable log2/mul/exp2 = pow optimization-
DisableMatchPredAddSetting this to 1/true adds a compiler switch to disable pred+add = predAdd optimization-
DisableMatchSimpleAddSetting this to 1/true adds a compiler switch to disable simple cmp+and+add optimization-
DisableMovingInstanceIDIndexOfVSDisable moving index of InstanceID in VS to last location.-
DisablePayloadCoalescingSetting this to 1/true adds a compiler switch to disable payload coalescing optimization for all types-
DisablePayloadCoalescing_AtomicTypedSetting this to 1/true adds a compiler switch to disable payload coalescing optimization for atomic typed only-
DisablePayloadCoalescing_RTSetting this to 1/true adds a compiler switch to disable payload coalescing optimization for RT only-
DisablePayloadCoalescing_SampleSetting this to 1/true adds a compiler switch to disable payload coalescing optimization for Samplers only-
DisablePayloadCoalescing_URBSetting this to 1/true adds a compiler switch to disable payload coalescing optimization for URB writes only-
DisablePromotePrivMemSetting this to 1/true adds a compiler switch to disable IGC private array promotion-
DisablePullConstantHeuristicsDisable the heuristics to determine the no. push constants based on payload size.-
DisablePushConstantBit mask to disable push constant per shader stages. bit0 = All, Bit 1 = VS, Bit 2 = HS, Bit 3 = DS, Bit 4 = GS, Bit 5 = PS-
DisableRectListOptDisable Rect List optimization-
DisableReducePowDisable IGC to reduce pow instructions-
DisableSIMD32SlicingSetting this to 1/true adds a compiler switch to disable emitting SIMD32 VISA code in slices-
DisableSimplePushWithDynamicUniformBuffersDisable Simple Push Constants Optimization for dynamic uniform buffers.-
DisableSqrtOptPrevent IGC from doing the optimization y*y = x if y = sqrt(x)-
DisableStaticCheckDisable static check to push constants.-
DisableStaticCheckForConstantFoldingDisable static check to fold constants.-
DisableSynchronizationObjectCoalescingPassDisable SynchronizationObjectCoalescing pass-
DisableTypedWriteZeroStoreCheckDisables eliminating a potential zero store by a typed write instruction (moving the instruction under a if-statement to guarantee a non-zero store)-
DisableURBPartialWritesPassDisable IGC pass that converts URB partial writes to full-mask writes.-
DisableURBReadMergeDisable IGC pass that merges URB Read instructions.-
DisableURBWriteMergeSetting this to 1/true adds a compiler switch to disable URB write merge-
DisableUniformAnalysisSetting this to 1/true adds a compiler switch to disable uniform_analysis-
DisableUniformTypedAccessSetting this will disable uniform typed access handling-
DisableUniformURBWriteDisables generation of uniform URB write messages-
DivRemIncrementCondBranchSimplifyCreate branches when simplifying consecutive udiv/urem groups increment dividend by constant greater than 1-
DumpCodeSchedulingDump code schedulingAvailable
EnableAtomicBranchBitmask to enable Atomic branch optimization that predicates atomic with if/else. 1: if Val == 0 ignore iadd/sub/umax 0. 2: checks if memory is lower than Val for umax. 4: checks if memory if greater than Val for umin. 8: generate load_ugm for untyped atomics, otherwise ld_lz-
EnableBarrierControlFlowOptimizationPassEnable barrier control flow optimization pass-
EnableBitcastedLoadNarrowingEnable narrowing of vector loads in bitcasts patterns.-
EnableBitcastedLoadNarrowingToScalarEnable narrowing of vector loads to scalar ones in bitcasts patterns.-
EnableBlendToDiscardEnable blend to discard based on blend state.-
EnableBlendToFillEnable blend to fill based on blend state.-
EnableCodeAssumptionIf set (> 0), generate llvm.assume to help certain optimizations. It is OCL only for now.
Only 1 and 2 are valid. 2 will be 1 plus additional assumption. It also does other minor changes.
-
EnableCodeSchedulingIfNoSpillsTry rescheduling also when there are no spillsAvailable
EnableCustomLoopVersioningEnable IGC to do custom loop versioning-
EnableDeSSASetting this to 0/false adds a compiler switch to disable De-SSA-
EnableDeSSAWA[tmp]Keep some piece of code to avoid perf regression-
EnableExtractCommonMultiplierEnable ExtractCommonMultiplier optimization in CustomUnsafeOptPass.-
EnableFastMathEnable fast math optimizations in IGC-
EnableFastSampleDEnable fast sample D opt.-
EnableGEPLSREnables GEP Loop Strength Reduction passAvailable
EnableGEPLSRAnyIntBitWidthEnables reduction of SCEV with illegal integers. Requires legalization pass to clear up expanded code.Available
EnableGEPLSRMulExprExperimental: Enables reduction with constant, but unknown step if step contains multiplication.Available
EnableGEPLSRToPreheaderEnables reduction to loop's preheader in GEP Loop Strength Reduction passAvailable
EnableGEPLSRUnknownConstantStepExperimental: Enables reduction with constant, but unknown step.Available
EnableGVNEnable LLVM global value numbering-
EnableGenUpdateCBEnable derived constant optimization.-
EnableGenUpdateCBResInfoEnable derived constant optimization with resinfo.-
EnableHighestSIMDForNoSpillWhen there is no spill choose highest SIMD (compute shader only).-
EnableHoistDp3Enable dp3 Hoisting.-
EnableHoistMulInLoopHoist multiply with loop invirant out of loop, FP unsafe-
EnableIndVarSimplificationEnables IndVarSimplification pass.Available
EnableIndependentSharedMemoryFenceFunctionalityEnable treating global memory fences as shared memory fences in SynchronizationObjectCoalescing pass-
EnableInstructionHoistingOptimizationEnable optimization for hoisting latency instructions-
EnableIntDivRemIncrementReductionEnable consecutive Int DivRem increment by constant optimization-
EnableIntegerMadSetting this to 1/true adds a compiler switch to enable integer mul+add = mad optimization-
EnableInterpreterPatternMatchingEnable Interpreter pattern matching and force retry if the pattern was found.-
EnableJumpThreadingSetting this to 1/true adds a compiler switch to enable llvm jumpThreading pass.Available
EnableLSCFenceEnable LSC Fence in ConvertDXIL for the device has LSC-
EnableLoadChainLoopSinkAllow sinking of load address calculation when the load was sinked to the loop, even if the needed regpressure is achieved (only single use instructions)-
EnableLoadsLoopSinkAllow sinking of loads in the loop-
EnableLogicalAndToBranchEnable convert logical AND to conditional branch-
EnableLoopHoistConstantEnables pass to check for specific loop patterns where variables are constant across all but the last iteration, and hoist them out of the loop.-
EnableNewTileYCheckEnable new TileY check. 0 - off, 1 - on, 2 - platform default-
EnableOptReportLoadNarrowingGenerate opt report for narrowing of vector loads.-
EnablePingPongTextureOptEnables the Ping Pong texture optimization which is used only for Compute Shaders for back to back dispatches-
EnablePlatformFenceOptForce fence optimization-
EnablePowToLogMulExpEnable pow to exp(log(x)*y) optimization in CustomUnsafeOptPass.-
EnablePromoteToPredicatedMemoryAccessEnable predicated load/store if conversion.Available
EnableResourceLoopDestLifeTimeStartEnable lifetime_start set for destination in resource loop-
EnableRobustBufferAccessPushSetting to 1/true will allow a single push buffer to be supported when the client requests robust buffer access (DG2+ only)-
EnableSLMConstPropEnable SLM constant propagation (compute shader only).-
EnableSamplerChannelReturnSetting this to 1/true adds a compiler switch to enable using header to return selective channels from sampler-
EnableSelectCSWalkOrderPassEnable SelectCSWalkOrderPass at the earlier stage than PreCompile time-
EnableSimplePushSizeBasedOpimizationEnable the simplepush optimization to do push based on size-
EnableSimplifyGEPEnable IGC to simplify indices expr of GEP.-
EnableSplitIndirectEEtoSelEnable the split indirect extractelement to icmp+sel pass-
EnableSplitUnalignedVectorEnable Splitting of unaligned vectors for loads and stores-
EnableStatefulAtomicEnable promoting stateless atomic to stateful atomic.-
EnableStatefulTokenEnable to indicate ptr arguments are fully converted to stateful (temporary)-
EnableStatelessToStatefulEnable Stateless To Stateful transformation for global and constant address space in OpenCL kernels-
EnableSumFractionsEnable SumFractions optimization in CustomUnsafeOptPass.-
EnableTextureLoadCoalescingEnable merging non-uniform loads from bindless textures-
EnableThreadCombiningOptEnables the thread combining optimization which is used only for Compute Shaders for combining a number of software threads to dispatch smaller number of hardware threads-
EnableThreeWayLoadSpiltOptEnable three way load spilt opt.-
EnableTrigFuncRangeReductionreduce the sin and cosing function domain rangeAvailable
EnableUnmaskedFunctionsEnable unmaksed functions SYCL feature.Available
EnableVRTEnable Variable Register per ThreadAvailable
EnableWaveAllJointReductionEnable Joint Reduction Optimization.-
EnableWaveForce32Force Wave to use simd32-
EnableWaveShuffleIndexSinkingHoist identical instructions operating on WaveShuffleIndex instructions with the same source and a constant lane/channel-
EnableWorkGroupUniformGotoSetting to 1 enables generating uniform goto for work group uniform [eu fusion only]-
FPRoundingModeCoalescingMaxDistanceMax distance in instructions for reordering FP instructions with common rounding mode-
ForceAddressArithSinkingForce sinking address arithmetic closer to the usage-
ForceHoistDp3force dp3 Hoisting.-
ForceLinearWalkOnLinearUAVForce linear walk on linear UAV buffer-
ForceLoadsLoopSinkForce sinking of loads in the loop from the beginning-
ForceLocalScopeEvictTGMForces upgrading fence.tgm.local.none to evictions-
ForceLoopSinkForce sinking in all loops-
ForceSupportsAutoGRFSelectionForceSupportsAutoGRFSelectionAvailable
ForceSupportsStaticRegSharingForceSupportsStaticRegSharingAvailable
ForceTileYForce TileY mode on DG2-
GEPLSRThresholdRatioRatio for register pressure threshold in GEP Loop Strength Reduction passAvailable
KeepTileYForFlattenedKeep TileY for FlattenedThreadIdInGroup. 0 - off, 1 - on, 2 - platform default-
LLVMCommandLineapplies LLVM command line-
LS_enableLoadSplittingEnable load splitting pass.Available
LS_ignoreSplitThresholdIf true, the pass splits loads regardless of the register pressure.-
LS_minSplitSize_EMinimal split size in elements.-
LS_minSplitSize_GRFMinimal split size in GRFs.-
LS_splitThresholdDelta_GRFRegister pressure must exceed total GRFs by this much for the load splitting to fire up.-
LoopSinkAvoidSplittingDPASSink before the whole DPAS sequence if the first use of the sinked instruction is not the first DPAS-
LoopSinkCoarserLoadsReschedulingTry to reschedule multi-instruction load candidates in larger chunks-
LoopSinkDisableRollbackDisable loopsink rollback completely (even in case of increased regpressure)-
LoopSinkEnable2dBlockReadsAllow sinking of the 2d block reads-
LoopSinkEnableLateReschedulingSchedule more aggressively in the end if the needed regpressure is still not achieved-
LoopSinkEnableLoadsReschedulingAllow sinking the loads that are already in the loop-
LoopSinkEnableVectorShuffleAllow sinking of the lowered vector shuffle pattern-
LoopSinkForce2dBlockReadsMaxSinkSink as much as possible in presence of 2d block loads-
LoopSinkForceRollbackRollback every loop sinking change (for debug purposes only)-
LoopSinkMinSaveIf loop sink can have save more 32-bit values than this Minimum, do it; otherwise, skip-
LoopSinkMinSaveUniformIf loop sink can have save more scalar (uniform) values than this Minimum, do it; otherwise, skip-
LoopSinkRegpressureMarginSink into the loop until the pressure becomes less than #grf-margin-
LoopSinkRollbackThresholdRollback loop sinking if the estimated regpressure after the sinking is still higher than this + #available registers, and the number of registers can be increased-
LoopSinkSkipDPASMacroIf a dpas macro sequence is present, skip load sinkingAvailable
LoopSinkThresholdDeltaDo loop sink If the estimated register pressure is higher than this + #avaialble registers-
MCSOptTwoStagesModeMCSOptimization gather all candidates than process-
MaxImmConstantSizePushedSet the max size of immediate constant buffer pushed-
PSSIMD32HeuristicFP16enable PS SIMD32 heuristic based on fp16 characteristic-
PSSIMD32HeuristicLoopAndDiscardenable PS SIMD32 heuristic based on loop info and discard-
PayloadSizeThresholdSet the max payload size threshold for short shades that have PSD bottleneck.-
PrepopulateLoadChainLoopSinkCheck the loop for loop chains before sinking to use the existing chains in a heuristic-
PrintWaveClusteredInterleave(Debug) Print if WaveClusteredInterleave pattern was found.Available
PromoteLoopUnrollwithAllocaCountThresholdThe loop trip count OR number of alloca elements cutoff to stop regkey EnablePromoteLoopUnrollwithAlloca (Check regkey description).-
RemoveUnusedSLMRemove SLM that are not used-
RemoveUnusedTGMFenceRemove TGM Fences that are not used/read-
RovOptBitmask for ROV optimizations. 0 for all off, 1 for force fence flush none, 2 for setting LSC_L1UC_L3C_WB, 3 for both opt on-
RunGEPLSRAfterLICMRuns GEP Loop Strength Reduction pass after first LICMAvailable
RuntimeLoopUnrollingSetting this to switch on/off runtime loop unrolling. 0: default (on), 1: force on, 2: force off-
SelectiveHashOptionsapplies options to hash range via string-
SetBranchSwapThresholdSet the branch swaping threshold.-
SetDefaultTileYWalkUse TileY walk as default for HW generating threadIDAvailable
SetLoopUnrollMaxPercentThresholdBoostForHighRegPressureSet the loop unroll max allowed threshold boost in percentage for shaders with high reg pressure. The LLVM internal value is 400.-
SetLoopUnrollThresholdSet the loop unroll threshold. Value 0 will use the default threshold.-
SetLoopUnrollThresholdForHighRegPressureSet the loop unroll threshold for shaders with high reg pressure.-
SetRegisterPressureThresholdForLoopUnrollSet the register pressure threshold for limiting the loop unroll to smaller loops-
SetURBFullWriteGranularityOverrides the minimum access granularity for URB full writes.
Valid values are 0, 16 and 32, value 0 means use default for the platform.
Available
SplitIndirectEEtoSelThresholdSplit indirect extractelement cost threshold-
SynchronizationObjectCoalescingConfigModify the default behavior of SynchronizationObjectCoalescing value is a bitmask bit0 โ€“ remove fences in read barrier write scenarioAvailable
UnrollLoopForCodeSizeOnlyOnly unroll the loop if it can reduce program size/register pressure. Ignore all other threshold setting but still enable PromoteLoopUnrollwithAlloca due to high likelyhood to reduce size.Available
UseHDCTypedReadForAllTexturesSetting this to use HDC message rather than sampler ld for texture read-
UseHDCTypedReadForAllTypedBuffersSetting this to use HDC message rather than sampler ld for buffer read-
UseTiledCSThreadOrderUse 4x4 disaptch for CS order when it seems beneficial-
WaAllowMatchMadOptimizationforVSSetting this to 1/true adds a compiler switch to enable mul+add = mad optimization for VS-
WaDisableMatchMadOptimizationForCSSetting this to 1/true adds a compiler switch to disable mul+add = mad optimization for CS-
WaveShuffleIndexSinkingMaxIterationsMax number of iterations to run iterative WaveShuffleIndexSinking-
forceFullUrbWriteMaskSet Full URB write mask.-
forcePushConstantModeset the push constant mode, 0 is default behavior, 1 is simple push, 2 is gather constant, 3 is none/pull constants-

Shader debugging

FlagDescriptionRelease builds
CompileOneAtTimeCompile only one kernel (out of many in llvm::module) at a time. Prints compiled kenrels names to stdout. Useful to debug compilation time and crashes - it does not produce valid binary.-
CopyA0ToDBG0Copy a0 used for extended msg descriptor to dbg0 to help debug-
DPASReadSuppressionWAEnable read suppression WA for the send and indirect access-
DebugInternalSwitchCode pass selection, debug only-
DisablePassTogglesDisable each IGC pass by setting the bit. HEXADECIMAL ONLY!. Ex: C0 is to disable pass 6 and pass 7.-
DisableSendSrcDstOverlapWADisable Send Source/destination overlap WA which is enabled for GEN10/GEN11 and whenever Wddm2Svm is set in WATable-
DisableWarningsDisable all warnings generated from IGC compilerAvailable
DumpPayloadToScratchSetting this to 1/true dumps thread payload to scartch space. Used for workloads which doesnt use scartch space for other purposes-
EnableBitcastExtractInsertPatternEnable BitcastExtractInsertPattern in CustomSafeOptPass.Available
EnableCSSIMD32Enable computer shader SIMD32 mode, and fall back to lower SIMD when spill-
EnableDebuggingEnable shader debugging for release internal-
EnableDivergentBarrierCheckUses WIAnalysis to find barriers in divergent flow control. May have false positives.-
EnableHashMovsAtPrologueRather than after EOT, insert hash code movs at shader entryAvailable
EnableLSCFenceUGMBeforeEOTEnable inserting fence.ugm.06.tile before EOT if a kernel has any write to UGM [XeHPC, PVC].Available
EnableOptionalBufferOffsetFor StatelessToStateful optimization [OCL], if true, make buffer offset optional. Valid only if buffer offset is supported.Available
EnableRTLSCFenceUGMBeforeEOT[tmp]Enable inserting fence.ugm.06.tile before EOT for RT shader [XeHPC, PVC].-
EnableRTmaskPsoEnable render target mask optimization in PSO opt-
EnableSIPOverrideThis key forces load of SIP from a a Local File.-
EnableSupportBufferOffset[debugging]For StatelessToStateful optimization [OCL], support implicit buffer offset argument (same as -cl-intel-has-buffer-offset-arg).-
EnableTestIGCBuiltinEnable testing igc builtin (precompiled kernels) using OCL.-
EnableTrivialEmulateSinCosEnable Emulation for Sine and Cosine instructions-
EnableZeroSomeARFIf set, insert mov inst to zero a0, acc, etc to assist HW debugging.-
EnablerReadSuppressionWAEnable read suppression WA for the send and indirect access-
ForceCSLeastSIMDForce computer shader to the lowest allowed SIMD mode-
ForceCSSIMD16Force computer shader SIMD16 mode if allowed, otherwise it will use SIMD32-
ForceCSSIMD32Force computer shader SIMD32 mode-
ForceDisableShaderDebugHashCodeInKernelDisable hash code addition to the binary after EOTAvailable
ForceEmuKindForce emuKind used by PreCompiledFuncImport pass. This flag takes emulation kind value that is defined in EmuKind enum in PreCompiledFuncImport.hpp [TEST ONLY]-
ForceFunctionsToNopReplace functions with immediate return to help narrow down shaders; use with Options.txt.-
ForceLoosenSimd32OccuControl loosenSimd32occu return value. 0 - off, 1 - on, 2 - platform default-
ForceMemoryFenceBeforeEOTForces inserting SLM or gloabal memory fence before EOT if shader writes to SLM or goblam memory respectively.-
ForcePerThreadPrivateMemorySizeUseful for ensuring a certain amount of private memory when doing a shader override.Available
ForceRecompilationForce RetryManager to make recompilation-
ForceStatelessForQueueTIn OCL, force to use stateless memory to hold queue_t*. This is a legacy feature to be removed.-
HandlePhiNodeInChannelPruneDuring channel prune don't stop at phinode but look at it's users.-
MSAAClearedKernelInsert the discard code for MSAA_MSC_Cleared kernels. 2/4/8/16-
PrintVerboseGenericControlFlowLogForces compiler to print detailed log about additional control flow generated due to a presence of generic memory operationsAvailable
RetryManagerFirstStateIdFor debugging purposes, it can be useful to start on a particular id rather than id 0.-
RouteByLodHintAn integer offset addon to route the resource to HDC on DG2-
SIPOverrideFilePathThis key when enabled with EnableSIPOverride load of SIP from a specified path.-
SToSProducesPositivePointerThis key is for StatelessToStateful optimization if the user knows the pointer offset is postive to the kernel argument.-
ShaderDebugHashCodeThe driver will set a breakpoint in the first instruction of the shader which has the provided hash code.
It works only when the value is different then 0 and SystemThreadEnable is set to TRUE.
Ex: VS_asm2df26246434553ad_nos0000000000000000 , only the LowPart Need
to be Enterd in Registry Ex : 0x434553ad ,i.e Lower 8 Hex Digits of the 16 Digit Hash Code
for Compatibilty Reasons
-
ShaderDebugHashCodeInKernelAdd hash code to the binaryAvailable
ShaderDisableOptPassesAfterWill only run first N optimization passes, any further passes will be ignored. This flag can be used to bisect optimization passes.-
ShaderDisplayAllPassesNamesDisplay to console all passes name with their ID and occurrence number.-
ShaderOverrideWill override any LLVM shader with matching name in c:\Intel\IGC\ShaderOverride-
ShaderPassDisableDisable specific passes eg. '9;17-19;239-;Error Check;ResolveOCLAtomics:2;Dead Code Elimination:3-5;BreakConstantExprPass:7-'
disable pass 9, disable passes from 17 to 19, disable all passes after 238, disable all occurrences of pass Error Check,
disable second occurrence of ResolveOCLAtomics, disable pass Dead Code Elimination occurrences from 3 to 5,
disable all BreakConstantExprPass after his 6 occurrence
To show a list of pass names and their occurrence set ShaderDisplayAllPassesNames.
Must be used with ShaderDumpEnableAll flag.
-
Splitld2dmsAfterFirstInstead of splitting after second ld2dms message, split after first to avoid waiting-
SystemThreadEnableThis key forces software to create a system thread. The system thread may still be created by software even
if this control is set to false.The system thread is invoked if either the software requires
exception handling or if kernel debugging is active and a breakpoint is hit.
-
TestIGCPreCompiledFunctionsEnable testing for precompiled kernels. [TEST ONLY]-
ld2dmsInstsClubbingThresholdDo not club more than these ld2dms insts into the new BB during MCSOpt-
manualEnableRSWAEnable read suppression WA for the send and indirect access-

Shader dumping

FlagDescriptionRelease builds
AddExtraIntfInfoWill add extra inteference info from .extraintf files from c:\Intel\IGC\ShaderOverride-
DebugDumpNamePrefixSet a prefix to debug info dump filenames(with path) and drop hash info from them (for testing purposes)Available
DumpDeSSAdump DeSSA info into file.Available
DumpHasNonKernelArgLdStPrint if hasNonKernelArg load/store to stderrAvailable
DumpLLVMIRdump LLVM IRAvailable
DumpLoopSinkDump debug info in LoopSink-
DumpResourceLoopdump resource loop detected by ResourceLoopAnalysisAvailable
DumpTimeStatsTiming of translation, code generation, finalizer, etcAvailable
DumpTimeStatsCoarseOnly collect/dump coarse level time stats, i.e. skip opt detail timer for nowAvailable
DumpTimeStatsPerPassCollect Timing of IGC/LLVM passesAvailable
DumpToCurrentDirdump shaders to the current directoryAvailable
DumpToCustomDirDump shaders to custom directory. Parent directory must exist.Available
DumpUseShorterNameIf set, use an internal shader name(_entry_id) in dump file nameAvailable
DumpVariableAliasDump variable alias info, valid if EnableVariableAlias is onAvailable
DumpWIAdump WI (uniform) infomation into files in dump directory if set to true-
DumpZEInfoToConsoleDump zeinfo to consoleAvailable
ElfDumpEnabledump ELF fileAvailable
ElfTempDumpEnabledump temporary ELF filesAvailable
EnableCapsDumpEnable hardware caps dumpAvailable
EnableCisDumpEnable cis dumpAvailable
EnableCosDumpEnable cos dumpAvailable
EnableKernelNamesBasedHashIf set, use kernels' names to calculate the hash. Doesn't work on .cl dump's hash. Will overwrite dumps if multiple modules have the same kernel names.-
EnableLivenessDumpEnable dumping out liveness info on stderr.Available
EnableRemarksEnable remark for Divergent Barrier-
EnableScalarizerDebugLogprint step by step scalarizer debug info.Available
EnableShaderNumberingNumber shaders in the order they are dumped based on their hashesAvailable
ForceRPEForce RPE (RegisterEstimator) computation if > 0. If 2, force RPE per inst.Available
InterleaveSourceShaderInterleave the source shader in asm dumpAvailable
LoopSinkDumpLevel1, 2 or 3: Dump loop sink with the needed verbosity-
PrintAfterTake either all or comma/semicolon-separated list of pass names. If set, enable print LLVM IR after the given pass is done (mimic llvm print-after)Available
PrintBeforeTake either all or comma/semicolon-separated list of pass names. If set, enable print LLVM IR before the given pass is done (mimic llvm print-before)Available
PrintHexFloatInShaderDumpAsmprint floats in hex in asm dumpAvailable
PrintInstOffsetInShaderDumpAsmprint instruction offsets as comments in asm dumpAvailable
PrintMDBeforeModulePrint metadata of the module at the beginning of the dump. Used for LIT tests.Available
PrintPsoDdiHashPrint psoDDIHash in TimeStats_Shaders.csv fileAvailable
PrintToConsoledump to consoleAvailable
ProgbinDumpFileNameSpecify filename to use for dumping progbin file to current dirAvailable
QualityMetricsEnableEnable Quality Metrics for IGCAvailable
RPEDumpLevel> 0 : dump info of register pressure estimate on stderr. See igc_flags.hpp level defs.-
ShaderDataBaseStatsEnable gathering sends' sizes for shader statistics-
ShaderDataBaseStatsFilePathPath to a file with dumped shader stats additional data e.g. data available during compilation only-
ShaderDumpEnabledump LLVM IR, visaasm, and GenISAAvailable
ShaderDumpEnableAlldump all LLVM IR passes, visaasm, and GenISAAvailable
ShaderDumpEnableG4same as ShaderDumpEnable but adds G4 dumps (0 = off, 1 = some, 2 = all)-
ShaderDumpEnableIGAJSONadds IGA JSON output to shader dumps (0 = off, 1 = enabled, 2 = include def/use info but causes longer compile times)-
ShaderDumpEnableRAMetadataadds RA Metadata file to shader dumpsAvailable
ShaderDumpInstNamerdump all unnamed LLVM IR instruction with variable names 'tmp' which makes easier for shaderoverridingAvailable
ShaderDumpPidDisabledisabled adding PID to the name of shader dump directoryAvailable
ShaderDumpRegexFilterOnly dump files matching the given regexAvailable
ShaderSendInfoReworkTemporary Regkey for reworking sendinfo-
ShowFullVectorsInShaderDumpsprint all elements of vectors in ShaderDumps, can dramatically increase ShaderDumps sizeAvailable
SpvAsmDumpEnableDump spvasm fileAvailable

Debugging features

FlagDescriptionRelease builds
AdHocUnassigned debug key that can be used for experiments. Do not commit usages of this regkey-
AssignZeroToUndefPhiNodesAssigns a null value to such a phi node which has an undefined value during emitting vISA-
AvoidUsingR0R1Do not use r0 and r1 as generic usage registers-
BufferBoundsCheckingSetting this to 1 (true) enables buffer bounds checkingAvailable
DebugInfoEnforceAmd64EMEnforces elf file with the debug infomation to have eMachine set to AMD64-
DebugInfoValidationEnable optional (strict) checks to detect debug information inconsistencies-
EnableIEEEFloatExceptionTrapEnable CR0 IEEE float exception trap bitAvailable
EnableRelocationsSetting this to 1 (true) makes IGC emit relocatable ELF with debug infoAvailable
EnableTestSplitI64Test legalization that split i64 store unnecessarily, to be deleted once test is done[temp]Available
EnableWriteOldFPToStackSetting this to 1 (true) writes the caller frame's frame-pointer to the start of callee's frame on stack, to support stack walk-
ExtraOCLInternalOptionsExtra internal options for OpenCLAvailable
ExtraOCLOptionsExtra options for OpenCLAvailable
ForceAssignRhysicalRegForce assigning dclId to phyiscal reg.Available
ForceSpillVariablescomma-separated string, each provide the declare id of variable which will be spilledAvailable
InitializeAddressRegistersBeforeUseSetting this to 1 (true) initializes address register to 0 before each use-
InitializeRegistersEnableSetting this to 1/true initializes all GRFs, Flag and address registers to 0 at the beginning of the shader-
InitializeUndefValueEnableSetting this to 1/true initializes all undefs in URB payload to 0-
MetricsDumpEnableDump IGC Metrics to file *.optrpt in current working directory.
Setting to 0 - disabled, 1 - makes in binary format, 2 - makes in plain-text format.
Available
MinimumValidAddressIf it's greater than 0, it enables minimal valid address checking where the threshold is the given value (in hex).Available
NoCatchAllDebugLineDon't emit special placeholder instruction to map VISA orphan instructions-
PrintDebugSettingsPrints all non-default debug settings-
ShaderDumpTranslationOnlyDump LLVM IR right after translation from SPIRV to stderr and ignore all passes-
StackOverflowDetectionInserts checks for stack overflow when stack calls or VLAs are used. See documentation: documentation/igc/StackOverflowDetection/StackOverflowDetection.mdAvailable
UseMTInLLDUse multi-threading when linking multiple elf filesAvailable
UseVISAVarNamesMake VISA generate names for virtual variables so they match with dbg fileAvailable
UseVMaskPredicateUse VMask as predicate for subspan usage-
UseVMaskPredicateForIndirectMoveUse VMask as predicate for subspan usage (indirect mov only)Available
UseVMaskPredicateForLoadsUse VMask as predicate for subspan usage (loads only)Available
ZeBinCompatibleDebuggingSetting this to 1 (true) enables embed debug info in zeBinaryAvailable
deadLoopForFloatExceptionenable a dead loop if float exception happened-

IGC Features

FlagDescriptionRelease builds
AdvCodeMotionControlControl bits to fine-tune advanced code motion-
AdvRuntimeUnrollCountAdvanced runtime unroll count-
AllowedSpillRegCountMax allowed spill size without recompile-
CSSpillThreshold2xGRFRetrySpill Threshold for CS to trigger 2xGRFRetry-
CSSpillThresholdNoSLMSpill Threshold for CS SIMD16 without SLM-
CSSpillThresholdSLMSpill Threshold for CS SIMD16 with SLM-
CheckCSSLMLimitCheck SLM or threads limit on compute shader to turn on Enable2xGRF on DG2+ 0 - off, 1 - SLM limit heuristic, 2 - platform based heuristic (XE2 - threads limit, others - SLM limit)-
DPEmuNeedI64EmuDouble Emulation needs I64 emulation. Unsetting it to disable I64 Emulation for testing.-
DisableAddRequiredMemoryFencesPassDisables AddRequiredMemoryFencesPassAvailable
DisableCorrectlyRoundedMacrosTmp flag to disable correcly rounded macros for BMG+. This flag will be removed in the future.-
DisableDSDualPatchSetting it to true with enable Single and Dual Patch dispatch mode for Domain Shader-
DisableEarlyOutPatternsDisable optimization trying to create an early out after sampleC messages-
DisableGPGPUIndirectPayloadDisable OCL indirect GPGPU payload-
DisableLSCForTypedUAVForces legacy HDC messages for typed UAV read/write. Temporary knob for XE2 bringup.Available
DisableLSCSIMD32TGMMessagesForces splitting SIMD32 typed messages into 2xSIMD16. Only valid on XE2+.Available
DisableMemOptDisable MemOpt, merging load/storeAvailable
DisableMemOpt2Disable MemOpt2-
DisableMergeStore[temp]If EnableLdStCombine is on, disable mergestore (memopt) if this is set. Temp key for testingAvailable
DisableOCLScalarizerDisable ScalarizeFunction pass in OCL pipelineAvailable
DisablePHIScalarizationDisable scalarization of PHINode instructionsAvailable
DisablePrefetchToL1CacheDisable prefetch to L1 cacheAvailable
DisablePromoteToDirectASThis key disables the PromoteResourceToDirectAS pass-
DisableRecompilationDisable recompilation, skip retry stageAvailable
DisableScalarAtomicsDisable the Scalar Atomics optimization-
DisableShrinkArrayAllocaPassDisables ShrinkArrayAllocaPassAvailable
DisableSystemMemoryCachingInGPUForConstantBuffersDisables caching system memory in GPU for loads from constant buffers-
DisableWaSampleLZDisable The Sample Lz workaround and generate Sample LZ-
DivergentBarrierUniformLoadOptimize loads for spill/fill generated by DivergentBarrier with uniform analysisAvailable
Enable16BitLDMCSEnable 16-bit ld_mcs on supported platformsAvailable
Enable2xGRFEnable 2x GRF for high SLM or high threads usage 0 - off, 1 - on, 2 - platform default-
Enable64BitEmulationEnable 64-bit emulation-
Enable64BitEmulationOnSelectedPlatformEnable 64-bit emulation on selected platforms-
EnableAIParameterCombiningWithLODBiasEnable AI parameter combining With LOD Bias parameter. XeHPAvailable
EnableAdvCodeMotionEnable advanced code motion-
EnableAdvMemOptEnable advanced memory optimization-
EnableAdvRuntimeUnrollEnable advanced runtime unroll-
EnableCPSOmaskWAEnable workaround for oMask with CPS-
EnableConstIntDivReductionEnables strength reduction on integer division/remainder with constant divisors/moduliAvailable
EnableDG2LSCSIMD8WAEnables WA for DG2 LSC simd8 d32-v8/d64-v3/d64-v4. [temp, should be replaced with WA id-
EnableDPEmulationEnforce double precision floating point operations emulation on platforms that do not support it nativelyAvailable
EnableDivergentBarrierWAGenerate continuation code to handle shaders that places barriers in divergent control flow-
EnableDualSIMD8enable dual SIMD8 on supported platformsAvailable
EnableEmitMoreMoviCasesEnables emitting movi for waveShuffle cases using And to keep index within single register.Available
EnableExplicitCopyForByValEnable generating an explicit copy (alloca + memcpy) in a caller for aggregate argumentes with byval attributeAvailable
EnableFallbackToBindlessThis key enables fallback to bindless mode on all shaders-
EnableFallbackToStatelessThis key enables fallback to stateless mode on all shaders-
EnableFunctionPointerEnables support for function pointers and indirect calls-
EnableGASResolverEnable GAS Resolver-
EnableGEPSimplificationEnable GEP simplificationAvailable
EnableGen11TwoStackTSGEnable Two stack TSG gen11 feature-
EnableGenericCastToPtrOptEnable simplification of GenericCastToPtrExplicit_ToGlobal calls-
EnableGlobalStateBufferThis key allows stack calls to read implicit args from side buffer. It also emits a relocatable add in VISA.Available
EnableHFpackingEnable HF packing-
EnableHSSinglePatchDispatchSetting this to 1/true enables SIMD8 single-patch dispatch in HullShader. Default is either SIMD8 single patch/dual patch dispatch based on control point count-
EnableImplicitArgAsIntrinsicUse GenISAIntrinsic instructions for supported implicit args instead of passing them as function argumentsAvailable
EnableIndirectCallOptimizationEnables inlining indirect calls by comparing function addresses-
EnableInsertingPairedResourcePointerEnable to insert a bindless paired resource address into sampler headers in context of sampling feedback resourcesAvailable
EnableIntDivRemCombineGiven div/rem pairs with same operands merged; replace rem with mul+sub on quotient; 0x3 (set bit[1]) forces this on constant power of two divisors as wellAvailable
EnableKernelCostDebugEnable kernel cost info debuging-
EnableKernelCostInfoEnable collecting kernel cost infoAvailable
EnableL3FlushForGlobalEnable/disable flushing L3 cache for globals-
EnableLSCEnables the new dataport encoding for LSC messages.Available
EnableLdStCombineEnable load/store combine pass if set to 1 (lsc message only) or 2; bit 3 = 1 [tmp for testing] : enabled load combine (intend to replace memopt)Available
EnableLdStCombinewithDummyLoadAdds extra load instruction to increase the size of coalesced loadAvailable
EnableLowerGPCallArgEnable pass to lower generic pointers in function arguments-
EnableMadLoopSliceEnables slicing of MAD chains in loops and acyclic blocks.Available
EnableMaxWGSizeCalculationEnable max work group size calculation [OCL only]Available
EnableMeshSLMCacheEnables caching Mesh shader outputs in SLM,
bitmask:
bit0 - cache AND flush mode, enable caching of Primitive Count and Primitive Indices,
bit1 - cache AND flush mode, enable caching of per-vertex outputs,
bit2 - cache AND flush mode, enable caching of per-primitive outputs,
bit3 - mirror mode, if this bit is set bits 0, 1 and 2 are ignored,
enable caching of outputs that are read in the shader
data is only mirrored in SLM
Available
EnableMeshShaderSimdSizeSet allowed simd sizes for mesh shader compilation,
bitmask bit0 - simd8, bit1 - simd16, bit2 - simd32,
e.g. 0x7 enables all simd sizes and 0x2 enables only simd16,
valid values are from 0 to 7
ignored if produces invalid cofiguration, e.g. simd size too small for workgroup size,
ignored if ForceMeshShaderSimdSize is set
Available
EnableOCLSIMD16Enable OCL SIMD16 modeAvailable
EnableOCLSIMD32Enable OCL SIMD32 modeAvailable
EnableOCLScratchPrivateMemoryEnable the use of scratch space for private memory [OCL only]Available
EnableOutOfBoundsBuiltinChecksEnable extra checks for OOB in builtinsAvailable
EnablePartialEmuI64Enable the partial I64 emulation for PVC-B, Xe2Available
EnablePostCullPatchFIFOHPEnable Post-Cull Patch Decoupling FIFO. XeHP.Available
EnablePostCullPatchFIFOLPEnable Post-Cull Patch Decoupling FIFO. GEN12LP.Available
EnablePreRARematFlagEnable PreRA Rematerialization of Flag-
EnablePromotionToSampleMlodEnables promotion of sample and sample_c to sample_mlod and sample_c_mlod instructions when min lod is present-
EnableReadGTPinInputEnables setting GTPin context flags by reading the input to the compiler adapters-
EnableRecursionOpenCLEnable recursion with OpenCL user functions-
EnableSIMD16ForNonWaveXe2Enable CS SIMD16 for Xe2 if the shader doesn't have wave-
EnableSIMD16ForXe2Enable CS SIMD16 for Xe2-
EnableSIMDVariantCompilationEnables compiling kernels in variant SIMD sizes-
EnableSMReschedulingChange instruction order to enable extra Sample Multiversioning cases-
EnableSampleBMLODWAEnable workaround for sample_b messages that use the mlod parameter-
EnableSamplerSupportEnables sampler messages generation for PVC.Available
EnableScalarPhisMergerenable optimization that merges scalar phi nodes into vector onesAvailable
EnableScalarTypedAtomicsEnable the Scalar Typed Atomics optimization-
EnableScratchMessageD64WAEnables WA to legalize D64 scratch messages to D32-
EnableSelectiveScalarizerenable selective scalarizer on GPGPU pathAvailable
EnableSingleVertexDispatchVertex Shader Single Patch Dispatch Regkey-
EnableTaskShaderSimdSizeSet allowed simd sizes for task shader compilation,
bitmask bit0 - simd8, bit1 - simd16, bit2 - simd32,
e.g. 0x7 enables all simd sizes and 0x2 enables only simd16,
valid values are from 0 to 7
ignored if produces invalid cofiguration, e.g. simd size too small for workgroup size,
ignored if ForceMeshShaderSimdSize is set
Available
EnableTileYForExperimentsEnable TileY heuristics for experiments-
EnableTypeDemotionEnable Type Demotion-
EnableVectorEmitterEnable Vector Emission for a vectorizerAvailable
EnableVectorizerEnable IGCVectorizer passAvailable
Enable_Wa14010017096Enable Wa_14010017096 regardless of the platfrom steppingAvailable
Enable_Wa1507979211Enable Wa_1507979211 regardless of the platfrom steppingAvailable
Enable_Wa1807084924Enable Wa_1807084924 regardless of the platfrom steppingAvailable
Enable_Wa22010487853Enable Wa_22010487853 regardless of the platfrom steppingAvailable
Enable_Wa22010493955Enable Wa_22010493955 regardless of the platfrom steppingAvailable
Force32BitIntDivRemEmuForce 32-bit Int Div/Rem emulation using fp64, ignored if no native fp64 supportAvailable
Force32BitIntDivRemEmuSPForce 32-bit Int Div/Rem emulation using fp32, ignored if Force32BitIntDivRemEmu is set and actually usedAvailable
ForceDPEmulationForce double emulation for testing purpose-
ForceDisableDPToHFConvEmuForce the compiler to disable an emulation for the conversion from fp64 to fp16 (use a native (inaccurate) operations instead - fp64 to fp32 and then fp32 to fp16)-
ForceFFIDOverwriteForce overwriting ffid in sr0.0-
ForceFormatConversionDG2PlusForces SW image format conversion for R10G10B10A2_UNORM, R11G11B10_FLOAT, R10G10B10A2_UINT image formats on DG2+ platformsAvailable
ForceI64DivRemEmuForces specific int64 div/rem emulation: 0 = platform default, 1 = int based, 2 = SP based, 3 = DP based-
ForceMeshShaderSimdSizeForce mesh shader simd size,
valid values are 0 (not set), 8, 16 and 32
ignored if produces invalid cofiguration, e.g. simd size too small for workgroup size
Available
ForceNoLSCDisables the new dataport encoding for LSC messages.Available
ForceOCLSIMDWidthForce using SIMD width specified. 0 : no forcing. This overrides driver forced SIMD value(if any) and runtime behaviour could be different if driver expects something fixedAvailable
ForcePrefetchToL1CacheForces standard builtin prefetch to use L1 cacheAvailable
ForceSPDivEmulationForce SP Div emulation for testing purpose-
ForceSampleDEmulationEnable emulation of sample_d on pre-XeHP platforms.Available
ForceStaticToDynamicForce write of vertex count in GS-
ForceTaskShaderSimdSizeForce task shader simd size,
valid values are 0 (not set), 8, 16 and 32
ignored if produces invalid cofiguration, e.g. simd size too small for workgroup size
Available
ForceXYZworkGroupWalkOrderForce X/Y/Z WorkGroup walk orderAvailable
HoistPSConstBufferValuesHoists up down converts for contant buffer accesses, so they an be vectorized more easily.-
LICMStatThresholdLICM stat threshold to avoid retry SIMD16 for CS-
LateInlineUnmaskedFuncPostpone inlining of Unmasked functions till end of CG to avoid code movement inside/outside of unmasked region-
LscForceSpillNonStackcallNon-stack call kernels that spill will use LSC on DG2+Available
LscImmOffsMatchMatch address patterns that have an immediate offset for the vISA LSC API (0 means off/no matching, 1 means on/match for supported platforms (Xe2+) and APIs, 2 means force on for all platforms (vISA will emulate the addition if HW lacks support) and APIs, 3 is the same as 2 and additionally skip the check if A32 offset is a positive value; also see LscImmOffsVisaOptsAvailable
LscImmOffsVisaOptsThis maps to vISA_lscEnableImmOffsFor (enables/disables immediate offsets for various address types; see that option for semantics)Available
MaxLiveOutThresholdMax LiveOut Threshold in MemOpt2-
MaxLoadVectorSizeInBytes[LdStCombine] the max non-uniform vector size for the coalesced load. 0: compiler choice (default, 16(4DW)); others: 4/8/16/32Available
MaxStoreVectorSizeInBytes[LdStCombine] the max non-uniform vector size for the coalesced store. 0: compiler choice (default, 16(4DW)); others: 4/8/16/32Available
MemOptGEPCanon[test] GEP canonicalization in MemOpt. 0 : enable; 1: disable; 2: disable only for OCL;Available
OCLEnableReassociateEnable reassociationAvailable
OCLSIMD16SelectionMaskSelect SIMD 16 heuristics. Valid values are 0, 1, 2 and 3-
OverrideDeviceIdForWAEnable this to override DeviceId-
OverrideProductFamilyForWAEnable this to override the product family, get the correct enum from igfxfmid.h-
OverrideRevIdForWAEnable this to override the stepping/RevId, default is a0 = 0, b0 = 1, c0 = 2, so on...-
RemoveLegacyOCLStatelessPrivateMemoryCasesRemove cases where OCL uses stateless private memory. XeHP and above only! [OCL only]Available
SampleMultiversioningCreate branches aroung samplers which can be redundant with some values-
SelectiveLoopUnrollForDPEmuSetting this to 0/false disable selective loop unrolling for DP emu.Available
SendMultipleSIMDModesCSSend multiple SIMD modes for CS-
SkipPsSimdWithDualSimdSetting it to values def in igc.h will force SIMD mode to skip if the dual-SIMD8 kernel existsAvailable
TestGEPSimplification[Test] Testing GEP simplification without actually lowering GEP. Used in lit test-
UniformMemOpt4OWincrease uniform memory optimization from 2 owords to 4 owordsAvailable
VectorizerAllowCMPAllow CMP instructions inside vectorizerAvailable
VectorizerAllowEXP2Allow EXP2 instructions inside vectorizerAvailable
VectorizerAllowFADDAllow FADD instructions inside vectorizerAvailable
VectorizerAllowFDIVAllow FDIV instructions inside vectorizerAvailable
VectorizerAllowFMADMatchingAllow FADD and FMUL instructions to be matched later in the pattern match passAvailable
VectorizerAllowFMULAllow FMUL instructions inside vectorizerAvailable
VectorizerAllowFPTRUNCAllow FPTRUNC instructions inside vectorizerAvailable
VectorizerAllowFSUBAllow FSUB instructions inside vectorizerAvailable
VectorizerAllowI32Allow I32 versions of instructions inside vectorizerAvailable
VectorizerAllowMAXNUMAllow MAXNUM instructions inside vectorizerAvailable
VectorizerAllowSelectAllow Select instructions inside vectorizerAvailable
VectorizerAllowWAVEALLAllow WAVEALL instructions inside vectorizerAvailable
VectorizerCheckScalarizerAdd scalariser after vectorizer to check performanceAvailable
VectorizerDepWindowMultiplierMultiplier for the slice size to account for vectorizer dependency check windowAvailable
VectorizerEnablePartialVectorizationNot fully tested option, allows to substitute scalar part with partially vectorized through extract elementsAvailable
VectorizerListVectorize only one seed instruction with the provided numberAvailable
VectorizerUniformValueVectorizationEnabledVector Emitter emits vectorized instruction for uniform valuesAvailable
Decompose2DBlockFuncsModeMode for decomposing 2D block functions in IGC, 1 enables legacy pass (Decompose2DBlockFuncs), 2 enables new pass with address payloads hoisting functionality (Decompose2DBlockFuncsWithAddrHoisting) before load scheduling, 2 enables new pass with address payloads hoisting functionality (Decompose2DBlockFuncsWithAddrHoisting) after load scheduling , 0 disables both passesAvailable
AllowPrefetchDecomposeWithHoistingAllow compiler to decide to use prefetch in 2D block intrinsics in Decompose2DBlockFuncsWithHoisting pass.-
allowImmOff2DBlockFuncsAllow compiler to decide to use immediate offsets in 2D block intrinsics in IGC.-
allowLICMEnable LICM in IGC.Available

Performance experiments

FlagDescriptionRelease builds
AddNoInlineToTrimmedFunctionsTell late passes not to inline trimmed functions-
AddressSpacePhiPropagationLower loads from PHI nodes into incoming nodes in case they cause extra address space casts.-
AllocaRAPressureThresholdThe threshold for the register pressure potential-
AllocateZeroInitializedVarsInBssAllocate zero initialized global variables in .bss section in ZEBinaryAvailable
AllowConstMadOpMovToRegEnable matching of mad instruction if constant greater than 16-bits. This will generate a mov in vISA for the constant operand due to it not fitting as an imm16 operand. At this point, the generated asm likely will fall back onto mul+add for the main case where src1 is the constant-
AllowCrossBlockMatchMadEnable cross basic block matching of mad instructions. This may lead to increased register pressure, but in exchange, may reduce instruction count-
AllowMultipleMulUsesMatchMadEnable a multiply instruction with multiple uses to be matched to a mad instruction. This essentially forces the recalculation of the intermediate multiply result for every potential mad instruction, which will have performance impacts but may reduce instruction count and register pressure in case both mul operands need to be live past the add/sub but the intermediate mul result does not.-
AllowNonLoopConstantPromotionAllows promotion for constants not in loop (e.g. used once)-
AllowSIMD16DropForXE2PlusControls the switch for XE2 and XE3 simd16 drop, including the early RPE-based drop-
AllowStackCallRetryEnable/Disable retry when stack function spill. 0 - Don't allow, 1 - Allow retry on kernel group, 2 - Allow retry per function-
BlockFrequencySamplingUse block frequencies to derive a distributionAvailable
ByPassAllocaSizeHeuristicForce some Alloca to pass the pressure heuristic until the given sizeAvailable
CodePatchEnable Pixel Shader code patching to directly emit code after stitching-
CodePatchExperimentsExperiment with code patching when != 0-
CodePatchFilterFilter out unsupported patterns-
CodePatchLimitDebug CodePatch via limiting the number of shader been patched-
ConstantPromotionCmpSelSizeArray size threshold for cmp-sel transform-
ConstantPromotionSizeThreshold in number of GRFs-
ControlInlineImplicitArgsAvoid trimming functions with implicit argsAvailable
ControlInlineTinySizeTiny function size for controlling kernel total sizeAvailable
ControlInlineTinySizeForSPGTTiny function size for controlling kernel total sizeAvailable
ControlKernelTotalSizeControl kernel total sizeAvailable
ControlUnitSizeControl compilation unit size by unit trimmingAvailable
CrashOnDroppedFnAccessEnables crash on access to dropped functionsAvailable
DelayEmuInt64AddLimitDelay emulating Int64 Add operations in vISA-
DetectCastToGASCheck if the module contains local/private to GAS (Gerneric Address Space) cast, it also check internal flagsAvailable
DiableWaSamplerNoMaskDisable WA DiableWaSamplerNoMask-
DisableAddingAlwaysAttributeDisable adding always attributeAvailable
DisableCSContentCheckDisable CS content check that can force SIMD32Available
DisableDualBlendSourceForce the compiler to never use dual blend source messages-
DisableDynamicPolyPackingPoliciesDisable dynamic poly packing policies for Xe3+ platforms-
DisableFDIVDisable fdiv support-
DisableFastMathConstantHandlingDisable Fast Math Constant HandlingAvailable
DisableFastRAWADisable Fast RA for hanging issues on large workloads-
DisableFastestGoptDisable global optimizations for stage 1 shaders.-
DisableFastestLinearScanDisable LinearScanRA in FastestSIMD.-
DisableInliningDisable inlining of all functionsAvailable
DisableLTOinMeshDisable link time optimization in Mesh Shaders only-
DisableResourceLoopUnrollExclusiveLoadDisable visa ExclusiveLoad for the SBID in Unroll resource loop-
DisableResourceLoopUnrollNestedLscDisable unroll nested for lsc load.-
DisableResourceLoopUnrollNestedSamplerDisable unroll nested for sampler.-
DisableSOAPromotionIf true, SOA cannot be used (private memory transposition). For testing purposeAvailable
DisableUndefAlphaOutputAsRedDisable output red for undefined alpha output-
DisableWaDisableSIMD16On3SrcInstrDisable C0 WA WaDisableSIMD16On3SrcInstr, may be unsafe-
DisableWaSendSEnableIndirectMsgDescDisable a C0 WA WaSendSEnableIndirectMsgDesc, may be unsafe-
DisbleLocalFencesOn CNL+ we need to emit local fences. Setting this to true removes those. It may be functionaly not correct.-
DispatchAlongY_XY_ratiomin threshold for thread group size x / y for dispatchAlongY-
DispatchAlongY_X_thresholdmin threshold for thread group size x for dispatchAlongY-
DispatchGPGPUWalkerAlongYFirst0 = No SW Y-walk, 1 = Dispatch GPGPU walker along Y first-
DownConvertI32SamplerConvert i32 sampler messages to return i16.
This optimization can only be enabled for resources with 16bit integer format
or if it is known that the upper 16bits of data is always 0.
-
DropTargetBBListPathPath to folder with lists of BBs to dropAvailable
DropTargetFnListPathPath to folder with lists of functions to dropAvailable
DumpRegPressureEstimateDump RegPressureEstimate to a file-
DumpRegPressureEstimateFilterOnly dump RegPressureEstimate for functions matching the given regex-
EarlyRetryDefaultGRFThresholdCutoff value for register estimation, when highter than that kernel skips first compilation stage and goes to retry immediately for default GRF.-
EarlyRetryLargeGRFThresholdCutoff value for register estimation, when highter than that kernel skips first compilation stage and goes to retry immediately for large GRF.-
EarlySIMD16DropForXE3ThresholdThreshold for the early drop to simd16 for XE3-
EmitPreDefinedForAllFunctionsWhen enabled, pre-defined variables for gid, grid, lid are emitted for all functions. This causes those functions to be inlined even when stack calls is enabled.Available
EmulateFDIVEmulate fdiv instructions-
EmulationFunctionControlFunctionControl on some DP emulation functions. It has the same value as FunctionControl.Available
EnableA64WAGuarantee A64 load/store addres-hi is uniformAvailable
EnableAccSubEnable accumulator substitution-
EnableByValStructArgPromotionIf enabled, byval/sret struct arguments are promoted to pass-by-value if possible.Available
EnableConstantPromotionEnable global constant data to register promotion-
EnableDisableMidThreadPreemptionOptDisable mid thread preemption-
EnableDropTargetBBsEnables pass for dropping targeted BBsAvailable
EnableDropTargetFunctionsEnables pass for dropping targeted functionsAvailable
EnableEvaluateSamplerSplitSplit evaluate messages to sampler into either SIMD8 or SIMD1 messages-
EnableExtractMaskWhen enabled, it is mostly for reducing response size of send messages.-
EnableFastestSingleCSSIMDEnable selecting single CS SIMD in staged compilation.-
EnableForceGroupSizeEnable forcing thread Group Size ForceGroupSizeX and ForceGroupSizeY-
EnableForceThreadCombiningEnable forcing Thread Combining with thread Group Size ForceGroupSizeX and ForceGroupSizeY-
EnableFunctionCloningControlIf enabled, limits function cloning by converting stackcalls to indirect calls based on the FunctionCloningThreshold value.Available
EnableGPUFenceScopeOnSingleTileGPUsAllow the use of GPU fence scope on single-tile GPUs. By default the TILE scope is used instead of GPU scope on single-tile GPUs.Available
EnableGSURBEntryPaddingEnable padding of GS URB Entry by adding extra portions of Control Data Header.-
EnableGSVtxCountMsgHalfCLSizeEnable the Vertex Count msg of half CL size, instead of 1DW size.-
EnableGather4cpoWAEnable WA transforming gather4cpo/gather4po into gather4c/gather4-
EnableGreedyTrimmingFind the optimal set of functions to trimAvailable
EnableHalfPromotionEnable pass that replaces instructions using halfs with corresponding float counterparts for pre-SKL-
EnableInsertElementScalarCoalescingEnable coalescing on the scalar operand of insertelement-
EnableIntelFastEnable intel fast, experimental flag.-
EnableLTOEnable link time optimization-
EnableLTODebugEnable debug information for LTOAvailable
EnableLargeFunctionCallMergingMerge mutually exclusive calls to large functions to enable inlining-
EnableLeafCollapsingCollapse leaf functions in order to avoid trimming small leaf functionsAvailable
EnableLocalIdCalculationInShaderEnables calcualtion of local thread IDs in shader. Valid only in compute shaders on XeHP+. IDs are calculated only if HW generated IDs cannot be used.Available
EnableMixIntOperandsEnable generating mix-sized operands for int ALU-
EnableOpaquePointersBackend[Experimental] Force opaque pointers' usage within IGC/LLVM passes-
EnableOptReportPrivateMemoryToSLM[POC] Generate opt report file for moving private memory allocations to SLM.-
EnablePreRAAccSchedAndSubEnable accumulator substitution-
EnablePrivMemNewSOATranspose0 : disable new algo; 1 and up : enable new algo. 1 : enable new algo just for array of struct; 2 : 1 plus new algo for array of dw[xn]/qw[xn],etc 3 : 2 plus new algo for array of complicated struct.Available
EnableProgrammableOffsetsMessageBitInHeaderUse pre-delta feature (legacy) method of passing MSB of PO messages opcode.-
EnableReusingLSCStoreConstPayloadEnable reusing LSC stores const payload-
EnableReusingXYZWStoreConstPayloadEnable reusing XYZW stores const payload-
EnableSOAPromotionDisablingHeuristicEnable heuristic to disable SOA promotion when it may be not beneficial-
EnableSamplerSplitSplit Sampler 3d message to odd and even-
EnableScalarPipefor scalar-pipe experiment, N specifies the number of scalar registers in Nx16 dwords-
EnableSizeContributionOptimizationPut more weight on a function when the potential size contirubion is bigAvailable
EnableStackCallFuncCallIf enabled, the default function call mode will be set to stack call. Otherwise, subroutine call is used.Available
EnableTCSHWBarriersEnable TCS pass with HW barriers support. Default TCS pass is TCS pass with multiple continuation functions.-
EnableTEFactorsClearEnable clearing of tessellation factors.-
EnableTEFactorsPaddingEnable padding of the TE factors.-
EnableThreadCombiningWithNoSLMEnable thread combining opt for shader without SLM-
EnableTrackPtrTrack Staging Context alloc/dealloc-
EnableVariableAliasEnable variable aliases (part of VariableReuse Pass, but separate functionality)-
EnableVariableReuseEnable local variable reuse-
EnableVector8LoadStoreEnable Vectorizer to generate 8x32i and 4x64i loads and storesAvailable
ExcludeIRFromZEBinaryExclude IR sections from ZE binaryAvailable
ExpandedUnitSizeThresholdTrimming target of compilation unit sizeAvailable
ExtraRetrySIMD16Enable extra simd16 with retry for STAGE1_BEST_PREF-
FastCompileRAProvide the fast compilatoin path for RA, fail safe at first iteration-
FastSpillfast spill code gen. This may produce worse equality code for the spilling shader-
FastestS1ExperimentsSelect configs for fastest compilation by bits.-
FirstStagedSIMDForce Pixel shader to be 1: FastSIMD (SIMD8), 2: BestSIMD (SIMD16 or SIMD8), 3: FatestSIMD (SIMD8 opt off)-
ForceAddingStackcallKernelPrerequisitesForce adding static overhead for stackcall to the kernel entry such as HWTID instructions for experimentsAvailable
ForceAllPrivateMemoryToSLM[POC] Force moving all private memory allocations to SLM.-
ForceBestSIMDForce pixel shader to return the best SIMD, either SIMD16 or SIMD8.-
ForceDisableSrc0AlphaForce the compiler to skip sending src0 alpha. Only works if we are sure alpha to coverage and alpha test is off-
ForceFastestSIMDForce PS, CS, VS to return lowest possible SIMD as fast as possible.-
ForceFastestSingleCSSIMDForce selecting single CS SIMD in staged compilation on unsupported platforms.-
ForceGroupSizeShaderHashShader hash for forcing thread group size or thread combining (lower 8 hex digits)-
ForceGroupSizeXforce group size along X-
ForceGroupSizeYforce group size along Y-
ForceHalfPromotionForce enable pass that replaces instructions using halfs with corresponding float counterparts-
ForceInlineExternalFunctionsnot to trim functions called from multiple kernelsAvailable
ForceInlineStackCallWithImplArgIf enabled, stack calls that uses implicit args will be force inlined.Available
ForceLowestSIMDForStackCallsIf enabled, compile to the lowest allowed SIMD mode when stack calls or indirect calls are presentAvailable
ForceMCFBarriersForce TCS pass with MCF (SW) barriers support. Default TCS pass is TCS pass with multiple continuation functions.-
ForceMixModeforce enable mix mode even on platforms that do not support it-
ForceNoFP64bRegioningforce regioning rules for FP and 64b FPU instructions-
ForceNoInfiniteLoopsLimit # of loop iterations to UINT_MAX in while/for loops. Can be used to detect infinite loops in shaders-
ForceNonCoherentStatelessBTIEnable gneeration of non cache coherent stateless messages-
ForcePixelShaderSIMDModeSetting it to values def in igc.h will force SIMD mode compilation for pixel shaders. Note that only SIMD8 is compiled unless other ForcePixelShaderSIMD* are also selected. 1-SIMD8, 2-SIMD16,4-SIMD32-
ForcePrivateMemoryToGlobalOnGenericForce moving private memory allocations to global buffer when generic pointer is presentAvailable
ForcePrivateMemoryToSLMOnBuffers[POC] Force moving private memory allocations to SLM, semicolon-separated list of buffers.-
ForceSIMDRPELimitCutoff value for register estimator, when higher than that kernel is switched to lower SIMD when possible-
ForceSWCoalescingOfAtomicCounterForce software coalescing of atomic counter-
ForceScratchSpaceSizeOverride Scratch Space Size in bytes for perf testing-
ForceSendsSupportOnSKLA0Allow sends on SKL A0, may be unsafe-
FrequencyWeightForSPGTFrequency weight for a trimming thresholdAvailable
FunctionCloningThresholdLimits the number of cloned functions when called from multiple function groups. If number of cloned functions exceeds the threshold, compile the function only once and use address relocation instead. Setting this to '0' allows IGC to choose the default threshold.Available
FunctionControlControl function inlining/subroutine/stackcall. See value defs in igc_flags.hpp.Available
FuseResourceLoopEnable fusing resource loops-
FuseTypedWriteEnable fusing of simd8 typed write-
HPCFastCompilationForce to do fast compilation for HPC kernel-
HPCGlobalInstNumThresholdThe threshold for the register pressure potential-
HPCInstNumThresholdThe threshold for the register pressure potential-
HasDoubleAcchas doubled accumulators-
HybridRAWithSpillDid Hybrid RA with Spill-
InlinedEmulationThresholdInlined instruction threshold for enabling subroutines-
JointMatrixLoadStoreOptSelects subgroup (0), or block read/write (1), or optimized block read/write (2), 2d block read/write (3) implementation of Joint Matrix Load/Store built-insAvailable
KernelTotalSizeThresholdTrimming target of kernel total sizeAvailable
LTOForStage1CompilationLTO for stage 1 compilation-
LimitConstantBuffersPushedLimit max number of CBs pushed when SupportIndirectConstantBuffer is true-
LoopCountAwareTrimmingTake loop count into account in measuring the function size for trimmingAvailable
MSAA16BitPayloadEnableEnable support for MSAA 16 bit payload , a hardware DCN supporting this from ICL+ to improve perf on MSAA workloads-
ManageableBarriersModeSet the ManageableBarriers mode in which should work 0 - Mix Mode of simple and dynamic ManageableBarriers 1 - Dynamic Mode Only, it will use SLM to store data related with barrier and use them in gateway nbarrier instructions. 2 - Simple Mode Only, it will use constant value in gateway nbarrier instructions (without SLM).Available
MaxUnrollCountForFunctionSizeAnalysisThe maximum number of loop unrolling assumed in function size analaysisAvailable
MemCpyLoweringUnrollThresholdMin number of mem instructions that require non-unrolled loop when lowering memcpy-
MemOptWindowSizeSize of the window in unit of instructions in which load/stores are allowed to be coalesced. Keep it limited in order to avoid creating long liveranges. Default value is 150-
MetricForKernelSizeReductionSet 1 to active a normal distribution, 2 a long-tail distribution, and 4 an average%Available
MidThreadPreemptionDisableThresholdThreshold to disable mid thread preemption-
NewSOATransposeForOpenCLIf true, EnablePrivMemNewSOATranspose only applies to OpenCL kernels. For testing purposeAvailable
NumGeneralAccset the number [1-8] of general acc for accumulator substitution. 0 means using the platform-default value-
OCLInlineThresholdSetting OCL inline thersholdAvailable
OverrideCsTileLayoutOverride compute walker tile layout enum class ThreadIDLayoutAvailable
OverrideCsTileLayoutEnableEnable overriding compute walker tile layoutAvailable
OverrideCsWalkOrderOverride compute walker walk orderAvailable
OverrideCsWalkOrderEnableEnable overriding compute walker walk orderAvailable
OverrideOCLMaxParamSizeOverride the value imposed on the kernel by CL_DEVICE_MAX_PARAMETER_SIZE. Value in bytes, if value==0 no override happens.Available
PSOForStage1CompilationPSO for stage 1 compilation-
ParameterForColdFuncThresholdC/10-STD for a normal distribution / low K% for a long-tail distributionAvailable
PartitionUnitPartition compilation unitAvailable
PartitionWithFastHybridRAEnable FastRA and HybridRA when partition is enabledAvailable
PixelShaderDoNotAbortOnSpillDo not abort on a spill-
PrintControlKernelTotalSizePrint Control kernel total sizeAvailable
PrintControlUnitSizePrint information about unit trimmingAvailable
PrintFunctionSizeAnalysisPrint analysis data of function sizesAvailable
PrintPartitionUnitPrint information about compilation unit partitioningAvailable
PrintStackCallDebugInfoPrint all debug info to command line related to stack call debuggingAvailable
PrintStaticProfileGuidedKernelSizeReductionPrint information about static profile-guided trimming and partitioningAvailable
PrintStaticProfileGuidedSpillCostAnalysisPrint debug messages for profile embeddingAvailable
RegPressureVerbocityDifferent printing types-
RematAddrSpaceCastToUseAllow rematerialization of inttoptr that are used inside AddrSpaceCastInst-
RematAllowExtractElementAllow Extract Element to computation chain-
RematAllowLoadsRemat allow to move loads, no checks, exclusively for testing purposes-
RematAllowOneUseLoadRemat allow to move loads that have one use and it's inside the chain-
RematCallsOperandAllow rematerialization of inttoptr that are used as call's operand-
RematChainLimitIf number of instructions we've collected is more than this value, we bail on it-
RematCollectCallArgsAllow collection of call arguments for rematerialization-
RematDataAllowCMPAllow rematerialization of cmp instructionsAvailable
RematEnableEnable clone adress arithmetic pass not only on retry-
RematFlowThresholdProportion of the whole rematerialization targets to cutoff remat chain-
RematInstCombineBeforeEnable short sequence of passes before clone address arithmetic pass to potentially decrese amount of operations that will be rematerialized-
RematLogDump Remat Log, usefull for analyzing spills as well-
RematRPELimitCutoff value for register estimator, lower than that, kernel won't be rematted-
RematReassocBeforeEnable short sequence of passes before clone address arithmetic pass to potentially decrese amount of operations that will be rematerialized-
RematRespectUniformityCutoff computation chain on uniform values-
RematSameBBScopeConfine rematerialization only to variables within the same BB, we won't pull down values from predeccors-
RequestStage2Enable staged compilation via requesting stage 2-
ResourceLoopUnrollIterationUnroll resource loop iterations (larger than 1): 1 (default) - no sub-iteration-
ResourceLoopUnrollNestedUnroll resource loop iterations (larger than 0): 0 (default) - no nested loop-
RetryRevertExcessiveSpillingKernelCoefficientSets the coefficient for Retry Manager to know whether we should revert back to a previously compiled kernel-
RetryRevertExcessiveSpillingKernelThresholdSets the threshold for Retry Manager to know which kernel is considered as Excessive Spilling and applies different set of rules-
SSOShifterAdjust ScratchSurfaceOffset with shl(hwtid, shifter). 0 menas disabling padding-
SaveRestoreIRSave/Restore IR for staged compilation to avoid duplicated compilations-
ScalarAliasBBSizeThresholdMax size of BB for which scalar aliasing will apply. Scalar aliasing will skip for BBs beyond this thresholdAvailable
SelectiveFastRAApply fast RA with spills selectively using heuristicsAvailable
SelectiveFunctionControlSelectively enables FunctionControl for a list of line-separated function names in file specified by SelectiveFunctionControlFile or 'FunctionDebug.txt' in the IGC output dir, in that order. When set by this flag, the functions in the list will override the default FunctionControl mode. 0 - Disable, 1 - Enable and read from SelectiveFunctionControlFile, 2 - Print all callable functions to file See comments in ProcessFuncAttributes.cpp for how to use this flag.Available
SelectiveFunctionControlFileSet file with path that'll be used by SelectiveFunctionControlAvailable
SelectiveTrimmingChoose a specific function to trimAvailable
SizeWeightForSPGTSize weight for a trimming thresholdAvailable
SkipPaddingScratchSpaceSizeSkip adding padding when estimated scratch space size is smaller than or equal to this value-
SkipTREarlyExitCheckSkip SIMD16 early exit check in ShaderCodeGen-
SkipTrimmingOneCopyFunctionDon't trim a function whose size contribution is no more than its sizeAvailable
StagedCompilationExperimentsExperiment with staged compilation when != 0-
StaticProfileGuidedPartitioningEnable static analysis in the partitioning algorithm.Available
StaticProfileGuidedSpillCostAnalysisUse static profile information to estimate spill cost, 1 for profile generation, 2 for profile transfer, 4 for profile embedding, 8 for spill computation, and 16 for enabling frequency-based spill selectionAvailable
StaticProfileGuidedSpillCostAnalysisFuncSpill cost function where 0 is based on a new spill cost and 1 the existing oneAvailable
StaticProfileGuidedSpillCostAnalysisScaleScale adjustment for static profile guided spill cost analysisAvailable
StaticProfileGuidedTrimmingEnable static analysis in the kernel trimmingAvailable
StripDebugInfoStrip debug info from llvm IR lowered from input to IGC . Possible values: 0 - dont strip, 1 - strip all, 2 - strip non-line infoAvailable
SubroutineInlinerThresholdSubroutine inliner threshold-
SubroutineThresholdMinimal kernel size to enable subroutines-
UnitSizeThresholdCompilation unit size thresholdAvailable
UpConvertF16Samplerup-convert fp16 sampler message to return fp32-
UseFrequencyInfoForSPGTConsider frequency information for trimming functionsAvailable
UseOldSubRoutineAugIntfUse the old subroutine augmentation code which is slower-
VFPackingDisablePartialElementsdisable packing for partial vertex element as it causes performance drops-
VariableReuseByteSizeThe byte size threshold for variable reuse-
VectorAliasVector aliasing control under EnableVariableAlias. Some features are still experimentalAvailable
VectorAliasBBThresholdMax number of BBs of a function that VectorAlias will apply. VectorAlias will skip for funtions beyond this thresholdAvailable
VectorizerLogDump Vectorizer Log, usefull for analyzing vectorization issuesAvailable
VectorizerLogToErrDump Vectorizer Log to stdErrAvailable
VerboseDropTargetBBsEnables verbose logging for dropping targeted BBsAvailable
VerboseDropTargetFunctionsEnables verbose logging for dropping targeted functionsAvailable
cl_khr_srgb_image_writesEnable cl_khr_srgb_image_writes extension-
disableRematdisable re-materialization-
disableUnormTypedReadWAdisable software conversion for UNORM surface in Dx10-
disableVarSplitdisable variable splitting-
forceGlobalRAforce global register allocator-
forceSamplerHeaderforce sampler messages to use header-
samplerHeaderWAenable sampler header to solve HW WA-

Generating precompiled headers

FlagDescriptionRelease builds
ApplyConservativeRastWAHeaderApply WaConservativeRasterization for the platforms enabled-

Raytracing Options

FlagDescriptionRelease builds
AddDummySlotsForNewInlineRaytracingAdd dummy rayquery slots when doing new inline raytracingAvailable
AllowSpillCompactionOnRetryAllow spill compaction on retry - may increase spillsAvailable
ContinuationInlineThresholdIf number of continuations is greater than threshold, default to indirectAvailable
DeferCollectionStateObjectCompilationWait to compile till the RTPSO stageAvailable
DisableCanonizationWAWA for A0 to inject shifts to canonize global and local pointersAvailable
DisableCompactifySpillsJust emit spill/fill at the point of def/useAvailable
DisableCrossFillRematRematerialize values if they use already spilled valuesAvailable
DisableDPSEDisable Dead PayloadStore Elimination.Available
DisableEarlyRematDisable quick remats to avoid some spillsAvailable
DisableEntryFencesDon't emit the evict and invalidate fences for A0 WA-
DisableExamineRayFlagDon't do IPO to see if we can fold control flow given knowledge of possible rayflag values-
DisableFuseContinuationsIf set, we will look for small duplicated continuations to merge into one.Available
DisableInvalidateRTStackAfterLastReadDisables L1 cache invalidation after the last read of the RT stack. Affects rayqueries onlyAvailable
DisableInvariantLoadDisabled !invariant_load metadata for raytracing shadersAvailable
DisableLSCControlsForRayTracingDisable different LSC Controls for HW and SW portions of the RTStackAvailable
DisableLateRematDisable quick remats to avoid some spillsAvailable
DisableLoadAsFenceOpInRaytracingDisable load as fence op in raytracing (rayquery only)-
DisableMatchRegisterRegionDisable matching for debug purposesAvailable
DisableMergeAllocasDo not merge allocas prior to SplitAsyncPass-
DisableMergeAllocasPrivateMemoryDo not merge allocas prior to PrivateMemoryResolutionAvailable
DisableMergingOfAllocasWithDifferentTypeDo not merge allocas of different types.Available
DisableMergingOfMultipleAllocasWithOffsetDo not merge multiple smaller allocas under one larger one with different offsets.Available
DisablePayloadSinkingsink stores to payload into inlined continuationsAvailable
DisablePreSplitOptsDisable last minute optimizations befoer shader splittingAvailable
DisablePredicatedStackIDReleaseEmit a single stack ID release at the end of the shaderAvailable
DisablePrepareLoadsStoresDisable preparation for MemOptAvailable
DisableProceedBasedApproachForRayQueryDynamicRayManagementMechanismDisables proceed based approach for dynamic ray management mechanismAvailable
DisablePromoteContinuationBTD-able continuations in the raygen may be moved to the shader identifier-
DisablePromoteToScratchUse scratch space rather than SWStack when possible.Available
DisableRTAliasAnalysisDisable Raytracing Alias Analysis-
DisableRTBindlessAccessdo bindful rather than bindless accesses to raytracing memoryAvailable
DisableRTFenceElisionDisable optimization to remove unneeded fences-
DisableRTGlobalsKnownValuesload MaxBVHLevels from RTGlobals rather than assumming = 2Available
DisableRTMemDSEAnalyze stores to SWStack, etc. that aren't read before Stack ID Release-
DisableRTRetryPickBetterDisables raytracing retry to pick the best compilation instead of always using the retry compilation.-
DisableRTStackOptsDisable some optimizations that minimize reads/writes to the RTStackAvailable
DisableRayQueryDynamicRayManagementMechanismForBarriersDisable dynamic ray management mechanism for shaders with barriersAvailable
DisableRayQueryDynamicRayManagementMechanismForExternalFunctionsCallsDisable dynamic ray management mechanism for shaders with external functions callsAvailable
DisableRayQueryReturnOptimizationRayQuery Return OptimizationAvailable
DisableRayTracingConstantCoalescingDisable coalescingAvailable
DisableRayTracingOptimizationsDisable RayTracing Optimizations for debuggingAvailable
DisableRaytracingIntrinsicAttributesTurn off noalias and dereferenceable attributesAvailable
DisableSWStackOffsetElisionAvoid loading offseting when known at compile-time-
DisableSWSubTriangleOpacityCullingEmulationSoftware Sub-Triangle Opacity Culling emulationAvailable
DisableShaderFusionDon't check for duplicate, renamed shaders-
DisableSpillReorderDisables reordering of spills to try to minmize spills in a loop-
DisableStatefulRTStackAccessdo stateless rather than stateful accesses to the HW portion of the async stackAvailable
DisableStatefulRTSyncStackAccessdo stateless rather than stateful accesses to the HW portion of the sync stackAvailable
DisableStatefulRTSyncStackAccess4RTShaderdo stateless rather than stateful accesses to the HW portion of the sync stack. RT Shader only.Available
DisableStatefulRTSyncStackAccess4nonRTShaderdo stateless rather than stateful accesses to the HW portion of the sync stack. nonRT Shader only.Available
DisableStatefulSWHotZoneAccessdo stateless rather than stateful accesses to the SW HotZoneAvailable
DisableStatefulSWStackAccessdo stateless rather than stateful accesses to the SW StackAvailable
DisableWideTraceRayDisable SIMD16 style message payloads for send.rtaAvailable
EnableCompressedRayIndicesUse an alternate form with bit twiddling to pack stack pointer and indices into two DWORDsAvailable
EnableFillSchedulingSchedule fills for reduced register pressure-
EnableHoistRematHoist rematerialized instructions to shader entry. Longer live ranges but common values fused.Available
EnableIndirectContinuationsEnable BTD for continuation shaders (regardless of inline threshold).Available
EnableInlinedContinuationsForcibly inline all continuationsAvailable
EnableKnownBTIBaseFor testing, assume that we know what baseBTI is in RTGlobalsAvailable
EnableLSCCacheOptimizationOptimize store instructions for utilizing the LSC-L1 cache-
EnableOuterLoopHoistingForRayQueryDynamicRayManagementMechanismDisable dynamic ray management mechanism for shaders with barriersAvailable
EnableRQHideLatencyHide RayQuery Proceed latency.-
EnableRTDispatchAlongYDispatch Compute Walker along Y firstAvailable
EnableRTPrintfEnable printf for ray tracing.Available
EnableRayTracingTGMFenceEnable tgm fence in RT workloads for debugging-
EnableSingleRQMemRayStoreStore RayQuery MemRay[TOP] only once.-
EnableStackIDReleaseSchedulingSchedule Stack ID Release messages prior to the end of the shader-
EnableSyncDispatchRaysEnable sync DispatchRays implementation-
ForceCSLeastSIMD4RQForce computer shader with RayQuery to the lowest allowed SIMD mode-
ForceCSSimdSize4RQForce RayQuery compute shader simd size,
valid values are 0 (not set), 8, 16 and 32
ignored if produces invalid cofiguration, e.g. simd size too small for workgroup size
Available
ForceFirstFencesEvictForce evict fence op on fences prior to the stack ID releaseAvailable
ForceGenMemDefaultCacheCtrlIf enabled, no message specific cache ctrls are set on memory outside of RTStack, SWStack, and SWHotZoneAvailable
ForceGenMemLoadCacheCtrlEnables GenMemLoadCacheCtrl regkey for custom lsc load cache controls in other memoryAvailable
ForceGenMemStoreCacheCtrlEnables GenMemStoreCacheCtrl regkey for custom lsc store cache controls in other memoryAvailable
ForceNullBVHSwap BVH with null pointer. Infinitely fast ray traversal.Available
ForceRTCheckInstanceLeafPtrCheck MemHit::valid before loading GeometryIndex, PrimitiveIndex, etc.Available
ForceRTCheckInstanceLeafPtrMaskTest only. 1: committedindex; 2: potentialindexAvailable
ForceRTConstantBufferCacheCtrlEnables RTConstantBufferCacheCtrl regkey for custom lsc load cache controls for constant buffersAvailable
ForceRTRetryRaytracing is compiled in the second retry state-
ForceRTShortCircuitingOROnly for specific test.... Short curcite OR condition if CommittedGeometryIndex is usedAvailable
ForceRTStackLoadCacheCtrlEnables RTStackLoadCacheCtrl regkey for custom lsc load cache controls in the RTStackAvailable
ForceRTStackStoreCacheCtrlEnables RTStackStoreCacheCtrl regkey for custom lsc store cache controls in the RTStackAvailable
ForceSWHotZoneLoadCacheCtrlEnables SWHotZoneLoadCacheCtrl regkey for custom lsc load cache controls in the SWHotZoneAvailable
ForceSWHotZoneStoreCacheCtrlEnables SWHotZoneStoreCacheCtrl regkey for custom lsc store cache controls in the SWHotZoneAvailable
ForceSWStackLoadCacheCtrlEnables SWStackLoadCacheCtrl regkey for custom lsc load cache controls in the SWStackAvailable
ForceSWStackStoreCacheCtrlEnables SWStackStoreCacheCtrl regkey for custom lsc store cache controls in the SWStackAvailable
ForceWholeProgramCompileCompile as if we know all of the shaders upfrontAvailable
KnownBTIBaseValueIf EnableKnownBTIBase is set, use this value for baseBTIAvailable
OverrideRayQueryThrottlingForce rayquery throttling (dynamic ray management) to be enabled or disabled. Default value of this key is ignoredAvailable
OverrideTMaxForce TMax to the given value. When 0, do nothing.-
PrintfBufferSizeSet printf buffer size. Unit: KB.Available
RTFenceToggleToggle fencesAvailable
RTInValidDefaultIndexIf MemHit::valid is false, the default value to return for some intrinsics like GeometryIndex or PrimitiveIndex etc.Available
RayTracingConstantCoalescingMinBlockSizeSet the minimum load size in # OWords = [1,2,4,8,16].Available
RayTracingCustomTileXDim1DX dimension of tile (default: DG2=256, Xe2+=512)Available
RayTracingCustomTileXDim2DX dimension of tile (default: 32)Available
RayTracingCustomTileYDim1DY dimension of tile (default: 1)Available
RayTracingCustomTileYDim2DY dimension of tile (default: 4 for XE, 32 for XE2+)Available
RayTracingDumpYamlDump yaml input/output filesAvailable
RayTracingKeepUDivRemWAWorkaround till jitIsa supports cr0 for rtz conversionsAvailable
RematThresholdTunes how aggresively we should remat values into continuationsAvailable
RetryRTPickBetterThresholdOnly pick the retry shader if the spill cost of the 2nd compilation is at least this percentage better than the previous compilation-
RetryRTSpillCostThresholdOnly retry if the percentage of spills (over total instructions) is more than this value-
RetryRTSpillMemThresholdOnly retry if spill mem used is more than this value-
ShaderFusionThreholdIf there are less shaders than this, don't spend time checking duplicates-
TotalGRFNum4RQTotal GRF used for register allocation for RayQuery only. Test only. Delete later.-
UseCrossBlockLoadVectorizationForInlineRaytracingIf enabled, will try to vectorize loads that are not adjacent to each other. May increase GRF pressureAvailable