1 /*========================== begin_copyright_notice ============================
2 
3 Copyright (C) 2017-2021 Intel Corporation
4 
5 SPDX-License-Identifier: MIT
6 
7 ============================= end_copyright_notice ===========================*/
8 
9 #ifndef NULLSTR
10 #define NULLSTR ""
11 #endif
12 #ifndef UNUSED
13 #define UNUSED ""
14 #endif
15 
16 // There are 4 available types: ET_BOOL, ET_INT32, ET_INT64 and ET_CSTR.
17 // DEF_VISA_OPTION(ENUM, ET_BOOL,    STRING, UNUSED,    DEFAULT_VAL)
18 // DEF_VISA_OPTION(ENUM, ET_INT32,   STRING, ERROR_MSG, DEFAULT_VAL)
19 // DEF_VISA_OPTION(ENUM, ET_INT64,   STRING, ERROR_MSG, DEFAULT_VAL)
20 // DEF_VISA_OPTION(ENUM, ET_CSTR,    STRING, ERROR_MSG, DEFAULT_VAL)
21 // Note: ET_2xINT32 is a 64 bit value set using 2 int32 Hi32 Lo32
22 // DEF_VISA_OPTION(ENUM, ET_2xINT32, STRING, ERROR_MSG, DEFAULT_VAL)
23 
24 
25 //=== Debugging options ===
26 DEF_VISA_OPTION(vISA_DumpPasses,            ET_BOOL, "-dumpPassesAll",   UNUSED, false)
27 // subsumes the above (should replace; 0 = none, 1 = only when modifications are present, 2 = all)
28 DEF_VISA_OPTION(vISA_DumpPassesSubset,      ET_INT32, "-dumpPassesSubset",
29   "0 means none; 1 means only when modifications happen; 2 means all passes", 0)
30 // dump out dot file for debugging
31 DEF_VISA_OPTION(vISA_DumpDot,               ET_BOOL, "-dot",             UNUSED, false)
32 DEF_VISA_OPTION(vISA_DumpDotAll,            ET_BOOL, "-dotAll",          UNUSED, false)
33 DEF_VISA_OPTION(VISA_FullIRVerify,          ET_BOOL, "-fullIRVerify",    UNUSED, false)
34 // dump each option while it is being set by setOption()
35 DEF_VISA_OPTION(vISA_dumpVISAOptions,       ET_BOOL, "-dumpVisaOptions", UNUSED, false)
36 // dump all options after we have finished parsing
37 DEF_VISA_OPTION(vISA_dumpVISAOptionsAll,    ET_BOOL, "-dumpVisaOptionsAll", UNUSED, false)
38 DEF_VISA_OPTION(vISA_Debug,                 ET_BOOL, "-debug",           UNUSED, false)
39 DEF_VISA_OPTION(vISA_DebugParse,            ET_BOOL, "-debugParse",      UNUSED, false)
40 DEF_VISA_OPTION(vISA_DebugConsoleDump,      ET_BOOL, "-dumpDebugConsoleOutput", UNUSED, false)
41 DEF_VISA_OPTION(vISA_EmitLocation,          ET_BOOL, "-emitLocation",    UNUSED, false)
42 DEF_VISA_OPTION(vISA_dumpRPE,               ET_BOOL, "-dumpRPE",         UNUSED, false)
43 DEF_VISA_OPTION(vISA_dumpLiveness,          ET_BOOL, "-dumpLiveness",         UNUSED, false)
44 DEF_VISA_OPTION(vISA_disableInstDebugInfo,  ET_BOOL, "-disableInstDebugInfo",      UNUSED, false)
45 DEF_VISA_OPTION(vISA_analyzeMove,           ET_BOOL, "-analyzeMove",     UNUSED, false)
46 DEF_VISA_OPTION(vISA_skipFDE,               ET_BOOL, "-skipFDE",         UNUSED, false)
47 // setting this flag makes VISA emit matching name for variable wrt visaasm file
48 // but this makes it impossible to emit correct elf, so this is strictly for debugging
49 DEF_VISA_OPTION(vISA_UseFriendlyNameInDbg,  ET_BOOL, "-useFriendlyNameInDbg", UNUSED, false)
50 DEF_VISA_OPTION(vISA_removeInstrinsics,     ET_BOOL, "-removeInstrinsics",     UNUSED, true)
51 DEF_VISA_OPTION(vISA_addSWSBInfo,           ET_BOOL, "-addSWSBInfo",     UNUSED, true)
52 DEF_VISA_OPTION(vISA_DumpRAIntfGraph,       ET_BOOL, "-dumpintf",        UNUSED, false)
53 DEF_VISA_OPTION(vISA_DumpGenOffset,         ET_BOOL, "-dumpgenoffset",   UNUSED, false)
54 
55 //=== Optimization options ===
56 DEF_VISA_OPTION(vISA_EnableAlways,          ET_BOOL, NULLSTR,            UNUSED, true)
57 DEF_VISA_OPTION(vISA_EnableSendFusion,      ET_BOOL, "-enableSendFusion",   UNUSED, false)
58 DEF_VISA_OPTION(vISA_EnableWriteFusion,     ET_BOOL, "-enableWriteFusion",  UNUSED, false)
59 DEF_VISA_OPTION(vISA_EnableAtomicFusion,    ET_BOOL, "-enableAtomicFusion", UNUSED, false)
60 DEF_VISA_OPTION(vISA_RemovePartialMovs,     ET_BOOL, "-partialMovsProp",      UNUSED, false)
61 DEF_VISA_OPTION(vISA_LocalCopyProp,         ET_BOOL, "-nocopyprop",      UNUSED, true)
62 DEF_VISA_OPTION(vISA_LocalInstCombine,      ET_BOOL, "-noinstcombine",   UNUSED, true)
63 DEF_VISA_OPTION(vISA_LocalFlagOpt,          ET_BOOL, "-noflagopt",       UNUSED, true)
64 DEF_VISA_OPTION(vISA_LocalMACopt,           ET_BOOL, "-nomacopt",        UNUSED, true)
65 DEF_VISA_OPTION(vISA_LocalCleanMessageHeader, ET_BOOL, "-nomsgheaderopt", UNUSED, true)
66 DEF_VISA_OPTION(vISA_LocalRenameRegister,   ET_BOOL, "-noregrenaming",   UNUSED, true)
67 DEF_VISA_OPTION(vISA_LocalDefHoist,         ET_BOOL, "-nodefhoist",      UNUSED, true)
68 DEF_VISA_OPTION(vISA_FoldAddrImmed,         ET_BOOL, "-nofoldaddrimmed", UNUSED, true)
69 DEF_VISA_OPTION(vISA_enableCSEL,            ET_BOOL, "-disablecsel",     UNUSED, true)
70 DEF_VISA_OPTION(vISA_OptReport,             ET_BOOL, "-optreport",       UNUSED, false)
71 DEF_VISA_OPTION(vISA_MergeScalar,           ET_BOOL, "-nomergescalar",   UNUSED, true)
72 DEF_VISA_OPTION(vISA_EnableMACOpt,          ET_BOOL, "-nomac",           UNUSED, true)
73 DEF_VISA_OPTION(vISA_EnableDCE,             ET_BOOL, "-dce",             UNUSED, false)
74 DEF_VISA_OPTION(vISA_DisableleHFOpt,        ET_BOOL, "-disableHFOpt",    UNUSED, false)
75 DEF_VISA_OPTION(vISA_enableUnsafeCP_DF,     ET_BOOL, "-enableUnsafeCP_DF", UNUSED, false)
76 DEF_VISA_OPTION(vISA_EnableStructurizer,    ET_BOOL, "-enableStructurizer",  UNUSED, false)
77 DEF_VISA_OPTION(vISA_StructurizerCF,        ET_BOOL, "-noSCF",           "-noSCF: structurizer generates UCF only", true)
78 DEF_VISA_OPTION(vISA_EnableScalarJmp,       ET_BOOL, "-noScalarJmp",     UNUSED, true)
79 DEF_VISA_OPTION(vISA_enableCleanupBindless, ET_BOOL, "-cleanBindless",   UNUSED, true)
80 DEF_VISA_OPTION(vISA_EnableSplitVariables,  ET_BOOL, "-noSplitVariables", UNUSED, false)
81 DEF_VISA_OPTION(vISA_ChangeMoveType,        ET_BOOL, "-ALTMode",       UNUSED, true)
82 DEF_VISA_OPTION(vISA_accSubstitution,       ET_BOOL, "-noAccSub",          UNUSED, true)
83 DEF_VISA_OPTION(vISA_accSubBeforeRA,        ET_BOOL, "-noAccSubBRA",          UNUSED, false)
84 DEF_VISA_OPTION(vISA_EnableGatherWithImm,      ET_BOOL, "-gatherWithImm",        UNUSED, 0)
85 DEF_VISA_OPTION(vISA_doAccSubAfterSchedule, ET_BOOL, "-accSubPostSchedule",    UNUSED, true)
86 DEF_VISA_OPTION(vISA_localizationForAccSub, ET_BOOL, "-localizeForACC",    UNUSED, false)
87 DEF_VISA_OPTION(vISA_mathAccSub, ET_BOOL, "-mathAccSub",    UNUSED, false)
88 DEF_VISA_OPTION(vISA_src2AccSub, ET_BOOL, "-src2AccSub",    UNUSED, false)
89 DEF_VISA_OPTION(vISA_hasDoubleAcc, ET_BOOL, "-hasDoubleAcc",    UNUSED, false)
90 DEF_VISA_OPTION(vISA_ifCvt,                 ET_BOOL, "-noifcvt",     UNUSED, true)
91 DEF_VISA_OPTION(vISA_RegSharingHeuristics,  ET_BOOL, "-regSharingHeuristics", UNUSED, false)
92 DEF_VISA_OPTION(vISA_LVN,                   ET_BOOL, "-nolvn",       UNUSED, true)
93 // only affects acc substitution for now
94 DEF_VISA_OPTION(vISA_numGeneralAcc,         ET_INT32, "-numGeneralAcc", "USAGE: -numGeneralAcc <accNum>\n", 0)
95 DEF_VISA_OPTION(vISA_reassociate,           ET_BOOL, "-noreassoc",   UNUSED, true)
96 DEF_VISA_OPTION(vISA_split4GRFVar,          ET_BOOL, "-no4GRFSplit", UNUSED, true)
97 DEF_VISA_OPTION(vISA_divergentBB,           ET_BOOL, "-divergentBB", UNUSED, true)
98 DEF_VISA_OPTION(vISA_splitInstructions,     ET_BOOL, "-noSplitInstructions", UNUSED, true)
99 DEF_VISA_OPTION(vISA_ignoreBFRounding,      ET_BOOL, "-ignoreBFRounding", UNUSED, false)
100 DEF_VISA_OPTION(vISA_scheduleFenceCommit,   ET_BOOL, "-fenceCommit", UNUSED, true)
101 DEF_VISA_OPTION(vISA_SkipRedundantFillInRMW,ET_BOOL, "-normwopt", UNUSED, true)
102 DEF_VISA_OPTION(vISA_ALTMode,               ET_BOOL, "-nonALTMode", UNUSED, false)
103 
104 //=== code gen options ===
105 DEF_VISA_OPTION(vISA_noSrc1Byte,          ET_BOOL, "-nosrc1byte",         UNUSED, false)
106 DEF_VISA_OPTION(vISA_expandPlane,         ET_BOOL, "-expandPlane",        UNUSED, false)
107 DEF_VISA_OPTION(vISA_FImmToHFImm,         ET_BOOL, "-fiTohfi",    UNUSED, false)
108 DEF_VISA_OPTION(vISA_cacheSamplerHeader,  ET_BOOL, "-noSamplerHeaderCache", UNUSED, true)
109 DEF_VISA_OPTION(vISA_forceSamplerHeader,  ET_BOOL, "-forceSamplerHeader", UNUSED, false)
110 DEF_VISA_OPTION(vISA_markSamplerMoves,    ET_BOOL, "-markSamplerMoves", UNUSED, false)
111 DEF_VISA_OPTION(vISA_noncoherentStateless, ET_BOOL, "-ncstateless",       UNUSED, false)
112 DEF_VISA_OPTION(vISA_enablePreemption,    ET_BOOL,  "-enablePreemption",  UNUSED, false)
113 DEF_VISA_OPTION(VISA_EnableBarrierInstCounterBits, ET_BOOL, "-enableBarrierInstCounterBits", UNUSED, false)
114 DEF_VISA_OPTION(vISA_forceFPMAD,            ET_BOOL, "-forcefmad",          UNUSED, true)
115 DEF_VISA_OPTION(vISA_DisableMixMode,        ET_BOOL, "-disableMixMode",     UNUSED, false)
116 DEF_VISA_OPTION(vISA_DisableHFMath,         ET_BOOL, "-disableHFMath",      UNUSED, false)
117 DEF_VISA_OPTION(vISA_ForceMixMode,          ET_BOOL, "-forceMixMode",       UNUSED, false)
118 DEF_VISA_OPTION(vISA_UseSends,              ET_BOOL, "-nosends",            UNUSED, true)
119 DEF_VISA_OPTION(vISA_doAlign1Ternary,       ET_BOOL, "-noalign1ternary",    UNUSED, true)
120 DEF_VISA_OPTION(vISA_loadThreadPayload,     ET_BOOL, "-noLoadPayload",      UNUSED, true)
121 DEF_VISA_OPTION(vISA_foldEOTtoPrevSend,     ET_BOOL, "-foldEOT",            UNUSED, false)
122 DEF_VISA_OPTION(vISA_hasRNEandDenorm,       ET_BOOL, "-hasRNEandDenorm",    UNUSED, false)
123 DEF_VISA_OPTION(vISA_forceNoFP64bRegioning, ET_BOOL, "-noFP64bRegion",      UNUSED, false)
124 DEF_VISA_OPTION(vISA_noStitchExternFunc,    ET_BOOL, "-noStitchExternFunc", UNUSED, true)
125 DEF_VISA_OPTION(vISA_autoLoadLocalID,       ET_BOOL, "-autoLocalId",        UNUSED, false)
126 DEF_VISA_OPTION(vISA_loadCrossThreadConstantData, ET_BOOL, "-loadCTCD",     UNUSED, true)
127 DEF_VISA_OPTION(vISA_useInlineData,         ET_BOOL, "-useInlineData",   UNUSED, false)
128 DEF_VISA_OPTION(vISA_loadThreadPayloadStartReg, ET_INT32, "-setStartReg",UNUSED, 1)
129 DEF_VISA_OPTION(vISA_emitCrossThreadOffR0Reloc,  ET_BOOL, "-emitCrossThreadOffR0Reloc",    UNUSED, false)
130 DEF_VISA_OPTION(vISA_CodePatch,   ET_INT32, "-codePatch",        UNUSED, 0)
131 DEF_VISA_OPTION(vISA_Linker,      ET_INT32, "-linker",        UNUSED, 0)
132 
133 //=== RA options ===
134 DEF_VISA_OPTION(vISA_RoundRobin,            ET_BOOL, "-noroundrobin",    UNUSED, true)
135 DEF_VISA_OPTION(vISA_PrintRegUsage,         ET_BOOL, "-printregusage",   UNUSED, false)
136 DEF_VISA_OPTION(vISA_IPA,                   ET_BOOL, "-noipa",           UNUSED, true)
137 DEF_VISA_OPTION(vISA_LocalRA,               ET_BOOL, "-nolocalra",       UNUSED, true)
138 DEF_VISA_OPTION(vISA_LocalRARoundRobin,     ET_BOOL, "-nolocalraroundrobin", UNUSED, true)
139 DEF_VISA_OPTION(vISA_ForceSpills,           ET_BOOL, "-forcespills",     UNUSED, false)
140 DEF_VISA_OPTION(vISA_NoIndirectForceSpills, ET_BOOL, "-noindirectforcespills", UNUSED, false)
141 DEF_VISA_OPTION(vISA_AbortOnSpill,          ET_BOOL, "-abortonspill",    UNUSED, false)
142 DEF_VISA_OPTION(vISA_VerifyRA,              ET_BOOL, "-verifyra",        UNUSED, false)
143 DEF_VISA_OPTION(vISA_LocalBankConflictReduction, ET_BOOL, "-nolocalBCR",   UNUSED, true)
144 DEF_VISA_OPTION(vISA_FailSafeRA,            ET_BOOL, "-nofailsafera",    UNUSED, true)
145 DEF_VISA_OPTION(vISA_FlagSpillCodeCleanup,  ET_BOOL, "-disableFlagSpillClean",            UNUSED, true)
146 DEF_VISA_OPTION(vISA_GRFSpillCodeCleanup,   ET_BOOL, "-spillCleanup",    UNUSED, true)
147 DEF_VISA_OPTION(vISA_SpillSpaceCompression, ET_BOOL, "-nospillcompression",            UNUSED, true)
148 DEF_VISA_OPTION(vISA_ConsiderLoopInfoInRA,  ET_BOOL, "-noloopra",        UNUSED, true)
149 DEF_VISA_OPTION(vISA_ReserveR0,             ET_BOOL, "-reserveR0",       UNUSED, false)
150 DEF_VISA_OPTION(vISA_SpiltLLR,              ET_BOOL, "-nosplitllr",      UNUSED, true)
151 DEF_VISA_OPTION(vISA_EnableGlobalScopeAnalysis,   ET_BOOL,  "-enableGlobalScopeAnalysis", UNUSED, false)
152 DEF_VISA_OPTION(vISA_LocalDeclareSplitInGlobalRA, ET_BOOL, "-noLocalSplit",        UNUSED, true)
153 DEF_VISA_OPTION(vISA_DisableSpillCoalescing, ET_BOOL, "-nospillcleanup", UNUSED, false)
154 DEF_VISA_OPTION(vISA_GlobalSendVarSplit,    ET_BOOL, "-globalSendVarSplit", UNUSED, false)
155 DEF_VISA_OPTION(vISA_NoRemat,               ET_BOOL, "-noremat",         UNUSED, false)
156 DEF_VISA_OPTION(vISA_ForceRemat,            ET_BOOL, "-forceremat",      UNUSED, false)
157 DEF_VISA_OPTION(vISA_SpillMemOffset,        ET_INT32, "-spilloffset",           "USAGE: -spilloffset <offset>\n",     0)
158 DEF_VISA_OPTION(vISA_ReservedGRFNum,        ET_INT32, "-reservedGRFNum",        "USAGE: -reservedGRFNum <regNum>\n",  0)
159 DEF_VISA_OPTION(vISA_TotalGRFNum,           ET_INT32, "-TotalGRFNum",           "USAGE: -TotalGRFNum <regNum>\n",     128)
160 DEF_VISA_OPTION(vISA_GRFNumToUse,           ET_INT32, "-GRFNumToUse",           "USAGE: -GRFNumToUse <regNum>\n",       0)
161 DEF_VISA_OPTION(vISA_RATrace,               ET_BOOL, "-ratrace", UNUSED, false)
162 DEF_VISA_OPTION(vISA_FastSpill,             ET_BOOL, "-fasterRA", UNUSED, false)
163 DEF_VISA_OPTION(vISA_AbortOnSpillThreshold, ET_INT32, "-abortOnSpill", UNUSED, 0)
164 DEF_VISA_OPTION(vISA_enableBCR, ET_BOOL, "-enableBCR",   UNUSED, false)
165 DEF_VISA_OPTION(vISA_forceBCR, ET_BOOL, "-forceBCR",   UNUSED, false)
166 DEF_VISA_OPTION(vISA_enableBundleCR, ET_BOOL, "-enableBundleCR",   UNUSED, true)
167 DEF_VISA_OPTION(vISA_IntrinsicSplit,       ET_BOOL, "-doSplit", UNUSED, false)
168 DEF_VISA_OPTION(vISA_LraFFWindowSize,       ET_INT32, "-lraFFWindowSize", UNUSED, 12)
169 DEF_VISA_OPTION(vISA_SplitGRFAlignedScalar, ET_BOOL, "-nosplitGRFalignedscalar", UNUSED, true)
170 DEF_VISA_OPTION(vISA_DoSplitOnSpill,        ET_BOOL, "-splitonspill", UNUSED, false)
171 
172 DEF_VISA_OPTION(vISA_VerifyAugmentation,    ET_BOOL, "-verifyaugmentation", UNUSED, false)
173 DEF_VISA_OPTION(vISA_VerifyExplicitSplit,   ET_BOOL, "-verifysplit", UNUSED, false)
174 DEF_VISA_OPTION(vISA_DumpRegChart,          ET_BOOL, "-dumpregchart", UNUSED, false)
175 DEF_VISA_OPTION(vISA_SpillAnalysis,         ET_BOOL, "-spillanalysis", UNUSED, false)
176 DEF_VISA_OPTION(vISA_DumpAllBCInfo,          ET_BOOL, "-dumpAllBCInfo", UNUSED, false)
177 DEF_VISA_OPTION(vISA_LinearScan,               ET_BOOL, "-linearScan",       UNUSED, false)
178 DEF_VISA_OPTION(vISA_LSFristFit,               ET_BOOL, "-lsFirstFit",       UNUSED, true)
179 DEF_VISA_OPTION(vISA_verifyLinearScan,               ET_BOOL, "-verifyLinearScan",       UNUSED, false)
180 
181 //=== scheduler options ===
182 DEF_VISA_OPTION(vISA_LocalScheduling,       ET_BOOL, "-noschedule",      UNUSED, true)
183 DEF_VISA_OPTION(vISA_preRA_Schedule,        ET_BOOL, "-nopresched",      UNUSED, true)
184 DEF_VISA_OPTION(vISA_preRA_ScheduleForce,   ET_BOOL, "-presched",        UNUSED, false)
185 DEF_VISA_OPTION(vISA_preRA_ScheduleCtrl,      ET_INT32, "-presched-ctrl",      "USAGE: -presched-ctrl <ctrl>\n", 4)
186 DEF_VISA_OPTION(vISA_preRA_ScheduleRPThreshold, ET_INT32, "-presched-rp",      "USAGE: -presched-rp <threshold>\n", 0)
187 DEF_VISA_OPTION(vISA_ScheduleStartBBID, ET_INT32, "-sched-start",      "USAGE: -sched-start <BB ID>\n", 0)
188 DEF_VISA_OPTION(vISA_ScheduleEndBBID, ET_INT32, "-sched-end",      "USAGE: -sched-end <BB ID>\n", 0)
189 DEF_VISA_OPTION(vISA_DumpSchedule,          ET_BOOL, "-dumpSchedule",    UNUSED, false)
190 DEF_VISA_OPTION(vISA_DumpDagDot,            ET_BOOL, "-dumpDagDot",      UNUSED, false)
191 DEF_VISA_OPTION(vISA_EnableNoDD,            ET_BOOL, "-enable-noDD",     UNUSED, false)
192 DEF_VISA_OPTION(vISA_DebugNoDD,             ET_BOOL, "-debug-noDD",      UNUSED, false)
193 DEF_VISA_OPTION(vISA_NoDDLookBack,          ET_INT32, "-noDD-lookback",  "USAGE: -noDD-lookback <NUM>\n", 3)
194 DEF_VISA_OPTION(vISA_EnableNoSrcDep,        ET_BOOL, "-enable-noSrcDep", UNUSED, false)
195 DEF_VISA_OPTION(vISA_EnableNoSrcDepScen1,   ET_BOOL, "-disable-noSrcDep-scen1", UNUSED, true)
196 DEF_VISA_OPTION(vISA_EnableNoSrcDepScen2,   ET_BOOL, "-disable-noSrcDep-scen2", UNUSED, true)
197 DEF_VISA_OPTION(vISA_DumpNoSrcDep,          ET_BOOL, "-dump-noSrcDep",   UNUSED, false)
198 DEF_VISA_OPTION(vISA_stopNoSrcDepSetAt,     ET_INT32, "-stop-noSrcDep-at", "Usage: -stop-noSrcDep-at <NUMBER>\n", UINT_MAX)
199 DEF_VISA_OPTION(vISA_FuseTypedWrites,       ET_BOOL, "-nofuse-typedWrites", UNUSED, false)
200 DEF_VISA_OPTION(vISA_ReorderDPSendToDifferentBti, ET_BOOL, "-nodpsendreorder", UNUSED, true)
201 DEF_VISA_OPTION(vISA_WAWSubregHazardAvoidance,    ET_BOOL, "-noWAWSubregHazardAvoidance", UNUSED, true)
202 DEF_VISA_OPTION(vISA_useMultiThreadedLatencies,   ET_BOOL, "-dontUseMultiThreadedLatencies", UNUSED, true)
203 DEF_VISA_OPTION(vISA_SchedulerWindowSize,         ET_INT32, "-schedulerwindow", "USAGE: -schedulerwindow <window-size>\n", 4096)
204 DEF_VISA_OPTION(vISA_HWThreadNumberPerEU, ET_INT32, "-HWThreadNumberPerEU", "USAGE: -HWThreadNumberPerEU <num>\n",  0)
205 DEF_VISA_OPTION(vISA_ForceHWThreadNumberPerEU, ET_INT32, "-forceHWThreadNumberPerEU", "USAGE: -forceHWThreadNumberPerEU <num>\n",  0)
206 DEF_VISA_OPTION(vISA_NoAtomicSend, ET_BOOL, "-noAtomicSend", UNUSED, false)
207 DEF_VISA_OPTION(vISA_ReadSuppressionDepth, ET_INT32, "-readSuppressionDepth", UNUSED, 0)
208 DEF_VISA_OPTION(vISA_ScheduleForReadSuppression, ET_BOOL, "-scheduleForReadSuppression", UNUSED, false)
209 DEF_VISA_OPTION(vISA_ScheduleFor2xSP, ET_BOOL, "-scheduleFor2xSP", UNUSED, false)
210 DEF_VISA_OPTION(vISA_SWSBBlockFor2xSP, ET_BOOL, "-SWSBBlockFor2xSP", UNUSED, false)
211 DEF_VISA_OPTION(vISA_LocalSchedulingStartBB,   ET_INT32, "-scheduleStartBB", UNUSED, 0)
212 DEF_VISA_OPTION(vISA_LocalSchedulingEndBB,     ET_INT32, "-scheduleEndBB", UNUSED, UINT_MAX)
213 DEF_VISA_OPTION(vISA_assumeL1Hit, ET_BOOL, "-assumeL1Hit", UNUSED, false)
214 DEF_VISA_OPTION(vISA_writeCombine, ET_BOOL, "-writeCombine", UNUSED, true)
215 DEF_VISA_OPTION(vISA_Q2FInIntegerPipe, ET_BOOL, "-Q2FInteger", UNUSED, false)
216 
217 //=== SWSB options ===
218 DEF_VISA_OPTION(vISA_USEL3HIT,      ET_BOOL,  "-SBIDL3Hit",    UNUSED, false)
219 DEF_VISA_OPTION(vISA_EnableIGASWSB,      ET_BOOL,  "-IGASWSB",    UNUSED, false)
220 DEF_VISA_OPTION(vISA_SWSBDepReduction,    ET_BOOL,  "-SWSBDepReduction",  UNUSED, false)
221 DEF_VISA_OPTION(vISA_forceDebugSWSB,      ET_BOOL,  "-forceDebugSWSB",    UNUSED, false)
222 DEF_VISA_OPTION(vISA_SWSBInstStall,       ET_INT32, "-SWSBInstStall",     UNUSED, 0)
223 DEF_VISA_OPTION(vISA_SWSBInstStallEnd,    ET_INT32, "-SWSBInstStallEnd",  UNUSED, 0)
224 DEF_VISA_OPTION(vISA_SWSBTokenBarrier,    ET_INT32, "-SWSBTokenBarrier",  UNUSED, 0)
225 DEF_VISA_OPTION(vISA_EnableSwitch,      ET_BOOL,  "-enableSwitch",    UNUSED, false)
226 DEF_VISA_OPTION(vISA_EnableISBIDBUNDLE,      ET_BOOL,  "-SBIDBundle",    UNUSED, false)
227 DEF_VISA_OPTION(vISA_EnableGroupScheduleForBC,      ET_BOOL,  "-groupScheduleForBC",    UNUSED, true)
228 DEF_VISA_OPTION(vISA_SWSBTokenNum,        ET_INT32, "-SWSBTokenNum",      "USAGE: -SWSBTokenNum <tokenNum>\n", 0)
229 DEF_VISA_OPTION(vISA_EnableSendTokenReduction,      ET_BOOL,  "-SendTokenReduction",    UNUSED, false)
230 DEF_VISA_OPTION(vISA_GlobalTokenAllocation,      ET_BOOL,  "-globalTokenAllocation",    UNUSED, false)
231 DEF_VISA_OPTION(vISA_QuickTokenAllocation,      ET_BOOL,  "-quickTokenAllocation",    UNUSED, false)
232 DEF_VISA_OPTION(vISA_DistPropTokenAllocation,      ET_BOOL,  "-distPropTokenAllocation",    UNUSED, false)
233 DEF_VISA_OPTION(vISA_SWSBStitch,      ET_BOOL,  "-SWSBStitch",    UNUSED, false)
234 DEF_VISA_OPTION(vISA_SBIDDepLoc,      ET_BOOL,  "-SBIDDepLoc",    UNUSED, false)
235 DEF_VISA_OPTION(vISA_DumpSBID,      ET_BOOL,  "-dumpSBID",    UNUSED, false)
236 
237 DEF_VISA_OPTION(vISA_EnableALUThreePipes,      ET_BOOL,  "-threeALUPipes",    UNUSED, true)
238 DEF_VISA_OPTION(vISA_EnableDPASTokenReduction,      ET_BOOL,  "-DPASTokenReduction",    UNUSED, false)
239 DEF_VISA_OPTION(vISA_EnableDPASBundleConflictReduction,      ET_BOOL,  "-DPASBundleReduction",    UNUSED, true)
240 DEF_VISA_OPTION(vISA_NoDPASMacro,      ET_BOOL,  "-noDPASMacro",    UNUSED, false)
241 DEF_VISA_OPTION(vISA_forceDPASMacro,      ET_BOOL,  "-forceDPASMacro",    UNUSED, false)
242 DEF_VISA_OPTION(vISA_TrueDepOnly,      ET_BOOL,  "-trueDepOnly",    UNUSED, false)
243 DEF_VISA_OPTION(vISA_SplitMov64,            ET_INT32,"-SplitMov64",  "USAGE: -SplitMov64 (0|1|2)\n", 0)
244 DEF_VISA_OPTION(vISA_UseOldSubRoutineAugIntf,    ET_BOOL, "-useOldSubRoutineAugIntf",     UNUSED, false)
245 DEF_VISA_OPTION(vISA_FastCompileRA,    ET_BOOL, "-fastCompileRA",     UNUSED, false)
246 DEF_VISA_OPTION(vISA_HybridRAWithSpill,    ET_BOOL, "-hybridRAWithSpill",     UNUSED, false)
247 
248 //=== binary emission options ===
249 DEF_VISA_OPTION(vISA_Compaction,          ET_BOOL,  "-nocompaction",    UNUSED, true)
250 DEF_VISA_OPTION(vISA_BXMLEncoder,         ET_BOOL,  "-nobxmlencoder",   UNUSED, true)
251 DEF_VISA_OPTION(vISA_IGAEncoder,          ET_BOOL,  "-IGAEncoder",      UNUSED, false)
252 
253 //=== asm/isaasm/isa emission options ===
254 DEF_VISA_OPTION(vISA_outputToFile,        ET_BOOL,  "-output",          UNUSED, false)
255 DEF_VISA_OPTION(vISA_SymbolReg,           ET_BOOL,  "-symbolreg",       UNUSED, false)
256 DEF_VISA_OPTION(vISA_PrintASMCount,       ET_BOOL,  "-printasmcount",   UNUSED, false)
257 DEF_VISA_OPTION(vISA_GenerateBinary,      ET_BOOL,  "-binary",          UNUSED, false)
258 DEF_VISA_OPTION(vISA_GenerateISAASM,      ET_BOOL,  "-dumpcommonisa",   UNUSED, false)
259 DEF_VISA_OPTION(vISA_DumpIsaVarNames,     ET_BOOL,  "-dumpisavarnames", UNUSED, true)
260 DEF_VISA_OPTION(vISA_GenIsaAsmList,       ET_BOOL,  "-genIsaasmList",   UNUSED, false)
261 DEF_VISA_OPTION(vISA_UniqueLabels,        ET_BOOL,  "-uniqueLabel",     UNUSED, false)
262 DEF_VISA_OPTION(vISA_ShaderDumpFilter,    ET_CSTR, "-shaderDumpFilter", "USAGE: -shaderDumpFilter <regex>\n", NULL)
263 //   specifies a file containing isaasm paths/names to parse
264 DEF_VISA_OPTION(vISA_IsaasmNamesFileUsed, ET_BOOL,  NULLSTR,            UNUSED, false)
265 DEF_VISA_OPTION(vISA_DumpvISA,            ET_BOOL,  "-dumpvisa",        UNUSED, false)
266 DEF_VISA_OPTION(vISA_StripComments,       ET_BOOL, "-stripcomments",      UNUSED, false)
267 DEF_VISA_OPTION(vISA_dumpNewSyntax,       ET_BOOL, "-disableIGASyntax",   UNUSED, true)
268 DEF_VISA_OPTION(vISA_NumGenBinariesWillBePatched, ET_INT32, "-numGenBinariesWillBePatched", "USAGE: missing number of gen binaries that will be patched.\n", 0)
269 DEF_VISA_OPTION(vISA_ISAASMNamesFile,   ET_CSTR, "-isaasmNamesOutputFile", "USAGE: File Name with isaasm paths.\n", NULL)
270 DEF_VISA_OPTION(vISA_GetvISABinaryName, ET_CSTR, "-outputCisaBinaryName",  UNUSED,                                  NULL)
271 DEF_VISA_OPTION(vISA_OutputvISABinaryName, ET_BOOL, NULLSTR,               UNUSED, false)
272 DEF_VISA_OPTION(vISA_LabelStr,          ET_CSTR,  "-uniqueLabels",         "Label String is not provided for the -uniqueLabels option.", NULL)
273 DEF_VISA_OPTION(VISA_AsmFileName,       ET_CSTR, "-asmOutput",             "USAGE: -asmOutput <FILE>\n",          NULL)
274 DEF_VISA_OPTION(vISA_DecodeDbg,         ET_CSTR, "-decodedbg",             "USAGE: -decodedbg <dbg filename>\n",    NULL)
275 DEF_VISA_OPTION(vISA_encoderFile,       ET_CSTR, "-encoderStatisticsFile", "USAGE: -encoderStatisticsFile <reloc file>\n", "encoderStatistics.csv")
276 DEF_VISA_OPTION(vISA_CISAbinary,        ET_CSTR, "-CISAbinary",            "USAGE: File Name with isaasm paths. ",  NULL)
277 DEF_VISA_OPTION(vISA_DumpRegInfo, ET_BOOL, "-dumpRegInfo",            UNUSED, false)
278 
279 //=== misc options ===
280 DEF_VISA_OPTION(vISA_PlatformIsSet,       ET_BOOL,  NULLSTR,              UNUSED, false)
281 DEF_VISA_OPTION(vISA_NoVerifyvISA,        ET_BOOL,  "-noverifyCISA",      UNUSED, false)
282 DEF_VISA_OPTION(vISA_InitPayload,         ET_BOOL,  "-initializePayload", UNUSED, false)
283 DEF_VISA_OPTION(vISA_isParseMode,         ET_BOOL,  NULLSTR,              UNUSED, false)
284 //   rerun RA post scheduling for gtpin
285 DEF_VISA_OPTION(vISA_ReRAPostSchedule,    ET_BOOL,  "-rerapostschedule",  UNUSED, false)
286 DEF_VISA_OPTION(vISA_GTPinReRA,           ET_BOOL, "-GTPinReRA",          UNUSED, false)
287 DEF_VISA_OPTION(vISA_GetFreeGRFInfo,      ET_BOOL,  "-getfreegrfinfo",    UNUSED, false)
288 DEF_VISA_OPTION(vISA_GTPinScratchAreaSize,ET_INT32, "-GTPinScratchAreaSize", UNUSED, 0)
289 DEF_VISA_OPTION(vISA_LSCBackupMode,       ET_BOOL,  "-LSCBackupMode",     UNUSED, false)
290 DEF_VISA_OPTION(vISA_InjectEntryFences,   ET_BOOL,  "-InjectEntryFences", UNUSED, false)
291 DEF_VISA_OPTION(vISA_LSCEnableHalfSIMD,   ET_BOOL,  "-enableHalfLSC",     UNUSED, false)
292 DEF_VISA_OPTION(vISA_lscNonStackSpill,    ET_BOOL, "-lscNonStackSpill",   UNUSED, false)
293 // native int64 adder was removed and then added back (adder lacks saturation)
294 // the int64 shifter was never removed
295 DEF_VISA_OPTION(vISA_HasInt64Add,         ET_BOOL,  "-hasInt64Add",      UNUSED, false)
296 // Corresponds to something slightly different in IGC than vISA_HasInt64Add
297 // (C.f. Platform.hpp:hasPartialInt64Support)
298 DEF_VISA_OPTION(vISA_HasPartialInt64,     ET_BOOL,  "-partialInt64",      UNUSED, false)
299 
300 DEF_VISA_OPTION(vISA_EnableDPASBFHFH,     ET_BOOL,  "-enableDPASBFHF",      UNUSED, false)
301 DEF_VISA_OPTION(vISA_EnableMathDPASWA,    ET_BOOL,  "-enableMathDPASWA",      UNUSED, false)
302 DEF_VISA_OPTION(vISA_skipFenceCommit,     ET_BOOL,  "-skipFenceCommit", UNUSED, false)
303 DEF_VISA_OPTION(vISA_removeFence,         ET_BOOL,  "-removeFence", "Remove fence if no write in a kernel", false)
304 
305 //=== HW Workarounds ===
306 DEF_VISA_OPTION(vISA_clearScratchWritesBeforeEOT,   ET_BOOL,  "-waClearScratchWrite", UNUSED, false)
307 DEF_VISA_OPTION(vISA_clearHDCWritesBeforeEOT,       ET_BOOL,  "-waClearHDCWrite",    UNUSED, false)
308 DEF_VISA_OPTION(vISA_clearLSCUGMWritesBeforeEOT,    ET_BOOL,  "-waLscUgmFence", UNUSED, false)
309 DEF_VISA_OPTION(vISA_setA0toTdrForSendc,            ET_BOOL,  "-setA0toTdrForSendc", UNUSED, false)
310 DEF_VISA_OPTION(vISA_addFFIDProlog,                 ET_BOOL,  "-noFFIDProlog",       UNUSED, true)
311 DEF_VISA_OPTION(vISA_setFFID,                       ET_INT32, "-setFFID", "USAGE: -setFFID <ffid>\n", FFID_INVALID)
312 DEF_VISA_OPTION(vISA_replaceIndirectCallWithJmpi,   ET_BOOL,  "-replaceIndirectCallWithJmpi",  UNUSED, false)
313 DEF_VISA_OPTION(vISA_noMaskWA,                      ET_INT32, "-noMaskWA",  "USAGE: -noMaskWA <[0:1]=0 (off)|1|2|3(3=2), [2:2]=0|1>\n", 0)
314 DEF_VISA_OPTION(vISA_forceNoMaskWA,                 ET_BOOL,  "-forceNoMaskWA",  UNUSED, false)
315 DEF_VISA_OPTION(vISA_fusedCallWA,                   ET_BOOL,  "-fusedCallWA",   "EU Fusion call wa, to be deleted after using WA id", false)
316 DEF_VISA_OPTION(vISA_DstSrcOverlapWA,               ET_BOOL,  "-dstSrcOverlapWA",  UNUSED, true)
317 DEF_VISA_OPTION(vISA_Src1Src2OverlapWA,               ET_BOOL,  "-src1Src2OverlapWA",  UNUSED, false)
318 DEF_VISA_OPTION(vISA_noSendSrcDstOverlap,           ET_BOOL,  "-noSendSrcDstOverlap", UNUSED, false)
319 DEF_VISA_OPTION(vISA_enableCloneSampleInst,         ET_BOOL,  "-cloneSampleInst", UNUSED, false)
320 DEF_VISA_OPTION(vISA_cloneEvaluateSampleInst,       ET_BOOL,  "-cloneEvaluateSampleInst", UNUSED, false)
321 DEF_VISA_OPTION(vISA_expandMulPostSchedule,         ET_BOOL,  "-expandMulPostSchedule", UNUSED, true)
322 DEF_VISA_OPTION(vISA_expandMadwPostSchedule,        ET_BOOL,  "-expandMadwPostSchedule", UNUSED, true)
323 DEF_VISA_OPTION(vISA_disableRegDistDep,         ET_BOOL,  "-disableRegDistDep", UNUSED, false)
324 DEF_VISA_OPTION(vISA_forceSrc0ToQwForQwShlWA,       ET_BOOL,  "-forceSrc0ToQwForQwShlWA", UNUSED, false)
325 
326 //=== HW debugging options ===
327 DEF_VISA_OPTION(vISA_GenerateDebugInfo,   ET_BOOL,  "-generateDebugInfo", UNUSED, false)
328 DEF_VISA_OPTION(vISA_setStartBreakPoint,  ET_BOOL,  "-setstartbp",        UNUSED, false)
329 DEF_VISA_OPTION(vISA_InsertHashMovs,      ET_BOOL,  NULLSTR,              UNUSED, false)
330 DEF_VISA_OPTION(vISA_InsertDummyMovForHWRSWA,      ET_BOOL,  "-insertRSDummyMov",              UNUSED, false)
331 DEF_VISA_OPTION(vISA_GenerateKernelInfo,  ET_BOOL, "-generateKernelInfo", UNUSED, false)
332 DEF_VISA_OPTION(vISA_ManualEnableRSWA,      ET_BOOL,  "-manualEnableRSWA",              UNUSED, false)
333 DEF_VISA_OPTION(vISA_InsertDummyMovForDPASRSWA,      ET_BOOL,  "-insertDPASRSDummyMov",              UNUSED, true)
334 DEF_VISA_OPTION(vISA_registerHWRSWA,      ET_INT32,  "-dummyRegisterHWRSWA",              UNUSED, 0)
335 DEF_VISA_OPTION(vISA_InsertDummyCompactInst, ET_BOOL, "-insertDummyCompactInst", UNUSED, false)
336 DEF_VISA_OPTION(vISA_AsmFileNameOverridden,  ET_BOOL,  NULLSTR,        UNUSED, false)
337 DEF_VISA_OPTION(vISA_HashVal,             ET_2xINT32, "-hashmovs", "USAGE: -hashmovs hi32 lo32\n", 0)
338 DEF_VISA_OPTION(vISA_HashVal1,            ET_2xINT32, "-hashmovs1", "USAGE: -hashmovs1 hi32 lo32\n", 0)
339 DEF_VISA_OPTION(vISA_HashMovsAtPrologue,  ET_BOOL, "-hashatprologue", UNUSED, false)
340 DEF_VISA_OPTION(vISA_AddKernelID,         ET_BOOL,  "-addKernelID", UNUSED, false)
341 DEF_VISA_OPTION(vISA_dumpPayload,         ET_BOOL, "-dumpPayload",        UNUSED, false)
342 DEF_VISA_OPTION(vISA_ScratchAllocForStackInKB, ET_INT32, "-scratchAllocForStackInKB", UNUSED, 64)
343 
344 DEF_VISA_OPTION(vISA_dumpToCurrentDir,    ET_BOOL, "-dumpToCurrentDir",   UNUSED, false)
345 DEF_VISA_OPTION(vISA_dumpTimer,           ET_BOOL, "-timestats",          UNUSED, false)
346 DEF_VISA_OPTION(vISA_EnableCompilerStats,   ET_BOOL, "-compilerStats",      UNUSED, false)
347 
348 DEF_VISA_OPTION(vISA_3DOption,            ET_BOOL, "-3d",                 UNUSED, false)
349 DEF_VISA_OPTION(vISA_Stepping,          ET_CSTR, "-stepping",              "USAGE: missing stepping string. ",      NULL)
350 DEF_VISA_OPTION(vISA_Platform,          ET_CSTR, "-platform",              "USAGE: missing platform string. ",      NULL)
351 DEF_VISA_OPTION(vISA_HasEarlyGRFRead,     ET_BOOL, "-earlyGRFRead",       UNUSED, false)
352