HLSLOptions.td 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  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. // RewriteOption - This is considered a "rewriter" HLSL option.
  24. def RewriteOption : OptionFlag;
  25. //////////////////////////////////////////////////////////////////////////////
  26. // Groups
  27. // Meta-group for options which are only used for compilation,
  28. // and not linking etc.
  29. def CompileOnly_Group : OptionGroup<"<CompileOnly group>">;
  30. def Action_Group : OptionGroup<"<action group>">;
  31. def I_Group : OptionGroup<"<I group>">, Group<CompileOnly_Group>;
  32. def M_Group : OptionGroup<"<M group>">, Group<CompileOnly_Group>;
  33. def T_Group : OptionGroup<"<T group>">;
  34. def O_Group : OptionGroup<"<O group>">, Group<CompileOnly_Group>;
  35. def R_Group : OptionGroup<"<R group>">, Group<CompileOnly_Group>;
  36. def R_value_Group : OptionGroup<"<R (with value) group>">, Group<R_Group>;
  37. def W_Group : OptionGroup<"<W group>">, Group<CompileOnly_Group>, HelpText<"Warning Options">;
  38. def W_value_Group : OptionGroup<"<W (with value) group>">, Group<W_Group>, HelpText<"Warning Options">;
  39. def d_Group : OptionGroup<"<d group>">;
  40. def f_Group : OptionGroup<"<f group>">, Group<CompileOnly_Group>;
  41. def f_clang_Group : OptionGroup<"<f (clang-only) group>">, Group<CompileOnly_Group>;
  42. def g_Group : OptionGroup<"<g group>">;
  43. def g_flags_Group : OptionGroup<"<g flags group>">;
  44. def i_Group : OptionGroup<"<i group>">, Group<CompileOnly_Group>;
  45. def clang_i_Group : OptionGroup<"<clang i group>">, Group<i_Group>;
  46. def m_Group : OptionGroup<"<m group>">, Group<CompileOnly_Group>;
  47. def u_Group : OptionGroup<"<u group>">;
  48. // Developer Driver Options
  49. def internal_Group : OptionGroup<"<clang internal options>">;
  50. def internal_driver_Group : OptionGroup<"<clang driver internal options>">,
  51. Group<internal_Group>, HelpText<"DRIVER OPTIONS">;
  52. def internal_debug_Group :
  53. OptionGroup<"<clang debug/development internal options>">,
  54. Group<internal_Group>, HelpText<"DEBUG/DEVELOPMENT OPTIONS">;
  55. def hlslcomp_Group : OptionGroup<"HLSL Compilation">, HelpText<"Compilation Options">;
  56. def hlsloptz_Group : OptionGroup<"HLSL Optimization">, HelpText<"Optimization Options">;
  57. def hlslutil_Group : OptionGroup<"HLSL Utility">, HelpText<"Utility Options">;
  58. def hlslcore_Group : OptionGroup<"HLSL Core">, HelpText<"Common Options">;
  59. def hlslrewrite_Group : OptionGroup<"HLSL Rewriter">, HelpText<"Rewriter Options">;
  60. def spirv_Group : OptionGroup<"SPIR-V CodeGen">, HelpText<"SPIR-V CodeGen Options">; // SPIRV Change
  61. //////////////////////////////////////////////////////////////////////////////
  62. // Options
  63. // The internal option ID must be a valid C++ identifier and results in a
  64. // hlsl::options::OPT_XX enum constant for XX.
  65. //
  66. // See tools/clang/include/clang/Driver/Options.td for more notes.
  67. // These options are based on those used by clang.
  68. // fxc-based options kept for compatiblity are below.
  69. //
  70. // The general approach is to include only things that are in use, in the
  71. // same order as in Options.td.
  72. def D : JoinedOrSeparate<["-", "/"], "D">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption]>,
  73. HelpText<"Define macro">;
  74. def H : Flag<["-"], "H">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  75. HelpText<"Show header includes and nesting depth">;
  76. def I : JoinedOrSeparate<["-", "/"], "I">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption]>,
  77. HelpText<"Add directory to include search path">;
  78. def O0 : Flag<["-", "/"], "O0">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  79. HelpText<"Optimization Level 0">;
  80. def O1 : Flag<["-", "/"], "O1">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  81. HelpText<"Optimization Level 1">;
  82. def O2 : Flag<["-", "/"], "O2">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  83. HelpText<"Optimization Level 2">;
  84. def O3 : Flag<["-", "/"], "O3">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  85. HelpText<"Optimization Level 3 (Default)">;
  86. def Odump : Flag<["-", "/"], "Odump">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  87. HelpText<"Print the optimizer commands.">;
  88. def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Group<hlslcore_Group>, Flags<[CoreOption]>,
  89. HelpText<"Don't emit warning for unused driver arguments">;
  90. def Wall : Flag<["-"], "Wall">, Group<W_Group>, Flags<[CoreOption]>;
  91. def Wdeprecated : Flag<["-"], "Wdeprecated">, Group<W_Group>, Flags<[CoreOption]>;
  92. def W_Joined : Joined<["-"], "W">, Group<W_Group>, Flags<[CoreOption]>,
  93. MetaVarName<"[no-]<warning>">, HelpText<"Enable/Disable the specified warning">;
  94. def d_Flag : Flag<["-"], "d">, Group<d_Group>;
  95. def d_Joined : Joined<["-"], "d">, Group<d_Group>;
  96. //def fcolor_diagnostics : Flag<["-"], "fcolor-diagnostics">, Group<hlslcomp_Group>,
  97. // Flags<[CoreOption, DriverOption]>, HelpText<"Use colors in diagnostics">;
  98. def fdiagnostics_color : Flag<["-"], "fdiagnostics-color">, Group<hlslcomp_Group>,
  99. Flags<[CoreOption, DriverOption]>;
  100. def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group<hlslcomp_Group>;
  101. //def fansi_escape_codes : Flag<["-"], "fansi-escape-codes">, Group<f_Group>, // HLSL Change: disable ANSI escape codes
  102. // Flags<[CoreOption, CC1Option]>, HelpText<"Use ANSI escape codes for diagnostics">;
  103. def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, Group<f_Group>;
  104. def fconstexpr_steps_EQ : Joined<["-"], "fconstexpr-steps=">, Group<f_Group>;
  105. def fconstexpr_backtrace_limit_EQ : Joined<["-"], "fconstexpr-backtrace-limit=">,
  106. Group<f_Group>;
  107. def fdiagnostics_show_option : Flag<["-"], "fdiagnostics-show-option">, Group<hlslcomp_Group>,
  108. Flags<[CoreOption]>, HelpText<"Print option name with mappable diagnostics">;
  109. def fno_diagnostics_show_option : Flag<["-"], "fno-diagnostics-show-option">, Group<hlslcomp_Group>,
  110. Flags<[CoreOption]>, HelpText<"Do not print option name with mappable diagnostics">;
  111. def fdiagnostics_show_category_EQ : Joined<["-"], "fdiagnostics-show-category=">, Group<hlslcomp_Group>;
  112. def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<hlslcomp_Group>, Flags<[CoreOption]>;
  113. def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">,
  114. Group<hlsloptz_Group>;
  115. def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">,
  116. Group<hlsloptz_Group>;
  117. def fassociative_math : Flag<["-"], "fassociative-math">, Group<hlsloptz_Group>;
  118. def fno_associative_math : Flag<["-"], "fno-associative-math">, Group<hlsloptz_Group>;
  119. //def freciprocal_math :
  120. // Flag<["-"], "freciprocal-math">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  121. // HelpText<"Allow division operations to be reassociated">;
  122. def fno_reciprocal_math : Flag<["-"], "fno-reciprocal-math">, Group<hlsloptz_Group>;
  123. def ffinite_math_only : Flag<["-"], "ffinite-math-only">, Group<hlsloptz_Group>, Flags<[CoreOption]>;
  124. def fno_finite_math_only : Flag<["-"], "fno-finite-math-only">, Group<hlsloptz_Group>;
  125. def fsigned_zeros : Flag<["-"], "fsigned-zeros">, Group<hlsloptz_Group>;
  126. //def fno_signed_zeros :
  127. // Flag<["-"], "fno-signed-zeros">, Group<hlsloptz_Group>, Flags<[CoreOption]>,
  128. // HelpText<"Allow optimizations that ignore the sign of floating point zeros">;
  129. def fhonor_nans : Flag<["-"], "fhonor-nans">, Group<hlsloptz_Group>;
  130. def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Group<hlsloptz_Group>;
  131. def fhonor_infinities : Flag<["-"], "fhonor-infinities">, Group<hlsloptz_Group>;
  132. def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">, Group<hlsloptz_Group>;
  133. //def ftrapping_math : Flag<["-"], "ftrapping-math">, Group<f_Group>;
  134. //def fno_trapping_math : Flag<["-"], "fno-trapping-math">, Group<f_Group>;
  135. //def ffp_contract : Joined<["-"], "ffp-contract=">, Group<hlsloptz_Group>,
  136. // Flags<[CoreOption]>, HelpText<"Form fused FP ops (e.g. FMAs): fast (everywhere)"
  137. // " | on (according to FP_CONTRACT pragma, default) | off (never fuse)">;
  138. def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group<hlsloptz_Group>;
  139. def memdep_block_scan_limit : Separate<["-", "/"], "memdep-block-scan-limit">, Group<hlsloptz_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  140. HelpText<"The number of instructions to scan in a block in memory dependency analysis.">;
  141. def opt_disable : Separate<["-", "/"], "opt-disable">, Group<hlsloptz_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  142. HelpText<"Disable this optimization.">;
  143. def opt_enable : Separate<["-", "/"], "opt-enable">, Group<hlsloptz_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  144. HelpText<"Enable this optimization.">;
  145. def opt_select : MultiArg<["-", "/"], "opt-select", 2>, MetaVarName<"<opt> <variant>">, Group<hlsloptz_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  146. HelpText<"Select this optimization variant.">;
  147. /*
  148. def fno_caret_diagnostics : Flag<["-"], "fno-caret-diagnostics">, Group<hlslcomp_Group>,
  149. Flags<[CoreOption]>;
  150. def fno_color_diagnostics : Flag<["-"], "fno-color-diagnostics">, Group<hlslcomp_Group>,
  151. Flags<[CoreOption]>;
  152. def fno_diagnostics_color : Flag<["-"], "fno-diagnostics-color">, Group<hlslcomp_Group>,
  153. Flags<[CoreOption, DriverOption]>;
  154. def fno_show_column : Flag<["-"], "fno-show-column">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  155. HelpText<"Do not include column number on diagnostics">;
  156. def fno_spell_checking : Flag<["-"], "fno-spell-checking">, Group<hlslcomp_Group>,
  157. Flags<[CoreOption]>, HelpText<"Disable spell-checking">;
  158. def fshow_column : Flag<["-"], "fshow-column">, Group<hlslcomp_Group>, Flags<[CoreOption]>;
  159. def fshow_source_location : Flag<["-"], "fshow-source-location">, Group<hlslcomp_Group>;
  160. def fspell_checking : Flag<["-"], "fspell-checking">, Group<hlslcomp_Group>;
  161. def fspell_checking_limit_EQ : Joined<["-"], "fspell-checking-limit=">, Group<hlslcomp_Group>;
  162. def funroll_loops : Flag<["-"], "funroll-loops">, Group<hlsloptz_Group>,
  163. HelpText<"Turn on loop unroller">, Flags<[CoreOption]>;
  164. def fno_unroll_loops : Flag<["-"], "fno-unroll-loops">, Group<hlsloptz_Group>,
  165. HelpText<"Turn off loop unroller">, Flags<[CoreOption]>;
  166. def freroll_loops : Flag<["-"], "freroll-loops">, Group<hlsloptz_Group>,
  167. HelpText<"Turn on loop reroller">, Flags<[CoreOption]>;
  168. def fno_reroll_loops : Flag<["-"], "fno-reroll-loops">, Group<hlsloptz_Group>,
  169. HelpText<"Turn off loop reroller">;
  170. */
  171. def help : Flag<["-", "--", "/"], "help">, Flags<[DriverOption]>, Group<hlslcore_Group>,
  172. HelpText<"Display available options">;
  173. /*
  174. def imacros : JoinedOrSeparate<["-", "--"], "imacros">, Group<clang_i_Group>, Flags<[CoreOption]>,
  175. HelpText<"Include macros from file before parsing">, MetaVarName<"<file>">;
  176. def include_ : JoinedOrSeparate<["-", "--"], "include">, Group<clang_i_Group>, EnumName<"include">,
  177. MetaVarName<"<file>">, HelpText<"Include file before parsing">, Flags<[CoreOption]>;
  178. def mllvm : Separate<["-"], "mllvm">, Flags<[CoreOption]>,
  179. HelpText<"Additional arguments to forward to LLVM's option processing">;
  180. def mms_bitfields : Flag<["-"], "mms-bitfields">, Group<m_Group>, Flags<[CoreOption]>,
  181. HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">;
  182. def o : JoinedOrSeparate<["-"], "o">, Flags<[DriverOption, RenderAsInput, CoreOption]>,
  183. HelpText<"Write output to <file>">, MetaVarName<"<file>">;
  184. def time : Flag<["-"], "time">,
  185. HelpText<"Time individual commands">;
  186. // def U : JoinedOrSeparate<["-"], "U">, Group<CompileOnly_Group>, Flags<[CoreOption]>;
  187. def w : Flag<["-"], "w">, HelpText<"Suppress all warnings">, Flags<[CoreOption]>;
  188. def working_directory : JoinedOrSeparate<["-"], "working-directory">, Flags<[CoreOption]>,
  189. MetaVarName<"<dir>">, HelpText<"Resolve file paths relative to the specified directory">;
  190. def working_directory_EQ : Joined<["-"], "working-directory=">, Flags<[CoreOption]>,
  191. MetaVarName<"<dir>">, Alias<working_directory>;
  192. */
  193. // Double dash options, which are usually an alias for one of the previous
  194. // options.
  195. def _all_warnings : Flag<["--"], "all-warnings">, Flags<[CoreOption]>, Alias<Wall>;
  196. def _help_hidden : Flag<["--"], "help-hidden">, Flags<[DriverOption]>;
  197. def _help_question : Flag<["-", "/"], "?">, Flags<[DriverOption]>, Alias<help>;
  198. //////////////////////////////////////////////////////////////////////////////
  199. // New HLSL-specific flags.
  200. def ast_dump : Flag<["-", "/"], "ast-dump">, Flags<[CoreOption, DriverOption, HelpHidden]>,
  201. HelpText<"Dumps the parsed Abstract Syntax Tree.">; // should not be core, but handy workaround until explicit API written
  202. def external_lib : Separate<["-", "/"], "external">, Group<hlslcore_Group>, Flags<[DriverOption, RewriteOption, HelpHidden]>,
  203. HelpText<"External DLL name to load for compiler support">;
  204. def external_fn : Separate<["-", "/"], "external-fn">, Group<hlslcore_Group>, Flags<[DriverOption, RewriteOption, HelpHidden]>,
  205. HelpText<"External function name to load for compiler support">;
  206. def fcgl : Flag<["-", "/"], "fcgl">, Group<hlslcore_Group>, Flags<[CoreOption, HelpHidden]>,
  207. HelpText<"Generate high-level code only">;
  208. def preserve_intermediate_values : Flag<["-", "/"], "preserve-intermediate-values">, Group<hlslcore_Group>, Flags<[CoreOption, HelpHidden]>,
  209. HelpText<"Preserve intermediate values to help shader debugging">;
  210. def flegacy_macro_expansion : Flag<["-", "/"], "flegacy-macro-expansion">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption, DriverOption]>,
  211. HelpText<"Expand the operands before performing token-pasting operation (fxc behavior)">;
  212. def flegacy_resource_reservation : Flag<["-", "/"], "flegacy-resource-reservation">, Group<hlslcomp_Group>, Flags<[CoreOption, DriverOption]>,
  213. HelpText<"Reserve unused explicit register assignments for compatibility with shader model 5.0 and below">;
  214. def no_legacy_cbuf_layout : Flag<["-", "/"], "no-legacy-cbuf-layout">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  215. HelpText<"Do not use legacy cbuffer load">;
  216. def not_use_legacy_cbuf_load_ : Flag<["-", "/"], "not_use_legacy_cbuf_load">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  217. HelpText<"Do not use legacy cbuffer load">;
  218. def pack_prefix_stable : Flag<["-", "/"], "pack-prefix-stable">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  219. HelpText<"(default) Pack signatures preserving prefix-stable property - appended elements will not disturb placement of prior elements">;
  220. def pack_prefix_stable_ : Flag<["-", "/"], "pack_prefix_stable">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  221. HelpText<"(default) Pack signatures preserving prefix-stable property - appended elements will not disturb placement of prior elements">;
  222. def pack_optimized : Flag<["-", "/"], "pack-optimized">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  223. HelpText<"Optimize signature packing assuming identical signature provided for each connecting stage">;
  224. def pack_optimized_ : Flag<["-", "/"], "pack_optimized">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  225. HelpText<"Optimize signature packing assuming identical signature provided for each connecting stage">;
  226. def hlsl_version : Separate<["-", "/"], "HV">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption]>,
  227. HelpText<"HLSL version (2016, 2017, 2018). Default is 2018">;
  228. def no_warnings : Flag<["-", "/"], "no-warnings">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption]>,
  229. HelpText<"Suppress warnings">;
  230. def rootsig_define : Separate<["-", "/"], "rootsig-define">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  231. HelpText<"Read root signature from a #define">;
  232. def enable_16bit_types: Flag<["-", "/"], "enable-16bit-types">, Flags<[CoreOption, RewriteOption, DriverOption]>, Group<hlslcomp_Group>,
  233. HelpText<"Enable 16bit types and disable min precision types. Available in HLSL 2018 and shader model 6.2">;
  234. def ignore_line_directives : Flag<["-", "/"], "ignore-line-directives">, HelpText<"Ignore line directives">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  235. def auto_binding_space : Separate<["-", "/"], "auto-binding-space">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  236. HelpText<"Set auto binding space - enables auto resource binding in libraries">;
  237. def exports : Separate<["-", "/"], "exports">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  238. HelpText<"Specify exports when compiling a library: export1[[,export1_clone,...]=internal_name][;...]">;
  239. def export_shaders_only : Flag<["-", "/"], "export-shaders-only">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  240. HelpText<"Only export shaders when compiling a library">;
  241. def default_linkage : Separate<["-", "/"], "default-linkage">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  242. HelpText<"Set default linkage for non-shader functions when compiling or linking to a library target (internal, external)">;
  243. def precise_output : Separate<["-", "/"], "precise-output">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  244. HelpText<"Mark output semantic as precise">;
  245. def encoding : Separate<["-", "/"], "encoding">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption, DriverOption]>,
  246. HelpText<"Set default encoding for text outputs (utf8|utf16) default=utf8">;
  247. def validator_version : Separate<["-", "/"], "validator-version">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  248. HelpText<"Override validator version for module. Format: <major.minor> ; Default: DXIL.dll version or current internal version.">;
  249. def print_after_all : Flag<["-", "/"], "print-after-all">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  250. HelpText<"Print LLVM IR after each pass.">;
  251. def force_zero_store_lifetimes : Flag<["-", "/"], "force-zero-store-lifetimes">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  252. HelpText<"Instead of generating lifetime intrinsics (SM >= 6.6) or storing undef (SM < 6.6), force fall back to storing zeroinitializer.">;
  253. def enable_lifetime_markers : Flag<["-", "/"], "enable-lifetime-markers">, Group<hlslcomp_Group>, Flags<[CoreOption]>,
  254. HelpText<"Enable generation of lifetime markers">;
  255. def disable_lifetime_markers : Flag<["-", "/"], "disable-lifetime-markers">, Group<hlslcomp_Group>, Flags<[CoreOption, HelpHidden]>,
  256. HelpText<"Disable generation of lifetime markers where they would be otherwise (6.6+)">;
  257. def enable_payload_qualifiers : Flag<["-", "/"], "enable-payload-qualifiers">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption, DriverOption]>,
  258. HelpText<"Enables support for payload access qualifiers for raytracing payloads in SM 6.6.">;
  259. def disable_payload_qualifiers : Flag<["-", "/"], "disable-payload-qualifiers">, Group<hlslcomp_Group>, Flags<[CoreOption, RewriteOption, DriverOption]>,
  260. HelpText<"Disables support for payload access qualifiers for raytracing payloads in SM 6.7.">;
  261. def disable_exception_handling : Flag<["-", "/"], "disable-exception-handling">, Group<hlslcomp_Group>, Flags<[DriverOption, HelpHidden]>,
  262. HelpText<"Disable dxc handling of exceptions">;
  263. // Used with API only
  264. def skip_serialization : Flag<["-", "/"], "skip-serialization">, Group<hlslcore_Group>, Flags<[CoreOption, HelpHidden]>,
  265. HelpText<"Return a module interface instead of serialized output">;
  266. // SPIRV Change Starts
  267. def spirv : Flag<["-"], "spirv">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  268. HelpText<"Generate SPIR-V code">;
  269. def fvk_stage_io_order_EQ : Joined<["-"], "fvk-stage-io-order=">, Group<spirv_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  270. HelpText<"Specify Vulkan stage I/O location assignment order">;
  271. def fvk_b_shift : MultiArg<["-"], "fvk-b-shift", 2>, MetaVarName<"<shift> <space>">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  272. HelpText<"Specify Vulkan binding number shift for b-type register">;
  273. def fvk_t_shift : MultiArg<["-"], "fvk-t-shift", 2>, MetaVarName<"<shift> <space>">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  274. HelpText<"Specify Vulkan binding number shift for t-type register">;
  275. def fvk_s_shift : MultiArg<["-"], "fvk-s-shift", 2>, MetaVarName<"<shift> <space>">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  276. HelpText<"Specify Vulkan binding number shift for s-type register">;
  277. def fvk_u_shift : MultiArg<["-"], "fvk-u-shift", 2>, MetaVarName<"<shift> <space>">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  278. HelpText<"Specify Vulkan binding number shift for u-type register">;
  279. def fvk_bind_globals : MultiArg<["-"], "fvk-bind-globals", 2>, MetaVarName<"<binding> <set>">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  280. HelpText<"Specify Vulkan binding number and set number for the $Globals cbuffer">;
  281. def fvk_bind_register : MultiArg<["-"], "fvk-bind-register", 4>, MetaVarName<"<type-number> <space> <binding> <set>">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  282. HelpText<"Specify Vulkan descriptor set and binding for a specific register">;
  283. def vkbr : MultiArg<["-"], "vkbr", 4>, Flags<[CoreOption, DriverOption]>, Alias<fvk_bind_register>;
  284. def fvk_invert_y: Flag<["-"], "fvk-invert-y">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  285. HelpText<"Negate SV_Position.y before writing to stage output in VS/DS/GS to accommodate Vulkan's coordinate system">;
  286. def fvk_use_dx_position_w: Flag<["-"], "fvk-use-dx-position-w">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  287. HelpText<"Reciprocate SV_Position.w after reading from stage input in PS to accommodate the difference between Vulkan and DirectX">;
  288. def fvk_support_nonzero_base_instance: Flag<["-"], "fvk-support-nonzero-base-instance">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  289. HelpText<"Follow Vulkan spec to use gl_BaseInstance as the first vertex instance, which makes SV_InstanceID = gl_InstanceIndex - gl_BaseInstance (without this option, SV_InstanceID = gl_InstanceIndex)">;
  290. def fvk_use_gl_layout: Flag<["-"], "fvk-use-gl-layout">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  291. HelpText<"Use strict OpenGL std140/std430 memory layout for Vulkan resources">;
  292. def fvk_use_dx_layout: Flag<["-"], "fvk-use-dx-layout">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  293. HelpText<"Use DirectX memory layout for Vulkan resources">;
  294. def fvk_use_scalar_layout: Flag<["-"], "fvk-use-scalar-layout">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  295. HelpText<"Use scalar memory layout for Vulkan resources">;
  296. def fspv_reflect: Flag<["-"], "fspv-reflect">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  297. HelpText<"Emit additional SPIR-V instructions to aid reflection">;
  298. def fspv_debug_EQ : Joined<["-"], "fspv-debug=">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  299. HelpText<"Specify whitelist of debug info category (file -> source -> line, tool)">;
  300. def fspv_extension_EQ : Joined<["-"], "fspv-extension=">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  301. HelpText<"Specify SPIR-V extension permitted to use">;
  302. def fspv_target_env_EQ : Joined<["-"], "fspv-target-env=">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  303. HelpText<"Specify the target environment: vulkan1.0 (default) or vulkan1.1">;
  304. def fspv_flatten_resource_arrays: Flag<["-"], "fspv-flatten-resource-arrays">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  305. HelpText<"Flatten arrays of resources so each array element takes one binding number">;
  306. def fvk_auto_shift_bindings: Flag<["-"], "fvk-auto-shift-bindings">, Group<spirv_Group>, Flags<[CoreOption, DriverOption]>,
  307. HelpText<"Apply fvk-*-shift to resources without an explicit register assignment.">;
  308. def Wno_vk_ignored_features : Joined<["-"], "Wno-vk-ignored-features">, Group<spirv_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  309. HelpText<"Do not emit warnings for ingored features resulting from no Vulkan support">;
  310. def Wno_vk_emulated_features : Joined<["-"], "Wno-vk-emulated-features">, Group<spirv_Group>, Flags<[CoreOption, DriverOption, HelpHidden]>,
  311. HelpText<"Do not emit warnings for emulated features resulting from no direct mapping">;
  312. def Oconfig : CommaJoined<["-"], "Oconfig=">, Group<spirv_Group>, Flags<[CoreOption]>,
  313. HelpText<"Specify a comma-separated list of SPIRV-Tools passes to customize optimization configuration (see http://khr.io/hlsl2spirv#optimization)">;
  314. // SPIRV Change Ends
  315. //////////////////////////////////////////////////////////////////////////////
  316. // fxc-based flags that don't match those previously defined.
  317. def target_profile : JoinedOrSeparate<["-", "/"], "T">, Flags<[CoreOption]>, Group<hlslcomp_Group>, MetaVarName<"<profile>">,
  318. /* <py::lines('VALRULE-TEXT')>hctdb_instrhelp.get_target_profiles()</py>*/
  319. // VALRULE-TEXT:BEGIN
  320. HelpText<"Set target profile. \n\t<profile>: ps_6_0, ps_6_1, ps_6_2, ps_6_3, ps_6_4, ps_6_5, ps_6_6, \n\t\t vs_6_0, vs_6_1, vs_6_2, vs_6_3, vs_6_4, vs_6_5, vs_6_6, \n\t\t gs_6_0, gs_6_1, gs_6_2, gs_6_3, gs_6_4, gs_6_5, gs_6_6, \n\t\t hs_6_0, hs_6_1, hs_6_2, hs_6_3, hs_6_4, hs_6_5, hs_6_6, \n\t\t ds_6_0, ds_6_1, ds_6_2, ds_6_3, ds_6_4, ds_6_5, ds_6_6, \n\t\t cs_6_0, cs_6_1, cs_6_2, cs_6_3, cs_6_4, cs_6_5, cs_6_6, \n\t\t lib_6_1, lib_6_2, lib_6_3, lib_6_4, lib_6_5, lib_6_6, \n\t\t ms_6_5, ms_6_6, \n\t\t as_6_5, as_6_6, \n\t\t ">;
  321. // VALRULE-TEXT:END
  322. def entrypoint : JoinedOrSeparate<["-", "/"], "E">, Flags<[CoreOption, RewriteOption]>, Group<hlslcomp_Group>,
  323. HelpText<"Entry point name">;
  324. // /I <include> - already defined above
  325. def _vi : Flag<["-", "/"], "Vi">, Alias<H>, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  326. HelpText<"Display details about the include process.">;
  327. def Od : Flag<["-", "/"], "Od">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  328. HelpText<"Disable optimizations">;
  329. def _SLASH_WX : Flag<["-", "/"], "WX">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  330. HelpText<"Treat warnings as errors">;
  331. def VD : Flag<["-", "/"], "Vd">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  332. HelpText<"Disable validation">;
  333. def _SLASH_Zi : Flag<["-", "/"], "Zi">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  334. HelpText<"Enable debug information">;
  335. def recompile : Flag<["-", "/"], "recompile">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  336. HelpText<"recompile from DXIL container with Debug Info or Debug Info bitcode file">;
  337. def Zpr : Flag<["-", "/"], "Zpr">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  338. HelpText<"Pack matrices in row-major order">;
  339. def Zpc : Flag<["-", "/"], "Zpc">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  340. HelpText<"Pack matrices in column-major order">;
  341. def Zss : Flag<["-", "/"], "Zss">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  342. HelpText<"Compute Shader Hash considering source information">;
  343. def Zsb : Flag<["-", "/"], "Zsb">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  344. HelpText<"Compute Shader Hash considering only output binary">;
  345. // deprecated /Gpp def Gpp : Flag<["-", "/"], "Gpp">, HelpText<"Force partial precision">;
  346. def Gfa : Flag<["-", "/"], "Gfa">, HelpText<"Avoid flow control constructs">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  347. def Gfp : Flag<["-", "/"], "Gfp">, HelpText<"Prefer flow control constructs">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  348. // /Gdp - disable effect performance mode - unsupported
  349. def Gec : Flag<["-", "/"], "Gec">, HelpText<"Enable backward compatibility mode">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  350. def Ges : Flag<["-", "/"], "Ges">, HelpText<"Enable strict mode">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  351. def Gis : Flag<["-", "/"], "Gis">, HelpText<"Force IEEE strictness">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  352. def denorm : JoinedOrSeparate<["-", "/"], "denorm">, HelpText<"select denormal value options (any, preserve, ftz). any is the default.">, Flags<[CoreOption]>, Group<hlslcomp_Group>;
  353. def Fo : JoinedOrSeparate<["-", "/"], "Fo">, MetaVarName<"<file>">, HelpText<"Output object file">, Flags<[CoreOption, RewriteOption, DriverOption]>, Group<hlslcomp_Group>;
  354. // def Fl : JoinedOrSeparate<["-", "/"], "Fl">, MetaVarName<"<file>">, HelpText<"Output a library">;
  355. def Fc : JoinedOrSeparate<["-", "/"], "Fc">, MetaVarName<"<file>">, HelpText<"Output assembly code listing file">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  356. //def Fx : JoinedOrSeparate<["-", "/"], "Fx">, MetaVarName<"<file>">, HelpText<"Output assembly code and hex listing file">;
  357. def Fh : JoinedOrSeparate<["-", "/"], "Fh">, MetaVarName<"<file>">, HelpText<"Output header file containing object code">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  358. def Fe : JoinedOrSeparate<["-", "/"], "Fe">, MetaVarName<"<file>">, HelpText<"Output warnings and errors to the given file">, Flags<[CoreOption, DriverOption]>, Group<hlslcomp_Group>;
  359. def Fd : JoinedOrSeparate<["-", "/"], "Fd">, MetaVarName<"<file>">,
  360. HelpText<"Write debug information to the given file, or automatically named file in directory when ending in '\\'">,
  361. Flags<[CoreOption, DriverOption]>, Group<hlslcomp_Group>;
  362. def Fre : Separate<["-", "/"], "Fre">, MetaVarName<"<file>">, HelpText<"Output reflection to the given file">, Flags<[CoreOption, DriverOption]>, Group<hlslcomp_Group>;
  363. def Frs : Separate<["-", "/"], "Frs">, MetaVarName<"<file>">, HelpText<"Output root signature to the given file">, Flags<[CoreOption, DriverOption]>, Group<hlslcomp_Group>;
  364. def Fsh : Separate<["-", "/"], "Fsh">, MetaVarName<"<file>">, HelpText<"Output shader hash to the given file">, Flags<[CoreOption, DriverOption]>, Group<hlslcomp_Group>;
  365. def Vn : JoinedOrSeparate<["-", "/"], "Vn">, MetaVarName<"<name>">, HelpText<"Use <name> as variable name in header file">, Flags<[DriverOption]>, Group<hlslcomp_Group>;
  366. def Cc : Flag<["-", "/"], "Cc">, HelpText<"Output color coded assembly listings">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  367. def Ni : Flag<["-", "/"], "Ni">, HelpText<"Output instruction numbers in assembly listings">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  368. def No : Flag<["-", "/"], "No">, HelpText<"Output instruction byte offsets in assembly listings">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  369. def Lx : Flag<["-", "/"], "Lx">, HelpText<"Output hexadecimal literals">, Group<hlslcomp_Group>, Flags<[DriverOption]>;
  370. // In place of 'E' for clang; fxc uses 'E' for entry point.
  371. def P : Separate<["-", "/"], "P">, Flags<[CoreOption, DriverOption]>, Group<hlslutil_Group>,
  372. HelpText<"Preprocess to file (must be used alone)">;
  373. // @<file> - options response file
  374. def dumpbin : Flag<["-", "/"], "dumpbin">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  375. HelpText<"Load a binary file rather than compiling">;
  376. def link : Flag<["-", "/"], "link">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  377. HelpText<"Link list of libraries provided in <inputs> argument separated by ';'">;
  378. def Qstrip_reflect : Flag<["-", "/"], "Qstrip_reflect">, Flags<[CoreOption, DriverOption]>, Group<hlslutil_Group>,
  379. HelpText<"Strip reflection data from shader bytecode (must be used with /Fo <file>)">;
  380. def Qstrip_debug : Flag<["-", "/"], "Qstrip_debug">, Flags<[CoreOption, DriverOption]>, Group<hlslutil_Group>,
  381. HelpText<"Strip debug information from 4_0+ shader bytecode (must be used with /Fo <file>)">;
  382. def Qembed_debug : Flag<["-", "/"], "Qembed_debug">, Flags<[CoreOption]>, Group<hlslutil_Group>,
  383. HelpText<"Embed PDB in shader container (must be used with /Zi)">;
  384. def Qstrip_priv : Flag<["-", "/"], "Qstrip_priv">, Flags<[DriverOption]>, Group<hlslutil_Group>,
  385. HelpText<"Strip private data from shader bytecode (must be used with /Fo <file>)">;
  386. def Qsource_in_debug_module : Flag<["-", "/"], "Qsource_in_debug_module">, Flags<[CoreOption, HelpHidden]>, Group<hlslutil_Group>,
  387. HelpText<"Generate old PDB format.">;
  388. def Zs : Flag<["-", "/"], "Zs">, Flags<[CoreOption]>, Group<hlslutil_Group>,
  389. HelpText<"Generate small PDB with just sources and compile options.">;
  390. def Qpdb_in_private : Flag<["-", "/"], "Qpdb_in_private">, Flags<[CoreOption, HelpHidden]>, Group<hlslutil_Group>,
  391. HelpText<"Store PDB in private user data.">;
  392. def Qstrip_rootsignature : Flag<["-", "/"], "Qstrip_rootsignature">, Flags<[CoreOption, DriverOption]>, Group<hlslutil_Group>, HelpText<"Strip root signature data from shader bytecode (must be used with /Fo <file>)">;
  393. def setrootsignature : JoinedOrSeparate<["-", "/"], "setrootsignature">, MetaVarName<"<file>">, Flags<[CoreOption, DriverOption]>, Group<hlslutil_Group>, HelpText<"Attach root signature to shader bytecode">;
  394. def extractrootsignature : Flag<["-", "/"], "extractrootsignature">, Flags<[DriverOption]>, Group<hlslutil_Group>, HelpText<"Extract root signature from shader bytecode (must be used with /Fo <file>)">;
  395. def verifyrootsignature : JoinedOrSeparate<["-", "/"], "verifyrootsignature">, MetaVarName<"<file>">, Flags<[DriverOption]>, Group<hlslutil_Group>, HelpText<"Verify shader bytecode with root signature">;
  396. 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)">;
  397. def force_rootsig_ver_ : JoinedOrSeparate<["-", "/"], "force_rootsig_ver">, Flags<[CoreOption, HelpHidden]>, MetaVarName<"<profile>">, Group<hlslcomp_Group>, HelpText<"force root signature version (rootsig_1_1 if omitted)">;
  398. // Temporary TEST options, until reflection inside DXIL part can always be stripped
  399. def Qkeep_reflect_in_dxil : Flag<["-", "/"], "Qkeep_reflect_in_dxil">,
  400. Flags<[CoreOption, HelpHidden]>, Group<hlslutil_Group>,
  401. HelpText<"Keep reflection data in shader bytecode">;
  402. def Qstrip_reflect_from_dxil : Flag<["-", "/"], "Qstrip_reflect_from_dxil">,
  403. Flags<[CoreOption, HelpHidden]>, Group<hlslutil_Group>,
  404. HelpText<"Strip reflection data from shader bytecode (must be used with /Fo <file>)">;
  405. /*
  406. def shtemplate : JoinedOrSeparate<["-", "/"], "shtemplate">, MetaVarName<"<file>">, Group<hlslcomp_Group>,
  407. HelpText<"Template shader file for merging/matching resources">;
  408. def mergeUAVs : JoinedOrSeparate<["-", "/"], "mergeUAVs">, MetaVarName<"<file>">, Group<hlslcomp_Group>,
  409. HelpText<"Merge UAV slots of template shader and current shader">;
  410. def matchUAVs : JoinedOrSeparate<["-", "/"], "matchUAVs">, MetaVarName<"<file>">, Group<hlslcomp_Group>,
  411. HelpText<"Match template shader UAV slots in current shader">;
  412. def enable_unbounded_descriptor_tables : Flag<["-", "/"], "enable_unbounded_descriptor_tables">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  413. HelpText<"Enables unbounded descriptor tables">;
  414. */
  415. def res_may_alias : Flag<["-", "/"], "res-may-alias">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  416. HelpText<"Assume that UAVs/SRVs may alias">;
  417. def res_may_alias_ : Flag<["-", "/"], "res_may_alias">, Flags<[CoreOption, HelpHidden]>, Group<hlslcomp_Group>,
  418. HelpText<"Assume that UAVs/SRVs may alias">;
  419. def all_resources_bound : Flag<["-", "/"], "all-resources-bound">, Flags<[CoreOption]>, Group<hlslcomp_Group>,
  420. HelpText<"Enables agressive flattening">;
  421. def all_resources_bound_ : Flag<["-", "/"], "all_resources_bound">, Flags<[CoreOption, HelpHidden]>, Group<hlslcomp_Group>,
  422. HelpText<"Enables agressive flattening">;
  423. def setprivate : JoinedOrSeparate<["-", "/"], "setprivate">, Flags<[DriverOption]>, MetaVarName<"<file>">, Group<hlslutil_Group>,
  424. HelpText<"Private data to add to compiled shader blob">;
  425. def getprivate : JoinedOrSeparate<["-", "/"], "getprivate">, Flags<[DriverOption]>, MetaVarName<"<file>">, Group<hlslutil_Group>,
  426. HelpText<"Save private data from shader blob">;
  427. def nologo : Flag<["-", "/"], "nologo">, Group<hlslcore_Group>, Flags<[DriverOption]>,
  428. HelpText<"Suppress copyright message">;
  429. //////////////////////////////////////////////////////////////////////////////
  430. // Rewriter Options
  431. def rw_unchanged : Flag<["-", "/"], "unchanged">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  432. HelpText<"Rewrite HLSL, without changes.">;
  433. def rw_skip_function_body : Flag<["-", "/"], "skip-fn-body">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  434. HelpText<"Translate function definitions to declarations">;
  435. def rw_skip_static : Flag<["-", "/"], "skip-static">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  436. HelpText<"Remove static functions and globals when used with -skip-fn-body">;
  437. def rw_global_extern_by_default : Flag<["-", "/"], "global-extern-by-default">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  438. HelpText<"Set extern on non-static globals">;
  439. def rw_keep_user_macro : Flag<["-", "/"], "keep-user-macro">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  440. HelpText<"Write out user defines after rewritten HLSL">;
  441. def rw_extract_entry_uniforms : Flag<["-", "/"], "extract-entry-uniforms">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  442. HelpText<"Move uniform parameters from entry point to global scope">;
  443. def rw_remove_unused_globals : Flag<["-", "/"], "remove-unused-globals">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  444. HelpText<"Remove unused static globals and functions">;
  445. def rw_remove_unused_functions : Flag<["-", "/"], "remove-unused-functions">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  446. HelpText<"Remove unused functions and types">;
  447. def rw_line_directive : Flag<["-", "/"], "line-directive">, Group<hlslrewrite_Group>, Flags<[RewriteOption]>,
  448. HelpText<"Add line directive">;
  449. // Also removed: compress, decompress, /Gch (child effect), /Gpp (partial precision)
  450. // /Op - no support for preshaders.