xref: /aosp_15_r20/external/swiftshader/third_party/subzero/src/IceClFlags.def (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1*03ce13f7SAndroid Build Coastguard Worker//===- subzero/src/IceClFlags.def - Cl Flags for translation ----*- C++ -*-===//
2*03ce13f7SAndroid Build Coastguard Worker//
3*03ce13f7SAndroid Build Coastguard Worker//                        The Subzero Code Generator
4*03ce13f7SAndroid Build Coastguard Worker//
5*03ce13f7SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source
6*03ce13f7SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details.
7*03ce13f7SAndroid Build Coastguard Worker//
8*03ce13f7SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
9*03ce13f7SAndroid Build Coastguard Worker///
10*03ce13f7SAndroid Build Coastguard Worker/// \file
11*03ce13f7SAndroid Build Coastguard Worker/// \brief Declares the command line flags used by Subzero.
12*03ce13f7SAndroid Build Coastguard Worker///
13*03ce13f7SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
14*03ce13f7SAndroid Build Coastguard Worker
15*03ce13f7SAndroid Build Coastguard Worker#ifndef SUBZERO_SRC_ICECLFLAGS_DEF
16*03ce13f7SAndroid Build Coastguard Worker#define SUBZERO_SRC_ICECLFLAGS_DEF
17*03ce13f7SAndroid Build Coastguard Worker
18*03ce13f7SAndroid Build Coastguard Workernamespace Ice {
19*03ce13f7SAndroid Build Coastguard Worker// cl_detail defines tags (i.e., structs) for specifying the type of a flag
20*03ce13f7SAndroid Build Coastguard Worker// (either single-, or multi-value), and whether or not the flag is available in
21*03ce13f7SAndroid Build Coastguard Worker// non-LLVM_CL build.
22*03ce13f7SAndroid Build Coastguard Workernamespace cl_detail {
23*03ce13f7SAndroid Build Coastguard Worker
24*03ce13f7SAndroid Build Coastguard Worker// Single-value flag, available in a non-LLVM_CL build.
25*03ce13f7SAndroid Build Coastguard Workerstruct release_opt_flag {};
26*03ce13f7SAndroid Build Coastguard Worker// Single-value flag, not available in a non-LLVM_CL build.
27*03ce13f7SAndroid Build Coastguard Workerstruct dev_opt_flag {};
28*03ce13f7SAndroid Build Coastguard Worker// Multi-value flag, not available in a non-LLVM_CL build.
29*03ce13f7SAndroid Build Coastguard Workerstruct dev_list_flag {};
30*03ce13f7SAndroid Build Coastguard Worker
31*03ce13f7SAndroid Build Coastguard Worker} // namespace cl_detail
32*03ce13f7SAndroid Build Coastguard Worker
33*03ce13f7SAndroid Build Coastguard Worker#define COMMAND_LINE_FLAGS                                                     \
34*03ce13f7SAndroid Build Coastguard Worker  /* Name, Type, ClType, <<flag declaration ctor arguments>> */                \
35*03ce13f7SAndroid Build Coastguard Worker  X(IRFilename, std::string, release_opt_flag, cl::Positional,                 \
36*03ce13f7SAndroid Build Coastguard Worker    cl::desc("IR File"), cl::init("-"))                                        \
37*03ce13f7SAndroid Build Coastguard Worker                                                                               \
38*03ce13f7SAndroid Build Coastguard Worker  X(NumTranslationThreads, uint32_t, release_opt_flag, "num_threads",          \
39*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Number of translation threads (0 for purely sequential)"),       \
40*03ce13f7SAndroid Build Coastguard Worker    cl::init(2))                                                               \
41*03ce13f7SAndroid Build Coastguard Worker                                                                               \
42*03ce13f7SAndroid Build Coastguard Worker  X(OptLevel, Ice::OptLevel, release_opt_flag, cl::desc("Optimization level"), \
43*03ce13f7SAndroid Build Coastguard Worker    cl::init(Ice::Opt_m1), cl::value_desc("level"),                            \
44*03ce13f7SAndroid Build Coastguard Worker    cl::values(clEnumValN(Ice::Opt_m1, "Om1", "-1"),                           \
45*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(Ice::Opt_m1, "O-1", "-1"),                           \
46*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(Ice::Opt_0, "O0", "0"),                              \
47*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(Ice::Opt_1, "O1", "1"),                              \
48*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(Ice::Opt_2, "O2", "2") CLENUMVALEND))                \
49*03ce13f7SAndroid Build Coastguard Worker                                                                               \
50*03ce13f7SAndroid Build Coastguard Worker  X(OutputFilename, std::string, release_opt_flag, "o",                        \
51*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Override output filename"), cl::init("-"),                       \
52*03ce13f7SAndroid Build Coastguard Worker    cl::value_desc("filename"))                                                \
53*03ce13f7SAndroid Build Coastguard Worker                                                                               \
54*03ce13f7SAndroid Build Coastguard Worker  X(TargetArch, Ice::TargetArch, release_opt_flag, "target",                   \
55*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Target architecture:"), cl::init(Ice::Target_X8632),             \
56*03ce13f7SAndroid Build Coastguard Worker    cl::values(                                                                \
57*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_X8632, "x8632", "x86-32"),                      \
58*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_X8632, "x86-32", "x86-32 (same as x8632)"),     \
59*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_X8632, "x86_32", "x86-32 (same as x8632)"),     \
60*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_X8664, "x8664", "x86-64"),                      \
61*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_X8664, "x86-64", "x86-64 (same as x8664)"),     \
62*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_X8664, "x86_64", "x86-64 (same as x8664)"),     \
63*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_ARM32, "arm", "arm32"),                         \
64*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_ARM32, "arm32", "arm32 (same as arm)"),         \
65*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_ARM64, "arm64", "arm64"),                       \
66*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_MIPS32, "mips", "mips32"),                      \
67*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::Target_MIPS32, "mips32", "mips32 (same as mips)")      \
68*03ce13f7SAndroid Build Coastguard Worker            CLENUMVALEND))                                                     \
69*03ce13f7SAndroid Build Coastguard Worker                                                                               \
70*03ce13f7SAndroid Build Coastguard Worker  /* The following are development flags, and ideally should not appear in a   \
71*03ce13f7SAndroid Build Coastguard Worker   * release build. */                                                         \
72*03ce13f7SAndroid Build Coastguard Worker                                                                               \
73*03ce13f7SAndroid Build Coastguard Worker  X(AllowErrorRecovery, bool, dev_opt_flag,                                    \
74*03ce13f7SAndroid Build Coastguard Worker    "allow-pnacl-reader-error-recovery",                                       \
75*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Allow error recovery when reading PNaCl bitcode."),              \
76*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
77*03ce13f7SAndroid Build Coastguard Worker                                                                               \
78*03ce13f7SAndroid Build Coastguard Worker  X(AllowExternDefinedSymbols, bool, dev_opt_flag,                             \
79*03ce13f7SAndroid Build Coastguard Worker    "allow-externally-defined-symbols",                                        \
80*03ce13f7SAndroid Build Coastguard Worker    cl::desc(                                                                  \
81*03ce13f7SAndroid Build Coastguard Worker        "Allow global symbols to be externally defined (other than _start "    \
82*03ce13f7SAndroid Build Coastguard Worker        "and __pnacl_pso_root)."),                                             \
83*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
84*03ce13f7SAndroid Build Coastguard Worker                                                                               \
85*03ce13f7SAndroid Build Coastguard Worker  X(AllowIacaMarks, bool, dev_opt_flag, "allow-iaca-marks",                    \
86*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Allow IACA (Intel Architecture Code Analyzer) marks to be "      \
87*03ce13f7SAndroid Build Coastguard Worker             "inserted. These binaries are not executable."),                  \
88*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
89*03ce13f7SAndroid Build Coastguard Worker                                                                               \
90*03ce13f7SAndroid Build Coastguard Worker  X(AllowUninitializedGlobals, bool, dev_opt_flag,                             \
91*03ce13f7SAndroid Build Coastguard Worker    "allow-uninitialized-globals",                                             \
92*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Allow global variables to be uninitialized"))                    \
93*03ce13f7SAndroid Build Coastguard Worker                                                                               \
94*03ce13f7SAndroid Build Coastguard Worker  X(AlwaysExitSuccess, bool, dev_opt_flag, "exit-success",                     \
95*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Exit with success status, even if errors found"),                \
96*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
97*03ce13f7SAndroid Build Coastguard Worker                                                                               \
98*03ce13f7SAndroid Build Coastguard Worker  X(AggressiveLea, bool, dev_opt_flag, "aggressive-lea",                       \
99*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Convert additions to lea when it reduces code size"),            \
100*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
101*03ce13f7SAndroid Build Coastguard Worker                                                                               \
102*03ce13f7SAndroid Build Coastguard Worker  X(BitcodeAsText, bool, dev_opt_flag, "bitcode-as-text",                      \
103*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Accept textual form of PNaCl bitcode "                           \
104*03ce13f7SAndroid Build Coastguard Worker             "records (i.e. not .ll assembly)"),                               \
105*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
106*03ce13f7SAndroid Build Coastguard Worker                                                                               \
107*03ce13f7SAndroid Build Coastguard Worker  X(BuildOnRead, bool, dev_opt_flag, "build-on-read",                          \
108*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Build ICE instructions when reading bitcode"), cl::init(true))   \
109*03ce13f7SAndroid Build Coastguard Worker                                                                               \
110*03ce13f7SAndroid Build Coastguard Worker  X(DataSections, bool, dev_opt_flag, "fdata-sections",                        \
111*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Emit (global) data into separate sections"))                     \
112*03ce13f7SAndroid Build Coastguard Worker                                                                               \
113*03ce13f7SAndroid Build Coastguard Worker  X(DecorateAsm, bool, dev_opt_flag, "asm-verbose",                            \
114*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Decorate textual asm output with register liveness info"))       \
115*03ce13f7SAndroid Build Coastguard Worker                                                                               \
116*03ce13f7SAndroid Build Coastguard Worker  X(DefaultFunctionPrefix, std::string, dev_opt_flag,                          \
117*03ce13f7SAndroid Build Coastguard Worker    "default-function-prefix",                                                 \
118*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Define default function prefix for naming unnamed functions"),   \
119*03ce13f7SAndroid Build Coastguard Worker    cl::init("Function"))                                                      \
120*03ce13f7SAndroid Build Coastguard Worker                                                                               \
121*03ce13f7SAndroid Build Coastguard Worker  X(DefaultGlobalPrefix, std::string, dev_opt_flag, "default-global-prefix",   \
122*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Define default global prefix for naming unnamed globals"),       \
123*03ce13f7SAndroid Build Coastguard Worker    cl::init("Global"))                                                        \
124*03ce13f7SAndroid Build Coastguard Worker                                                                               \
125*03ce13f7SAndroid Build Coastguard Worker  X(DisableHybridAssembly, bool, dev_opt_flag, "no-hybrid-asm",                \
126*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Disable hybrid assembly when -filetype=iasm"), cl::init(false))  \
127*03ce13f7SAndroid Build Coastguard Worker                                                                               \
128*03ce13f7SAndroid Build Coastguard Worker  X(DisableInternal, bool, dev_opt_flag, "externalize",                        \
129*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Externalize all symbols"))                                       \
130*03ce13f7SAndroid Build Coastguard Worker                                                                               \
131*03ce13f7SAndroid Build Coastguard Worker  X(DisableTranslation, bool, dev_opt_flag, "notranslate",                     \
132*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Disable Subzero translation"))                                   \
133*03ce13f7SAndroid Build Coastguard Worker                                                                               \
134*03ce13f7SAndroid Build Coastguard Worker  X(DumpStats, bool, dev_opt_flag, "szstats",                                  \
135*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Print statistics after translating each function"))              \
136*03ce13f7SAndroid Build Coastguard Worker                                                                               \
137*03ce13f7SAndroid Build Coastguard Worker  X(DumpStrings, bool, dev_opt_flag, "dump-strings",                           \
138*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Dump string pools during compilation"), cl::init(false))         \
139*03ce13f7SAndroid Build Coastguard Worker                                                                               \
140*03ce13f7SAndroid Build Coastguard Worker  X(EnableBlockProfile, bool, dev_opt_flag, "enable-block-profile",            \
141*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Instrument basic blocks, and output profiling "                  \
142*03ce13f7SAndroid Build Coastguard Worker             "information to stdout at the end of program execution."),        \
143*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
144*03ce13f7SAndroid Build Coastguard Worker                                                                               \
145*03ce13f7SAndroid Build Coastguard Worker  X(LocalCSE, Ice::LCSEOptions, dev_opt_flag, "lcse",                          \
146*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Local common subexpression elimination"),                        \
147*03ce13f7SAndroid Build Coastguard Worker    cl::init(Ice::LCSE_EnabledSSA),                                            \
148*03ce13f7SAndroid Build Coastguard Worker    cl::values(clEnumValN(Ice::LCSE_Disabled, "0", "disabled"),                \
149*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(Ice::LCSE_EnabledSSA, "enabled", "assume-ssa"),      \
150*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(Ice::LCSE_EnabledNoSSA, "no-ssa", "no-assume-ssa")   \
151*03ce13f7SAndroid Build Coastguard Worker                   CLENUMVALEND))                                              \
152*03ce13f7SAndroid Build Coastguard Worker                                                                               \
153*03ce13f7SAndroid Build Coastguard Worker  X(EmitRevision, bool, dev_opt_flag, "emit-revision",                         \
154*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Emit Subzero revision string into the output"), cl::init(true))  \
155*03ce13f7SAndroid Build Coastguard Worker                                                                               \
156*03ce13f7SAndroid Build Coastguard Worker  X(EnablePhiEdgeSplit, bool, dev_opt_flag, "phi-edge-split",                  \
157*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Enable edge splitting for Phi lowering"), cl::init(true))        \
158*03ce13f7SAndroid Build Coastguard Worker                                                                               \
159*03ce13f7SAndroid Build Coastguard Worker  X(EnableShortCircuit, bool, dev_opt_flag, "enable-sc",                       \
160*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Split Nodes for short circuit evaluation"), cl::init(false))     \
161*03ce13f7SAndroid Build Coastguard Worker                                                                               \
162*03ce13f7SAndroid Build Coastguard Worker  X(ExcludedRegisters, std::string, dev_list_flag, "reg-exclude",              \
163*03ce13f7SAndroid Build Coastguard Worker    cl::CommaSeparated, cl::desc("Don't use specified registers"))             \
164*03ce13f7SAndroid Build Coastguard Worker                                                                               \
165*03ce13f7SAndroid Build Coastguard Worker  X(ForceMemIntrinOpt, bool, dev_opt_flag, "fmem-intrin-opt",                  \
166*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Force optimization of memory intrinsics."))                      \
167*03ce13f7SAndroid Build Coastguard Worker                                                                               \
168*03ce13f7SAndroid Build Coastguard Worker  X(ForceO2String, std::string, dev_opt_flag, "force-O2",                      \
169*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Force -O2 for certain functions (assumes -Om1)"), cl::init(""))  \
170*03ce13f7SAndroid Build Coastguard Worker                                                                               \
171*03ce13f7SAndroid Build Coastguard Worker  X(SplitInstString, std::string, dev_opt_flag, "split-inst",                  \
172*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Restrict local var splitting to specific insts"), cl::init(":")) \
173*03ce13f7SAndroid Build Coastguard Worker                                                                               \
174*03ce13f7SAndroid Build Coastguard Worker  X(FunctionSections, bool, dev_opt_flag, "ffunction-sections",                \
175*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Emit functions into separate sections"))                         \
176*03ce13f7SAndroid Build Coastguard Worker                                                                               \
177*03ce13f7SAndroid Build Coastguard Worker  X(GenerateBuildAtts, bool, release_opt_flag, "build-atts",                   \
178*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Generate list of build attributes associated with "              \
179*03ce13f7SAndroid Build Coastguard Worker             "this executable."),                                              \
180*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
181*03ce13f7SAndroid Build Coastguard Worker                                                                               \
182*03ce13f7SAndroid Build Coastguard Worker  X(SplitGlobalVars, bool, dev_opt_flag, "split-global-vars",                  \
183*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Global live range splitting"), cl::init(false))                  \
184*03ce13f7SAndroid Build Coastguard Worker                                                                               \
185*03ce13f7SAndroid Build Coastguard Worker  X(InputFileFormat, llvm::NaClFileFormat, dev_opt_flag, "bitcode-format",     \
186*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Define format of input file:"),                                  \
187*03ce13f7SAndroid Build Coastguard Worker    cl::values(clEnumValN(llvm::LLVMFormat, "llvm", "LLVM file (default)"),    \
188*03ce13f7SAndroid Build Coastguard Worker               clEnumValN(llvm::PNaClFormat, "pnacl", "PNaCl bitcode file")    \
189*03ce13f7SAndroid Build Coastguard Worker                   CLENUMVALEND),                                              \
190*03ce13f7SAndroid Build Coastguard Worker    cl::init(llvm::LLVMFormat))                                                \
191*03ce13f7SAndroid Build Coastguard Worker                                                                               \
192*03ce13f7SAndroid Build Coastguard Worker  X(KeepDeletedInsts, bool, dev_opt_flag, "keep-deleted-insts",                \
193*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Retain deleted instructions in the Cfg"),                        \
194*03ce13f7SAndroid Build Coastguard Worker    cl::init(Ice::BuildDefs::dump()))                                          \
195*03ce13f7SAndroid Build Coastguard Worker                                                                               \
196*03ce13f7SAndroid Build Coastguard Worker  X(LLVMVerboseErrors, bool, dev_opt_flag, "verbose-llvm-parse-errors",        \
197*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Print out more descriptive PNaCl bitcode parse errors when "     \
198*03ce13f7SAndroid Build Coastguard Worker             "building LLVM IR first"),                                        \
199*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
200*03ce13f7SAndroid Build Coastguard Worker                                                                               \
201*03ce13f7SAndroid Build Coastguard Worker  X(LocalCseMaxIterations, uint32_t, dev_opt_flag, "lcse-max-iters",           \
202*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Number of times local-cse is run on a block"), cl::init(1))      \
203*03ce13f7SAndroid Build Coastguard Worker                                                                               \
204*03ce13f7SAndroid Build Coastguard Worker  X(LoopInvariantCodeMotion, bool, dev_opt_flag, "licm",                       \
205*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Hoist loop invariant arithmetic operations"), cl::init(false))   \
206*03ce13f7SAndroid Build Coastguard Worker                                                                               \
207*03ce13f7SAndroid Build Coastguard Worker  X(LogFilename, std::string, dev_opt_flag, "log",                             \
208*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Set log filename"), cl::init("-"), cl::value_desc("filename"))   \
209*03ce13f7SAndroid Build Coastguard Worker                                                                               \
210*03ce13f7SAndroid Build Coastguard Worker  X(MaxNopsPerInstruction, int, dev_opt_flag, "max-nops-per-instruction",      \
211*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Max number of nops to insert per instruction"), cl::init(1))     \
212*03ce13f7SAndroid Build Coastguard Worker                                                                               \
213*03ce13f7SAndroid Build Coastguard Worker  X(MockBoundsCheck, bool, dev_opt_flag, "mock-bounds-check",                  \
214*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Mock bounds checking on loads/stores"))                          \
215*03ce13f7SAndroid Build Coastguard Worker                                                                               \
216*03ce13f7SAndroid Build Coastguard Worker  X(NopProbabilityAsPercentage, int, dev_opt_flag, "nop-insertion-percentage", \
217*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Nop insertion probability as percentage"), cl::init(10))         \
218*03ce13f7SAndroid Build Coastguard Worker                                                                               \
219*03ce13f7SAndroid Build Coastguard Worker  X(OutFileType, Ice::FileType, dev_opt_flag, "filetype",                      \
220*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Output file type"), cl::init(Ice::FT_Iasm),                      \
221*03ce13f7SAndroid Build Coastguard Worker    cl::values(                                                                \
222*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::FT_Elf, "obj", "Native ELF object ('.o') file"),       \
223*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::FT_Asm, "asm", "Assembly ('.s') file"),                \
224*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::FT_Iasm, "iasm",                                       \
225*03ce13f7SAndroid Build Coastguard Worker                   "Low-level integrated assembly ('.s') file") CLENUMVALEND)) \
226*03ce13f7SAndroid Build Coastguard Worker                                                                               \
227*03ce13f7SAndroid Build Coastguard Worker  X(ParseParallel, bool, dev_opt_flag, "parse-parallel",                       \
228*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Parse function blocks in parallel"), cl::init(true))             \
229*03ce13f7SAndroid Build Coastguard Worker                                                                               \
230*03ce13f7SAndroid Build Coastguard Worker  X(SplitLocalVars, bool, dev_opt_flag, "split-local-vars", cl::init(true),    \
231*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Block-local variable splitting (O2 only)"))                      \
232*03ce13f7SAndroid Build Coastguard Worker                                                                               \
233*03ce13f7SAndroid Build Coastguard Worker  X(RegAllocReserve, bool, dev_opt_flag, "reg-reserve",                        \
234*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Let register allocation use reserve registers"),                 \
235*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
236*03ce13f7SAndroid Build Coastguard Worker                                                                               \
237*03ce13f7SAndroid Build Coastguard Worker  X(RepeatRegAlloc, bool, dev_opt_flag, "regalloc-repeat",                     \
238*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Repeat register allocation until convergence"), cl::init(true))  \
239*03ce13f7SAndroid Build Coastguard Worker                                                                               \
240*03ce13f7SAndroid Build Coastguard Worker  /* TODO(tlively): Generalize this to handle more sanitizers */               \
241*03ce13f7SAndroid Build Coastguard Worker  X(SanitizeAddresses, bool, dev_opt_flag, "fsanitize-address",                \
242*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Instrument compiled code with Address Sanitizer"),               \
243*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
244*03ce13f7SAndroid Build Coastguard Worker                                                                               \
245*03ce13f7SAndroid Build Coastguard Worker  X(SkipUnimplemented, bool, dev_opt_flag, "skip-unimplemented",               \
246*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Skip through unimplemented lowering code instead of aborting."), \
247*03ce13f7SAndroid Build Coastguard Worker    cl::init(false))                                                           \
248*03ce13f7SAndroid Build Coastguard Worker                                                                               \
249*03ce13f7SAndroid Build Coastguard Worker  X(SubzeroTimingEnabled, bool, dev_opt_flag, "timing",                        \
250*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Enable breakdown timing of Subzero translation"))                \
251*03ce13f7SAndroid Build Coastguard Worker                                                                               \
252*03ce13f7SAndroid Build Coastguard Worker  X(TargetInstructionSet, Ice::TargetInstructionSet, dev_opt_flag, "mattr",    \
253*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Target architecture attributes"),                                \
254*03ce13f7SAndroid Build Coastguard Worker    cl::init(Ice::BaseInstructionSet),                                         \
255*03ce13f7SAndroid Build Coastguard Worker    cl::values(                                                                \
256*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::BaseInstructionSet, "base",                            \
257*03ce13f7SAndroid Build Coastguard Worker                   "Target chooses baseline instruction set (default)"),       \
258*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::X86InstructionSet_SSE2, "sse2",                        \
259*03ce13f7SAndroid Build Coastguard Worker                   "Enable X86 SSE2 instructions"),                            \
260*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::X86InstructionSet_SSE4_1, "sse4.1",                    \
261*03ce13f7SAndroid Build Coastguard Worker                   "Enable X86 SSE 4.1 instructions"),                         \
262*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::ARM32InstructionSet_Neon, "neon",                      \
263*03ce13f7SAndroid Build Coastguard Worker                   "Enable ARM Neon instructions"),                            \
264*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::ARM32InstructionSet_HWDivArm, "hwdiv-arm",             \
265*03ce13f7SAndroid Build Coastguard Worker                   "Enable ARM integer divide instructions in ARM mode")       \
266*03ce13f7SAndroid Build Coastguard Worker            CLENUMVALEND))                                                     \
267*03ce13f7SAndroid Build Coastguard Worker                                                                               \
268*03ce13f7SAndroid Build Coastguard Worker  X(TestPrefix, std::string, dev_opt_flag, "prefix",                           \
269*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Prepend a prefix to symbol names for testing"), cl::init(""),    \
270*03ce13f7SAndroid Build Coastguard Worker    cl::value_desc("prefix"))                                                  \
271*03ce13f7SAndroid Build Coastguard Worker                                                                               \
272*03ce13f7SAndroid Build Coastguard Worker  X(TestStackExtra, uint32_t, dev_opt_flag, "test-stack-extra",                \
273*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Extra amount of stack to add to the "                            \
274*03ce13f7SAndroid Build Coastguard Worker             "frame in bytes (for testing)."),                                 \
275*03ce13f7SAndroid Build Coastguard Worker    cl::init(0))                                                               \
276*03ce13f7SAndroid Build Coastguard Worker                                                                               \
277*03ce13f7SAndroid Build Coastguard Worker  X(TestStatusString, std::string, dev_opt_flag, "test-status",                \
278*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Testing flag for -verbose=status"), cl::init(":"))               \
279*03ce13f7SAndroid Build Coastguard Worker                                                                               \
280*03ce13f7SAndroid Build Coastguard Worker  X(TimeEachFunction, bool, dev_opt_flag, "timing-funcs",                      \
281*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Print total translation time for each function"))                \
282*03ce13f7SAndroid Build Coastguard Worker                                                                               \
283*03ce13f7SAndroid Build Coastguard Worker  X(TimingFocusOnString, std::string, dev_opt_flag, "timing-focus",            \
284*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Break down timing for specific functions (use ':' for all)"),    \
285*03ce13f7SAndroid Build Coastguard Worker    cl::init(""))                                                              \
286*03ce13f7SAndroid Build Coastguard Worker                                                                               \
287*03ce13f7SAndroid Build Coastguard Worker  X(TranslateOnlyString, std::string, dev_opt_flag, "translate-only",          \
288*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Translate only the given functions"), cl::init(":"))             \
289*03ce13f7SAndroid Build Coastguard Worker                                                                               \
290*03ce13f7SAndroid Build Coastguard Worker  X(UseRestrictedRegisters, std::string, dev_list_flag, "reg-use",             \
291*03ce13f7SAndroid Build Coastguard Worker    cl::CommaSeparated,                                                        \
292*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Only use specified registers for corresponding register "        \
293*03ce13f7SAndroid Build Coastguard Worker             "classes"))                                                       \
294*03ce13f7SAndroid Build Coastguard Worker                                                                               \
295*03ce13f7SAndroid Build Coastguard Worker  X(Verbose, Ice::VerboseItem, dev_list_flag, "verbose", cl::CommaSeparated,   \
296*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Verbose options (can be comma-separated):"),                     \
297*03ce13f7SAndroid Build Coastguard Worker    cl::values(                                                                \
298*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Instructions, "inst",                             \
299*03ce13f7SAndroid Build Coastguard Worker                   "Print basic instructions"),                                \
300*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Deleted, "del", "Include deleted instructions"),  \
301*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_InstNumbers, "instnum",                           \
302*03ce13f7SAndroid Build Coastguard Worker                   "Print instruction numbers"),                               \
303*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Preds, "pred", "Show predecessors"),              \
304*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Succs, "succ", "Show successors"),                \
305*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Liveness, "live", "Liveness information"),        \
306*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_RegOrigins, "orig", "Physical register origins"), \
307*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_LinearScan, "regalloc", "Linear scan details"),   \
308*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Frame, "frame", "Stack frame layout details"),    \
309*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_AddrOpt, "addropt", "Address mode optimization"), \
310*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Folding, "fold", "Instruction folding details"),  \
311*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_RMW, "rmw", "ReadModifyWrite optimization"),      \
312*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Loop, "loop", "Loop nest depth analysis"),        \
313*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Mem, "mem", "Memory usage details"),              \
314*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_ShufMat, "shufvec",                               \
315*03ce13f7SAndroid Build Coastguard Worker                   "Shufflevector rematerialization"),                         \
316*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Status, "status",                                 \
317*03ce13f7SAndroid Build Coastguard Worker                   "Print the name of the function being translated"),         \
318*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_AvailableRegs, "registers",                       \
319*03ce13f7SAndroid Build Coastguard Worker                   "Show available registers for register allocation"),        \
320*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_GlobalInit, "global_init",                        \
321*03ce13f7SAndroid Build Coastguard Worker                   "Global initializers"),                                     \
322*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_ConstPoolStats, "cpool",                          \
323*03ce13f7SAndroid Build Coastguard Worker                   "Constant pool counters"),                                  \
324*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Wasm, "wasm", "WebAssembly builder"),             \
325*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_All, "all", "Use all verbose options"),           \
326*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_Most, "most",                                     \
327*03ce13f7SAndroid Build Coastguard Worker                   "Use all verbose options except 'regalloc,global_init'"),   \
328*03ce13f7SAndroid Build Coastguard Worker        clEnumValN(Ice::IceV_None, "none", "No verbosity") CLENUMVALEND))      \
329*03ce13f7SAndroid Build Coastguard Worker                                                                               \
330*03ce13f7SAndroid Build Coastguard Worker  X(VerboseFocusOnString, std::string, dev_opt_flag, "verbose-focus",          \
331*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Override with -verbose=none except for specified functions"),    \
332*03ce13f7SAndroid Build Coastguard Worker    cl::init(":"))                                                             \
333*03ce13f7SAndroid Build Coastguard Worker                                                                               \
334*03ce13f7SAndroid Build Coastguard Worker  X(WasmBoundsCheck, bool, dev_opt_flag, "wasm-bounds-check",                  \
335*03ce13f7SAndroid Build Coastguard Worker    cl::desc("Add bounds checking code in WASM frontend"), cl::init(true))
336*03ce13f7SAndroid Build Coastguard Worker
337*03ce13f7SAndroid Build Coastguard Worker//#define X(Name, Type, ClType, ...)
338*03ce13f7SAndroid Build Coastguard Worker
339*03ce13f7SAndroid Build Coastguard Worker} // end of namespace Ice
340*03ce13f7SAndroid Build Coastguard Worker
341*03ce13f7SAndroid Build Coastguard Worker#endif // SUBZERO_SRC_ICECLFLAGS_DEF
342