HLSLOptions.td 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. //===--- HLSLOptions.td - Options for HLSL --------------------------------===//
  2. ///////////////////////////////////////////////////////////////////////////////
  3. // //
  4. // HLSLOptions.td //
  5. // Copyright (C) Microsoft Corporation. All rights reserved. //
  6. // This file is distributed under the University of Illinois Open Source //
  7. // License. See LICENSE.TXT for details. //
  8. // //
  9. // This file defines the options accepted by HLSL. //
  10. // //
  11. ///////////////////////////////////////////////////////////////////////////////
  12. // Include the common option parsing interfaces. //
  13. include "llvm/Option/OptParser.td"
  14. //////////////////////////////////////////////////////////////////////////////
  15. // Flags
  16. // DriverOption - The option is a "driver" option, and should not be forwarded
  17. // to other tools.
  18. def DriverOption : OptionFlag;
  19. // CoreOption - This is considered a "core" HLSL option.
  20. def CoreOption : OptionFlag;
  21. // ISenseOption - This option is only supported for IntelliSense.
  22. def ISenseOption : OptionFlag;
  23. //////////////////////////////////////////////////////////////////////////////
  24. // Groups
  25. // Meta-group for options which are only used for compilation,
  26. // and not linking etc.
  27. def CompileOnly_Group : OptionGroup<"<CompileOnly group>">;
  28. def Action_Group : OptionGroup<"<action group>">;
  29. def I_Group : OptionGroup<"<I group>">, Group<CompileOnly_Group>;
  30. def M_Group : OptionGroup<"<M group>">, Group<CompileOnly_Group>;
  31. def T_Group : OptionGroup<"<T group>">;
  32. def O_Group : OptionGroup<"<O group>">, Group<CompileOnly_Group>;
  33. def R_Group : OptionGroup<"<R group>">, Group<CompileOnly_Group>;
  34. def R_value_Group : OptionGroup<"<R (with value) group>">, Group<R_Group>;
  35. def W_Group : OptionGroup<"<W group>">, Group<CompileOnly_Group>;
  36. def W_value_Group : OptionGroup<"<W (with value) group>">, Group<W_Group>;
  37. def d_Group : OptionGroup<"<d group>">;
  38. def f_Group : OptionGroup<"<f group>">, Group<CompileOnly_Group>;
  39. def f_clang_Group : OptionGroup<"<f (clang-only) group>">, Group<CompileOnly_Group>;
  40. def g_Group : OptionGroup<"<g group>">;
  41. def g_flags_Group : OptionGroup<"<g flags group>">;
  42. def i_Group : OptionGroup<"<i group>">, Group<CompileOnly_Group>;
  43. def clang_i_Group : OptionGroup<"<clang i group>">, Group<i_Group>;
  44. def m_Group : OptionGroup<"<m group>">, Group<CompileOnly_Group>;
  45. def u_Group : OptionGroup<"<u group>">;
  46. // Developer Driver Options
  47. def internal_Group : OptionGroup<"<clang internal options>">;
  48. def internal_driver_Group : OptionGroup<"<clang driver internal options>">,
  49. Group<internal_Group>, HelpText<"DRIVER OPTIONS">;
  50. def internal_debug_Group :
  51. OptionGroup<"<clang debug/development internal options>">,
  52. Group<internal_Group>, HelpText<"DEBUG/DEVELOPMENT OPTIONS">;
  53. def hlslcomp_Group : OptionGroup<"HLSL Compilation">, HelpText<"Compilation Options">;
  54. def hlsloptz_Group : OptionGroup<"HLSL Optimization">, HelpText<"Optimization Options">;
  55. def hlslutil_Group : OptionGroup<"HLSL Utility">, HelpText<"Utility Options">;
  56. def hlslcore_Group : OptionGroup<"HLSL Core">, HelpText<"Common Options">;
  57. //////////////////////////////////////////////////////////////////////////////
  58. // Options
  59. // The internal option ID must be a valid C++ identifier and results in a
  60. // hlsl::options::OPT_XX enum constant for XX.
  61. //
  62. // See tools/clang/include/clang/Driver/Options.td for more notes.
  63. // These options are based on those used by clang.
  64. // fxc-based options kept for compatiblity are below.
  65. //
  66. // The general approach is to include only things that are in use, in the
  67. // same order as in Options.td.
  68. def D : JoinedOrSeparate<["-", "/"], "D">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  69. HelpText<"Define macro">;
  70. def H : Flag<["-"], "H">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  71. HelpText<"Show header includes and nesting depth">;
  72. def I : JoinedOrSeparate<["-", "/"], "I">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  73. HelpText<"Add directory to include search path">;
  74. def O0 : Flag<["-", "/"], "O0">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  75. HelpText<"Optimization Level 0">;
  76. def O1 : Flag<["-", "/"], "O1">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  77. HelpText<"Optimization Level 1">;
  78. def O2 : Flag<["-", "/"], "O2">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  79. HelpText<"Optimization Level 2">;
  80. def O3 : Flag<["-", "/"], "O3">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  81. HelpText<"Optimization Level 3 (Default)">;
  82. def O4 : Flag<["-", "/"], "O4">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  83. HelpText<"Optimization Level 4">;
  84. def Odump : Flag<["-", "/"], "Odump">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  85. HelpText<"Print the optimizer commands.">;
  86. def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Group<hlslcore_Group>, Flags<[CoreOption]>,
  87. HelpText<"Don't emit warning for unused driver arguments">;
  88. def Wall : Flag<["-"], "Wall">, Group<hlslcomp_Group>, Flags<[CoreOption]>;
  89. def Wdeprecated : Flag<["-"], "Wdeprecated">, Group<hlslcomp_Group>, Flags<[CoreOption]>;
  90. //def W_Joined : Joined<["-"], "W">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  91. // MetaVarName<"<warning>">, HelpText<"Enable the specified warning">;
  92. def d_Flag : Flag<["-"], "d">, Group<d_Group>;
  93. def d_Joined : Joined<["-"], "d">, Group<d_Group>;
  94. //def fcolor_diagnostics : Flag<["-"], "fcolor-diagnostics">, Group<hlslcomp_Group>,
  95. // Flags<[CoreOption, DriverOption]>, HelpText<"Use colors in diagnostics">;
  96. def fdiagnostics_color : Flag<["-"], "fdiagnostics-color">, Group<hlslcomp_Group>,
  97. Flags<[CoreOption, DriverOption]>;
  98. def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group<hlslcomp_Group>;
  99. //def fansi_escape_codes : Flag<["-"], "fansi-escape-codes">, Group<f_Group>, // HLSL Change: disable ANSI escape codes
  100. // Flags<[CoreOption, CC1Option]>, HelpText<"Use ANSI escape codes for diagnostics">;
  101. def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, Group<f_Group>;
  102. def fconstexpr_steps_EQ : Joined<["-"], "fconstexpr-steps=">, Group<f_Group>;
  103. def fconstexpr_backtrace_limit_EQ : Joined<["-"], "fconstexpr-backtrace-limit=">,
  104. Group<f_Group>;
  105. //def fdiagnostics_show_option : Flag<["-"], "fdiagnostics-show-option">, Group<hlslcomp_Group>,
  106. // Flags<[CoreOption]>, HelpText<"Print option name with mappable diagnostics">;
  107. def fdiagnostics_show_category_EQ : Joined<["-"], "fdiagnostics-show-category=">, Group<hlslcomp_Group>;
  108. def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<hlslcomp_Group>, Flags<[CoreOption]>;
  109. def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">,
  110. Group<hlsloptz_Group>;
  111. def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">,
  112. Group<hlsloptz_Group>;
  113. def fassociative_math : Flag<["-"], "fassociative-math">, Group<hlsloptz_Group>;
  114. def fno_associative_math : Flag<["-"], "fno-associative-math">, Group<hlsloptz_Group>;
  115. //def freciprocal_math :
  116. // Flag<["-"], "freciprocal-math">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  117. // HelpText<"Allow division operations to be reassociated">;
  118. def fno_reciprocal_math : Flag<["-"], "fno-reciprocal-math">, Group<hlsloptz_Group>;
  119. def ffinite_math_only : Flag<["-"], "ffinite-math-only">, Group<hlsloptz_Group>, Flags<[CoreOption]>;
  120. def fno_finite_math_only : Flag<["-"], "fno-finite-math-only">, Group<hlsloptz_Group>;
  121. def fsigned_zeros : Flag<["-"], "fsigned-zeros">, Group<hlsloptz_Group>;
  122. //def fno_signed_zeros :
  123. // Flag<["-"], "fno-signed-zeros">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  124. // HelpText<"Allow optimizations that ignore the sign of floating point zeros">;
  125. def fhonor_nans : Flag<["-"], "fhonor-nans">, Group<hlsloptz_Group>;
  126. def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Group<hlsloptz_Group>;
  127. def fhonor_infinities : Flag<["-"], "fhonor-infinities">, Group<hlsloptz_Group>;
  128. def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">, Group<hlsloptz_Group>;
  129. //def ftrapping_math : Flag<["-"], "ftrapping-math">, Group<f_Group>;
  130. //def fno_trapping_math : Flag<["-"], "fno-trapping-math">, Group<f_Group>;
  131. //def ffp_contract : Joined<["-"], "ffp-contract=">, Group<hlsloptz_Group>,
  132. // Flags<[CoreOption]>, HelpText<"Form fused FP ops (e.g. FMAs): fast (everywhere)"
  133. // " | on (according to FP_CONTRACT pragma, default) | off (never fuse)">;
  134. def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group<hlsloptz_Group>;
  135. /*
  136. def fno_caret_diagnostics : Flag<["-"], "fno-caret-diagnostics">, Group<hlslcomp_Group>,
  137. Flags<[CoreOption]>;
  138. def fno_color_diagnostics : Flag<["-"], "fno-color-diagnostics">, Group<hlslcomp_Group>,
  139. Flags<[CoreOption]>;
  140. def fno_diagnostics_color : Flag<["-"], "fno-diagnostics-color">, Group<hlslcomp_Group>,
  141. Flags<[CoreOption, DriverOption]>;
  142. def fno_show_column : Flag<["-"], "fno-show-column">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  143. HelpText<"Do not include column number on diagnostics">;
  144. def fno_spell_checking : Flag<["-"], "fno-spell-checking">, Group<hlslcomp_Group>,
  145. Flags<[CoreOption]>, HelpText<"Disable spell-checking">;
  146. def fshow_column : Flag<["-"], "fshow-column">, Group<hlslcomp_Group>, Flags<[CoreOption]>;
  147. def fshow_source_location : Flag<["-"], "fshow-source-location">, Group<hlslcomp_Group>;
  148. def fspell_checking : Flag<["-"], "fspell-checking">, Group<hlslcomp_Group>;
  149. def fspell_checking_limit_EQ : Joined<["-"], "fspell-checking-limit=">, Group<hlslcomp_Group>;
  150. def funroll_loops : Flag<["-"], "funroll-loops">, Group<hlsloptz_Group>,
  151. HelpText<"Turn on loop unroller">, Flags<[CoreOption]>;
  152. def fno_unroll_loops : Flag<["-"], "fno-unroll-loops">, Group<hlsloptz_Group>,
  153. HelpText<"Turn off loop unroller">, Flags<[CoreOption]>;
  154. def freroll_loops : Flag<["-"], "freroll-loops">, Group<hlsloptz_Group>,
  155. HelpText<"Turn on loop reroller">, Flags<[CoreOption]>;
  156. def fno_reroll_loops : Flag<["-"], "fno-reroll-loops">, Group<hlsloptz_Group>,
  157. HelpText<"Turn off loop reroller">;
  158. */
  159. def help : Flag<["-", "--", "/"], "help">, Flags<[DriverOption]>, Group<hlslcore_Group>,
  160. HelpText<"Display available options">;
  161. /*
  162. def imacros : JoinedOrSeparate<["-", "--"], "imacros">, Group<clang_i_Group>, Flags<[CoreOption]>,
  163. HelpText<"Include macros from file before parsing">, MetaVarName<"<file>">;
  164. def include_ : JoinedOrSeparate<["-", "--"], "include">, Group<clang_i_Group>, EnumName<"include">,
  165. MetaVarName<"<file>">, HelpText<"Include file before parsing">, Flags<[CoreOption]>;
  166. def mllvm : Separate<["-"], "mllvm">, Flags<[CoreOption]>,
  167. HelpText<"Additional arguments to forward to LLVM's option processing">;
  168. def mms_bitfields : Flag<["-"], "mms-bitfields">, Group<m_Group>, Flags<[CoreOption]>,
  169. HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">;
  170. def o : JoinedOrSeparate<["-"], "o">, Flags<[DriverOption, RenderAsInput, CoreOption]>,
  171. HelpText<"Write output to <file>">, MetaVarName<"<file>">;
  172. def time : Flag<["-"], "time">,
  173. HelpText<"Time individual commands">;
  174. // def U : JoinedOrSeparate<["-"], "U">, Group<CompileOnly_Group>, Flags<[CoreOption]>;
  175. def w : Flag<["-"], "w">, HelpText<"Suppress all warnings">, Flags<[CoreOption]>;
  176. def working_directory : JoinedOrSeparate<["-"], "working-directory">, Flags<[CoreOption]>,
  177. MetaVarName<"<dir>">, HelpText<"Resolve file paths relative to the specified directory">;
  178. def working_directory_EQ : Joined<["-"], "working-directory=">, Flags<[CoreOption]>,
  179. MetaVarName<"<dir>">, Alias<working_directory>;
  180. */
  181. // Double dash options, which are usually an alias for one of the previous
  182. // options.
  183. def _all_warnings : Flag<["--"], "all-warnings">, Flags<[CoreOption]>, Alias<Wall>;
  184. def _help_hidden : Flag<["--"], "help-hidden">, Flags<[DriverOption]>;
  185. def _help_question : Flag<["-", "/"], "?">, Flags<[DriverOption]>, Alias<help>;
  186. //////////////////////////////////////////////////////////////////////////////
  187. // New HLSL-specific flags.
  188. def ast_dump : Flag<["-", "/"], "ast-dump">, Flags<[CoreOption, DriverOption, HelpHidden]>,
  189. HelpText<"Dumps the parsed Abstract Syntax Tree.">; // should not be core, but handy workaround until explicit API written
  190. def spirv : Flag<["-"], "spirv">, Flags<[CoreOption, DriverOption, HelpHidden]>, // SPIRV change: temporary solution to support
  191. HelpText<"Generates SPIR-V binary code">; // SPIRV change: SPIR-V gen in a command line tool
  192. def external_lib : Separate<["-", "/"], "external">, Group<hlslcore_Group>, Flags<[DriverOption, HelpHidden]>,
  193. HelpText<"External DLL name to load for compiler support">;
  194. def external_fn : Separate<["-", "/"], "external-fn">, Group<hlslcore_Group>, Flags<[DriverOption, HelpHidden]>,
  195. HelpText<"External function name to load for compiler support">;
  196. def fcgl : Flag<["-", "/"], "fcgl">, Group<hlslcore_Group>, Flags<[CoreOption, HelpHidden]>,
  197. HelpText<"Generate high-level code only">;
  198. def not_use_legacy_cbuf_load : Flag<["-", "/"], "not_use_legacy_cbuf_load">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  199. HelpText<"Do not use legacy cbuffer load">;
  200. def pack_prefix_stable : Flag<["-", "/"], "pack_prefix_stable">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  201. HelpText<"(default) Pack signatures preserving prefix-stable property - appended elements will not disturb placement of prior elements">;
  202. def pack_optimized : Flag<["-", "/"], "pack_optimized">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  203. HelpText<"Optimize signature packing assuming identical signature provided for each connecting stage">;
  204. def hlsl_version : Separate<["-", "/"], "HV">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  205. HelpText<"HLSL version (2016, 2017)">;
  206. def no_warnings : Flag<["-", "/"], "no-warnings">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  207. HelpText<"Suppress warnings">;
  208. def rootsig_define : Separate<["-", "/"], "rootsig-define">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  209. HelpText<"Read root signature from a #define">;
  210. //////////////////////////////////////////////////////////////////////////////
  211. // fxc-based flags that don't match those previously defined.
  212. def target_profile : JoinedOrSeparate<["-", "/"], "T">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  213. HelpText<"Target profile">;
  214. def entrypoint : JoinedOrSeparate<["-", "/"], "E">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  215. HelpText<"Entry point name">;
  216. // /I <include> - already defined above
  217. def _vi : Flag<["-", "/"], "Vi">, Alias<H>, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  218. HelpText<"Display details about the include process.">;
  219. def Od : Flag<["-", "/"], "Od">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  220. HelpText<"Disable optimizations">;
  221. def _SLASH_WX : Flag<["-", "/"], "WX">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  222. HelpText<"Treat warnings as errors">;
  223. def VD : Flag<["-", "/"], "Vd">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  224. HelpText<"Disable validation">;
  225. def _SLASH_Zi : Flag<["-", "/"], "Zi">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  226. HelpText<"Enable debug information">;
  227. def recompile : Flag<["-", "/"], "recompile">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  228. HelpText<"recompile from DXIL container with Debug Info or Debug Info bitcode file">;
  229. def Zpr : Flag<["-", "/"], "Zpr">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  230. HelpText<"Pack matrices in row-major order">;
  231. def Zpc : Flag<["-", "/"], "Zpc">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  232. HelpText<"Pack matrices in column-major order">;
  233. def Zss : Flag<["-", "/"], "Zss">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  234. HelpText<"Build debug name considering source information">;
  235. def Zsb : Flag<["-", "/"], "Zsb">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  236. HelpText<"Build debug name considering only output binary">;
  237. // deprecated /Gpp def Gpp : Flag<["-", "/"], "Gpp">, HelpText<"Force partial precision">;
  238. def Gfa : Flag<["-", "/"], "Gfa">, HelpText<"Avoid flow control constructs">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  239. def Gfp : Flag<["-", "/"], "Gfp">, HelpText<"Prefer flow control constructs">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  240. // /Gdp - disable effect performance mode - unsupported
  241. def Ges : Flag<["-", "/"], "Ges">, HelpText<"Enable strict mode">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  242. def Gis : Flag<["-", "/"], "Gis">, HelpText<"Force IEEE strictness">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  243. def Fo : JoinedOrSeparate<["-", "/"], "Fo">, MetaVarName<"<file>">, HelpText<"Output object file">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  244. // def Fl : JoinedOrSeparate<["-", "/"], "Fl">, MetaVarName<"<file>">, HelpText<"Output a library">;
  245. def Fc : JoinedOrSeparate<["-", "/"], "Fc">, MetaVarName<"<file>">, HelpText<"Output assembly code listing file">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  246. //def Fx : JoinedOrSeparate<["-", "/"], "Fx">, MetaVarName<"<file>">, HelpText<"Output assembly code and hex listing file">;
  247. def Fh : JoinedOrSeparate<["-", "/"], "Fh">, MetaVarName<"<file>">, HelpText<"Output header file containing object code">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  248. def Fe : JoinedOrSeparate<["-", "/"], "Fe">, MetaVarName<"<file>">, HelpText<"Output warnings and errors to the given file">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  249. def Fd : JoinedOrSeparate<["-", "/"], "Fd">, MetaVarName<"<file>">, HelpText<"Write debug information to the given file or directory; trail \\ to auto-generate and imply Qstrip_priv">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  250. def Vn : JoinedOrSeparate<["-", "/"], "Vn">, MetaVarName<"<name>">, HelpText<"Use <name> as variable name in header file">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  251. def Cc : Flag<["-", "/"], "Cc">, HelpText<"Output color coded assembly listings">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  252. def Ni : Flag<["-", "/"], "Ni">, HelpText<"Output instruction numbers in assembly listings">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  253. def No : Flag<["-", "/"], "No">, HelpText<"Output instruction byte offsets in assembly listings">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  254. def Lx : Flag<["-", "/"], "Lx">, HelpText<"Output hexadecimal literals">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  255. // In place of 'E' for clang; fxc uses 'E' for entry point.
  256. def P : Separate<["-", "/"], "P">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  257. HelpText<"Preprocess to file (must be used alone)">;
  258. // @<file> - options response file
  259. def dumpbin : Flag<["-", "/"], "dumpbin">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  260. HelpText<"Load a binary file rather than compiling">;
  261. def Qstrip_reflect : Flag<["-", "/"], "Qstrip_reflect">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  262. HelpText<"Strip reflection data from shader bytecode (must be used with /Fo <file>)">;
  263. def Qstrip_debug : Flag<["-", "/"], "Qstrip_debug">, Flags<[CoreOption]>, Group<hlslutil_Group>,
  264. HelpText<"Strip debug information from 4_0+ shader bytecode (must be used with /Fo <file>)">;
  265. def Qstrip_priv : Flag<["-", "/"], "Qstrip_priv">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  266. HelpText<"Strip private data from shader bytecode (must be used with /Fo <file>)">;
  267. def Qstrip_rootsignature : Flag<["-", "/"], "Qstrip_rootsignature">, Flags<[DriverOption]>, Group<hlslutil_Group>, HelpText<"Strip root signature data from shader bytecode (must be used with /Fo <file>)">;
  268. def setrootsignature : JoinedOrSeparate<["-", "/"], "setrootsignature">, MetaVarName<"<file>">, Flags<[DriverOption]>, Group<hlslutil_Group>, HelpText<"Attach root signature to shader bytecode">;
  269. def extractrootsignature : Flag<["-", "/"], "extractrootsignature">, Flags<[DriverOption]>, Group<hlslutil_Group>, HelpText<"Extract root signature from shader bytecode (must be used with /Fo <file>)">;
  270. def verifyrootsignature : JoinedOrSeparate<["-", "/"], "verifyrootsignature">, MetaVarName<"<file>">, Flags<[DriverOption]>, Group<hlslutil_Group>, HelpText<"Verify shader bytecode with root signature">;
  271. def force_rootsig_ver : JoinedOrSeparate<["-", "/"], "force_rootsig_ver">, Flags<[CoreOption]>, MetaVarName<"<profile>">, Group<hlslcomp_Group>, HelpText<"force root signature version (rootsig_1_1 if omitted)">;
  272. /*
  273. def shtemplate : JoinedOrSeparate<["-", "/"], "shtemplate">, MetaVarName<"<file>">, Group<hlslcomp_Group>,
  274. HelpText<"Template shader file for merging/matching resources">;
  275. def mergeUAVs : JoinedOrSeparate<["-", "/"], "mergeUAVs">, MetaVarName<"<file>">, Group<hlslcomp_Group>,
  276. HelpText<"Merge UAV slots of template shader and current shader">;
  277. def matchUAVs : JoinedOrSeparate<["-", "/"], "matchUAVs">, MetaVarName<"<file>">, Group<hlslcomp_Group>,
  278. HelpText<"Match template shader UAV slots in current shader">;
  279. def res_may_alias : Flag<["-", "/"], "res_may_alias">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  280. HelpText<"Assume that UAVs/SRVs may alias">;
  281. def enable_unbounded_descriptor_tables : Flag<["-", "/"], "enable_unbounded_descriptor_tables">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  282. HelpText<"Enables unbounded descriptor tables">;
  283. */
  284. def all_resources_bound : Flag<["-", "/"], "all_resources_bound">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  285. HelpText<"Enables agressive flattening">;
  286. def setprivate : JoinedOrSeparate<["-", "/"], "setprivate">, Flags<[DriverOption]>, MetaVarName<"<file>">, Group<hlslutil_Group>,
  287. HelpText<"Private data to add to compiled shader blob">;
  288. def getprivate : JoinedOrSeparate<["-", "/"], "getprivate">, Flags<[DriverOption]>, MetaVarName<"<file>">, Group<hlslutil_Group>,
  289. HelpText<"Save private data from shader blob">;
  290. def nologo : Flag<["-", "/"], "nologo">, Group<hlslcore_Group>, Flags<[DriverOption]>,
  291. HelpText<"Suppress copyright message">;
  292. // Also removed: compress, decompress, /Gch (child effect), /Gec (back compat), /Gpp (partial precision)
  293. // /Op - no support for preshaders.