//===--- HLSLOptions.td - Options for HLSL --------------------------------===// /////////////////////////////////////////////////////////////////////////////// // // // HLSLOptions.td // // Copyright (C) Microsoft Corporation. All rights reserved. // // This file is distributed under the University of Illinois Open Source // // License. See LICENSE.TXT for details. // // // // This file defines the options accepted by HLSL. // // // /////////////////////////////////////////////////////////////////////////////// // Include the common option parsing interfaces. // include "llvm/Option/OptParser.td" ////////////////////////////////////////////////////////////////////////////// // Flags // DriverOption - The option is a "driver" option, and should not be forwarded // to other tools. def DriverOption : OptionFlag; // CoreOption - This is considered a "core" HLSL option. def CoreOption : OptionFlag; // ISenseOption - This option is only supported for IntelliSense. def ISenseOption : OptionFlag; // RewriteOption - This is considered a "rewriter" HLSL option. def RewriteOption : OptionFlag; ////////////////////////////////////////////////////////////////////////////// // Groups // Meta-group for options which are only used for compilation, // and not linking etc. def CompileOnly_Group : OptionGroup<"">; def Action_Group : OptionGroup<"">; def I_Group : OptionGroup<"">, Group; def M_Group : OptionGroup<"">, Group; def T_Group : OptionGroup<"">; def O_Group : OptionGroup<"">, Group; def R_Group : OptionGroup<"">, Group; def R_value_Group : OptionGroup<"">, Group; def W_Group : OptionGroup<"">, Group, HelpText<"Warning Options">; def W_value_Group : OptionGroup<"">, Group, HelpText<"Warning Options">; def d_Group : OptionGroup<"">; def f_Group : OptionGroup<"">, Group; def f_clang_Group : OptionGroup<"">, Group; def g_Group : OptionGroup<"">; def g_flags_Group : OptionGroup<"">; def i_Group : OptionGroup<"">, Group; def clang_i_Group : OptionGroup<"">, Group; def m_Group : OptionGroup<"">, Group; def u_Group : OptionGroup<"">; // Developer Driver Options def internal_Group : OptionGroup<"">; def internal_driver_Group : OptionGroup<"">, Group, HelpText<"DRIVER OPTIONS">; def internal_debug_Group : OptionGroup<"">, Group, HelpText<"DEBUG/DEVELOPMENT OPTIONS">; def hlslcomp_Group : OptionGroup<"HLSL Compilation">, HelpText<"Compilation Options">; def hlsloptz_Group : OptionGroup<"HLSL Optimization">, HelpText<"Optimization Options">; def hlslutil_Group : OptionGroup<"HLSL Utility">, HelpText<"Utility Options">; def hlslcore_Group : OptionGroup<"HLSL Core">, HelpText<"Common Options">; def hlslrewrite_Group : OptionGroup<"HLSL Rewriter">, HelpText<"Rewriter Options">; def spirv_Group : OptionGroup<"SPIR-V CodeGen">, HelpText<"SPIR-V CodeGen Options">; // SPIRV Change ////////////////////////////////////////////////////////////////////////////// // Options // The internal option ID must be a valid C++ identifier and results in a // hlsl::options::OPT_XX enum constant for XX. // // See tools/clang/include/clang/Driver/Options.td for more notes. // These options are based on those used by clang. // fxc-based options kept for compatiblity are below. // // The general approach is to include only things that are in use, in the // same order as in Options.td. def D : JoinedOrSeparate<["-", "/"], "D">, Group, Flags<[CoreOption, RewriteOption]>, HelpText<"Define macro">; def H : Flag<["-"], "H">, Flags<[CoreOption]>, Group, HelpText<"Show header includes and nesting depth">; def I : JoinedOrSeparate<["-", "/"], "I">, Group, Flags<[CoreOption, RewriteOption]>, HelpText<"Add directory to include search path">; def O0 : Flag<["-", "/"], "O0">, Group, Flags<[CoreOption]>, HelpText<"Optimization Level 0">; def O1 : Flag<["-", "/"], "O1">, Group, Flags<[CoreOption]>, HelpText<"Optimization Level 1">; def O2 : Flag<["-", "/"], "O2">, Group, Flags<[CoreOption]>, HelpText<"Optimization Level 2">; def O3 : Flag<["-", "/"], "O3">, Group, Flags<[CoreOption]>, HelpText<"Optimization Level 3 (Default)">; def Odump : Flag<["-", "/"], "Odump">, Group, Flags<[CoreOption]>, HelpText<"Print the optimizer commands.">; def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Group, Flags<[CoreOption]>, HelpText<"Don't emit warning for unused driver arguments">; def Wall : Flag<["-"], "Wall">, Group, Flags<[CoreOption]>; def Wdeprecated : Flag<["-"], "Wdeprecated">, Group, Flags<[CoreOption]>; def W_Joined : Joined<["-"], "W">, Group, Flags<[CoreOption]>, MetaVarName<"[no-]">, HelpText<"Enable/Disable the specified warning">; def d_Flag : Flag<["-"], "d">, Group; def d_Joined : Joined<["-"], "d">, Group; //def fcolor_diagnostics : Flag<["-"], "fcolor-diagnostics">, Group, // Flags<[CoreOption, DriverOption]>, HelpText<"Use colors in diagnostics">; def fdiagnostics_color : Flag<["-"], "fdiagnostics-color">, Group, Flags<[CoreOption, DriverOption]>; def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group; //def fansi_escape_codes : Flag<["-"], "fansi-escape-codes">, Group, // HLSL Change: disable ANSI escape codes // Flags<[CoreOption, CC1Option]>, HelpText<"Use ANSI escape codes for diagnostics">; def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, Group; def fconstexpr_steps_EQ : Joined<["-"], "fconstexpr-steps=">, Group; def fconstexpr_backtrace_limit_EQ : Joined<["-"], "fconstexpr-backtrace-limit=">, Group; def fdiagnostics_show_option : Flag<["-"], "fdiagnostics-show-option">, Group, Flags<[CoreOption]>, HelpText<"Print option name with mappable diagnostics">; def fno_diagnostics_show_option : Flag<["-"], "fno-diagnostics-show-option">, Group, Flags<[CoreOption]>, HelpText<"Do not print option name with mappable diagnostics">; def fdiagnostics_show_category_EQ : Joined<["-"], "fdiagnostics-show-category=">, Group; def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group, Flags<[CoreOption]>; def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">, Group; def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">, Group; def fassociative_math : Flag<["-"], "fassociative-math">, Group; def fno_associative_math : Flag<["-"], "fno-associative-math">, Group; //def freciprocal_math : // Flag<["-"], "freciprocal-math">, Group, Flags<[CoreOption]>, // HelpText<"Allow division operations to be reassociated">; def fno_reciprocal_math : Flag<["-"], "fno-reciprocal-math">, Group; def ffinite_math_only : Flag<["-"], "ffinite-math-only">, Group, Flags<[CoreOption]>; def fno_finite_math_only : Flag<["-"], "fno-finite-math-only">, Group; def fsigned_zeros : Flag<["-"], "fsigned-zeros">, Group; //def fno_signed_zeros : // Flag<["-"], "fno-signed-zeros">, Group, Flags<[CoreOption]>, // HelpText<"Allow optimizations that ignore the sign of floating point zeros">; def fhonor_nans : Flag<["-"], "fhonor-nans">, Group; def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Group; def fhonor_infinities : Flag<["-"], "fhonor-infinities">, Group; def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">, Group; //def ftrapping_math : Flag<["-"], "ftrapping-math">, Group; //def fno_trapping_math : Flag<["-"], "fno-trapping-math">, Group; //def ffp_contract : Joined<["-"], "ffp-contract=">, Group, // Flags<[CoreOption]>, HelpText<"Form fused FP ops (e.g. FMAs): fast (everywhere)" // " | on (according to FP_CONTRACT pragma, default) | off (never fuse)">; def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group; def memdep_block_scan_limit : Separate<["-", "/"], "memdep-block-scan-limit">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"The number of instructions to scan in a block in memory dependency analysis.">; def opt_disable : Separate<["-", "/"], "opt-disable">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Disable this optimization.">; def opt_enable : Separate<["-", "/"], "opt-enable">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Enable this optimization.">; def opt_select : MultiArg<["-", "/"], "opt-select", 2>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Select this optimization variant.">; /* def fno_caret_diagnostics : Flag<["-"], "fno-caret-diagnostics">, Group, Flags<[CoreOption]>; def fno_color_diagnostics : Flag<["-"], "fno-color-diagnostics">, Group, Flags<[CoreOption]>; def fno_diagnostics_color : Flag<["-"], "fno-diagnostics-color">, Group, Flags<[CoreOption, DriverOption]>; def fno_show_column : Flag<["-"], "fno-show-column">, Group, Flags<[CoreOption]>, HelpText<"Do not include column number on diagnostics">; def fno_spell_checking : Flag<["-"], "fno-spell-checking">, Group, Flags<[CoreOption]>, HelpText<"Disable spell-checking">; def fshow_column : Flag<["-"], "fshow-column">, Group, Flags<[CoreOption]>; def fshow_source_location : Flag<["-"], "fshow-source-location">, Group; def fspell_checking : Flag<["-"], "fspell-checking">, Group; def fspell_checking_limit_EQ : Joined<["-"], "fspell-checking-limit=">, Group; def funroll_loops : Flag<["-"], "funroll-loops">, Group, HelpText<"Turn on loop unroller">, Flags<[CoreOption]>; def fno_unroll_loops : Flag<["-"], "fno-unroll-loops">, Group, HelpText<"Turn off loop unroller">, Flags<[CoreOption]>; def freroll_loops : Flag<["-"], "freroll-loops">, Group, HelpText<"Turn on loop reroller">, Flags<[CoreOption]>; def fno_reroll_loops : Flag<["-"], "fno-reroll-loops">, Group, HelpText<"Turn off loop reroller">; */ def help : Flag<["-", "--", "/"], "help">, Flags<[DriverOption]>, Group, HelpText<"Display available options">; /* def imacros : JoinedOrSeparate<["-", "--"], "imacros">, Group, Flags<[CoreOption]>, HelpText<"Include macros from file before parsing">, MetaVarName<"">; def include_ : JoinedOrSeparate<["-", "--"], "include">, Group, EnumName<"include">, MetaVarName<"">, HelpText<"Include file before parsing">, Flags<[CoreOption]>; def mllvm : Separate<["-"], "mllvm">, Flags<[CoreOption]>, HelpText<"Additional arguments to forward to LLVM's option processing">; def mms_bitfields : Flag<["-"], "mms-bitfields">, Group, Flags<[CoreOption]>, HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">; def o : JoinedOrSeparate<["-"], "o">, Flags<[DriverOption, RenderAsInput, CoreOption]>, HelpText<"Write output to ">, MetaVarName<"">; def time : Flag<["-"], "time">, HelpText<"Time individual commands">; // def U : JoinedOrSeparate<["-"], "U">, Group, Flags<[CoreOption]>; def w : Flag<["-"], "w">, HelpText<"Suppress all warnings">, Flags<[CoreOption]>; def working_directory : JoinedOrSeparate<["-"], "working-directory">, Flags<[CoreOption]>, MetaVarName<"">, HelpText<"Resolve file paths relative to the specified directory">; def working_directory_EQ : Joined<["-"], "working-directory=">, Flags<[CoreOption]>, MetaVarName<"">, Alias; */ // Double dash options, which are usually an alias for one of the previous // options. def _all_warnings : Flag<["--"], "all-warnings">, Flags<[CoreOption]>, Alias; def _help_hidden : Flag<["--"], "help-hidden">, Flags<[DriverOption]>; def _help_question : Flag<["-", "/"], "?">, Flags<[DriverOption]>, Alias; ////////////////////////////////////////////////////////////////////////////// // New HLSL-specific flags. def ast_dump : Flag<["-", "/"], "ast-dump">, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Dumps the parsed Abstract Syntax Tree.">; // should not be core, but handy workaround until explicit API written def external_lib : Separate<["-", "/"], "external">, Group, Flags<[DriverOption, RewriteOption, HelpHidden]>, HelpText<"External DLL name to load for compiler support">; def external_fn : Separate<["-", "/"], "external-fn">, Group, Flags<[DriverOption, RewriteOption, HelpHidden]>, HelpText<"External function name to load for compiler support">; def fcgl : Flag<["-", "/"], "fcgl">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Generate high-level code only">; def preserve_intermediate_values : Flag<["-", "/"], "preserve-intermediate-values">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Preserve intermediate values to help shader debugging">; def flegacy_macro_expansion : Flag<["-", "/"], "flegacy-macro-expansion">, Group, Flags<[CoreOption, RewriteOption, DriverOption]>, HelpText<"Expand the operands before performing token-pasting operation (fxc behavior)">; def flegacy_resource_reservation : Flag<["-", "/"], "flegacy-resource-reservation">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Reserve unused explicit register assignments for compatibility with shader model 5.0 and below">; def no_legacy_cbuf_layout : Flag<["-", "/"], "no-legacy-cbuf-layout">, Group, Flags<[CoreOption]>, HelpText<"Do not use legacy cbuffer load">; def not_use_legacy_cbuf_load_ : Flag<["-", "/"], "not_use_legacy_cbuf_load">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Do not use legacy cbuffer load">; def pack_prefix_stable : Flag<["-", "/"], "pack-prefix-stable">, Group, Flags<[CoreOption]>, HelpText<"(default) Pack signatures preserving prefix-stable property - appended elements will not disturb placement of prior elements">; def pack_prefix_stable_ : Flag<["-", "/"], "pack_prefix_stable">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"(default) Pack signatures preserving prefix-stable property - appended elements will not disturb placement of prior elements">; def pack_optimized : Flag<["-", "/"], "pack-optimized">, Group, Flags<[CoreOption]>, HelpText<"Optimize signature packing assuming identical signature provided for each connecting stage">; def pack_optimized_ : Flag<["-", "/"], "pack_optimized">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Optimize signature packing assuming identical signature provided for each connecting stage">; def hlsl_version : Separate<["-", "/"], "HV">, Group, Flags<[CoreOption, RewriteOption]>, HelpText<"HLSL version (2016, 2017, 2018). Default is 2018">; def no_warnings : Flag<["-", "/"], "no-warnings">, Group, Flags<[CoreOption, RewriteOption]>, HelpText<"Suppress warnings">; def rootsig_define : Separate<["-", "/"], "rootsig-define">, Group, Flags<[CoreOption]>, HelpText<"Read root signature from a #define">; def enable_16bit_types: Flag<["-", "/"], "enable-16bit-types">, Flags<[CoreOption, RewriteOption, DriverOption]>, Group, HelpText<"Enable 16bit types and disable min precision types. Available in HLSL 2018 and shader model 6.2">; def ignore_line_directives : Flag<["-", "/"], "ignore-line-directives">, HelpText<"Ignore line directives">, Flags<[CoreOption]>, Group; def auto_binding_space : Separate<["-", "/"], "auto-binding-space">, Group, Flags<[CoreOption]>, HelpText<"Set auto binding space - enables auto resource binding in libraries">; def exports : Separate<["-", "/"], "exports">, Group, Flags<[CoreOption]>, HelpText<"Specify exports when compiling a library: export1[[,export1_clone,...]=internal_name][;...]">; def export_shaders_only : Flag<["-", "/"], "export-shaders-only">, Group, Flags<[CoreOption]>, HelpText<"Only export shaders when compiling a library">; def default_linkage : Separate<["-", "/"], "default-linkage">, Group, Flags<[CoreOption]>, HelpText<"Set default linkage for non-shader functions when compiling or linking to a library target (internal, external)">; def precise_output : Separate<["-", "/"], "precise-output">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Mark output semantic as precise">; def encoding : Separate<["-", "/"], "encoding">, Group, Flags<[CoreOption, RewriteOption, DriverOption]>, HelpText<"Set default encoding for text outputs (utf8|utf16) default=utf8">; def validator_version : Separate<["-", "/"], "validator-version">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Override validator version for module. Format: ; Default: DXIL.dll version or current internal version.">; def print_after_all : Flag<["-", "/"], "print-after-all">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Print LLVM IR after each pass.">; def force_zero_store_lifetimes : Flag<["-", "/"], "force-zero-store-lifetimes">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Instead of generating lifetime intrinsics (SM >= 6.6) or storing undef (SM < 6.6), force fall back to storing zeroinitializer.">; def enable_lifetime_markers : Flag<["-", "/"], "enable-lifetime-markers">, Group, Flags<[CoreOption]>, HelpText<"Enable generation of lifetime markers">; def disable_lifetime_markers : Flag<["-", "/"], "disable-lifetime-markers">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Disable generation of lifetime markers where they would be otherwise (6.6+)">; def enable_payload_qualifiers : Flag<["-", "/"], "enable-payload-qualifiers">, Group, Flags<[CoreOption, RewriteOption, DriverOption]>, HelpText<"Enables support for payload access qualifiers for raytracing payloads in SM 6.6.">; def disable_payload_qualifiers : Flag<["-", "/"], "disable-payload-qualifiers">, Group, Flags<[CoreOption, RewriteOption, DriverOption]>, HelpText<"Disables support for payload access qualifiers for raytracing payloads in SM 6.7.">; def disable_exception_handling : Flag<["-", "/"], "disable-exception-handling">, Group, Flags<[DriverOption, HelpHidden]>, HelpText<"Disable dxc handling of exceptions">; // Used with API only def skip_serialization : Flag<["-", "/"], "skip-serialization">, Group, Flags<[CoreOption, HelpHidden]>, HelpText<"Return a module interface instead of serialized output">; // SPIRV Change Starts def spirv : Flag<["-"], "spirv">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Generate SPIR-V code">; def fvk_stage_io_order_EQ : Joined<["-"], "fvk-stage-io-order=">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Specify Vulkan stage I/O location assignment order">; def fvk_b_shift : MultiArg<["-"], "fvk-b-shift", 2>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify Vulkan binding number shift for b-type register">; def fvk_t_shift : MultiArg<["-"], "fvk-t-shift", 2>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify Vulkan binding number shift for t-type register">; def fvk_s_shift : MultiArg<["-"], "fvk-s-shift", 2>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify Vulkan binding number shift for s-type register">; def fvk_u_shift : MultiArg<["-"], "fvk-u-shift", 2>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify Vulkan binding number shift for u-type register">; def fvk_bind_globals : MultiArg<["-"], "fvk-bind-globals", 2>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify Vulkan binding number and set number for the $Globals cbuffer">; def fvk_bind_register : MultiArg<["-"], "fvk-bind-register", 4>, MetaVarName<" ">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify Vulkan descriptor set and binding for a specific register">; def vkbr : MultiArg<["-"], "vkbr", 4>, Flags<[CoreOption, DriverOption]>, Alias; def fvk_invert_y: Flag<["-"], "fvk-invert-y">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Negate SV_Position.y before writing to stage output in VS/DS/GS to accommodate Vulkan's coordinate system">; def fvk_use_dx_position_w: Flag<["-"], "fvk-use-dx-position-w">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Reciprocate SV_Position.w after reading from stage input in PS to accommodate the difference between Vulkan and DirectX">; def fvk_support_nonzero_base_instance: Flag<["-"], "fvk-support-nonzero-base-instance">, Group, Flags<[CoreOption, DriverOption]>, 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)">; def fvk_use_gl_layout: Flag<["-"], "fvk-use-gl-layout">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Use strict OpenGL std140/std430 memory layout for Vulkan resources">; def fvk_use_dx_layout: Flag<["-"], "fvk-use-dx-layout">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Use DirectX memory layout for Vulkan resources">; def fvk_use_scalar_layout: Flag<["-"], "fvk-use-scalar-layout">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Use scalar memory layout for Vulkan resources">; def fspv_reflect: Flag<["-"], "fspv-reflect">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Emit additional SPIR-V instructions to aid reflection">; def fspv_debug_EQ : Joined<["-"], "fspv-debug=">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify whitelist of debug info category (file -> source -> line, tool)">; def fspv_extension_EQ : Joined<["-"], "fspv-extension=">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify SPIR-V extension permitted to use">; def fspv_target_env_EQ : Joined<["-"], "fspv-target-env=">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Specify the target environment: vulkan1.0 (default) or vulkan1.1">; def fspv_flatten_resource_arrays: Flag<["-"], "fspv-flatten-resource-arrays">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Flatten arrays of resources so each array element takes one binding number">; def fvk_auto_shift_bindings: Flag<["-"], "fvk-auto-shift-bindings">, Group, Flags<[CoreOption, DriverOption]>, HelpText<"Apply fvk-*-shift to resources without an explicit register assignment.">; def Wno_vk_ignored_features : Joined<["-"], "Wno-vk-ignored-features">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Do not emit warnings for ingored features resulting from no Vulkan support">; def Wno_vk_emulated_features : Joined<["-"], "Wno-vk-emulated-features">, Group, Flags<[CoreOption, DriverOption, HelpHidden]>, HelpText<"Do not emit warnings for emulated features resulting from no direct mapping">; def Oconfig : CommaJoined<["-"], "Oconfig=">, Group, Flags<[CoreOption]>, HelpText<"Specify a comma-separated list of SPIRV-Tools passes to customize optimization configuration (see http://khr.io/hlsl2spirv#optimization)">; // SPIRV Change Ends ////////////////////////////////////////////////////////////////////////////// // fxc-based flags that don't match those previously defined. def target_profile : JoinedOrSeparate<["-", "/"], "T">, Flags<[CoreOption]>, Group, MetaVarName<"">, /* hctdb_instrhelp.get_target_profiles()*/ // VALRULE-TEXT:BEGIN HelpText<"Set target profile. \n\t: ps_6_0, ps_6_1, ps_6_2, ps_6_3, ps_6_4, ps_6_5, ps_6_6, ps_6_7, \n\t\t vs_6_0, vs_6_1, vs_6_2, vs_6_3, vs_6_4, vs_6_5, vs_6_6, vs_6_7, \n\t\t gs_6_0, gs_6_1, gs_6_2, gs_6_3, gs_6_4, gs_6_5, gs_6_6, gs_6_7, \n\t\t hs_6_0, hs_6_1, hs_6_2, hs_6_3, hs_6_4, hs_6_5, hs_6_6, hs_6_7, \n\t\t ds_6_0, ds_6_1, ds_6_2, ds_6_3, ds_6_4, ds_6_5, ds_6_6, ds_6_7, \n\t\t cs_6_0, cs_6_1, cs_6_2, cs_6_3, cs_6_4, cs_6_5, cs_6_6, cs_6_7, \n\t\t lib_6_1, lib_6_2, lib_6_3, lib_6_4, lib_6_5, lib_6_6, lib_6_7, \n\t\t ms_6_5, ms_6_6, ms_6_7, \n\t\t as_6_5, as_6_6, as_6_7, \n\t\t ">; // VALRULE-TEXT:END def entrypoint : JoinedOrSeparate<["-", "/"], "E">, Flags<[CoreOption, RewriteOption]>, Group, HelpText<"Entry point name">; // /I - already defined above def _vi : Flag<["-", "/"], "Vi">, Alias, Flags<[CoreOption]>, Group, HelpText<"Display details about the include process.">; def Od : Flag<["-", "/"], "Od">, Flags<[CoreOption]>, Group, HelpText<"Disable optimizations">; def _SLASH_WX : Flag<["-", "/"], "WX">, Flags<[CoreOption]>, Group, HelpText<"Treat warnings as errors">; def VD : Flag<["-", "/"], "Vd">, Flags<[CoreOption]>, Group, HelpText<"Disable validation">; def _SLASH_Zi : Flag<["-", "/"], "Zi">, Flags<[CoreOption]>, Group, HelpText<"Enable debug information">; def recompile : Flag<["-", "/"], "recompile">, Flags<[CoreOption]>, Group, HelpText<"recompile from DXIL container with Debug Info or Debug Info bitcode file">; def Zpr : Flag<["-", "/"], "Zpr">, Flags<[CoreOption]>, Group, HelpText<"Pack matrices in row-major order">; def Zpc : Flag<["-", "/"], "Zpc">, Flags<[CoreOption]>, Group, HelpText<"Pack matrices in column-major order">; def Zss : Flag<["-", "/"], "Zss">, Flags<[CoreOption]>, Group, HelpText<"Compute Shader Hash considering source information">; def Zsb : Flag<["-", "/"], "Zsb">, Flags<[CoreOption]>, Group, HelpText<"Compute Shader Hash considering only output binary">; // deprecated /Gpp def Gpp : Flag<["-", "/"], "Gpp">, HelpText<"Force partial precision">; def Gfa : Flag<["-", "/"], "Gfa">, HelpText<"Avoid flow control constructs">, Flags<[CoreOption]>, Group; def Gfp : Flag<["-", "/"], "Gfp">, HelpText<"Prefer flow control constructs">, Flags<[CoreOption]>, Group; // /Gdp - disable effect performance mode - unsupported def Gec : Flag<["-", "/"], "Gec">, HelpText<"Enable backward compatibility mode">, Flags<[CoreOption]>, Group; def Ges : Flag<["-", "/"], "Ges">, HelpText<"Enable strict mode">, Flags<[CoreOption]>, Group; def Gis : Flag<["-", "/"], "Gis">, HelpText<"Force IEEE strictness">, Flags<[CoreOption]>, Group; def denorm : JoinedOrSeparate<["-", "/"], "denorm">, HelpText<"select denormal value options (any, preserve, ftz). any is the default.">, Flags<[CoreOption]>, Group; def Fo : JoinedOrSeparate<["-", "/"], "Fo">, MetaVarName<"">, HelpText<"Output object file">, Flags<[CoreOption, RewriteOption, DriverOption]>, Group; // def Fl : JoinedOrSeparate<["-", "/"], "Fl">, MetaVarName<"">, HelpText<"Output a library">; def Fc : JoinedOrSeparate<["-", "/"], "Fc">, MetaVarName<"">, HelpText<"Output assembly code listing file">, Flags<[DriverOption]>, Group; //def Fx : JoinedOrSeparate<["-", "/"], "Fx">, MetaVarName<"">, HelpText<"Output assembly code and hex listing file">; def Fh : JoinedOrSeparate<["-", "/"], "Fh">, MetaVarName<"">, HelpText<"Output header file containing object code">, Flags<[DriverOption]>, Group; def Fe : JoinedOrSeparate<["-", "/"], "Fe">, MetaVarName<"">, HelpText<"Output warnings and errors to the given file">, Flags<[CoreOption, DriverOption]>, Group; def Fd : JoinedOrSeparate<["-", "/"], "Fd">, MetaVarName<"">, HelpText<"Write debug information to the given file, or automatically named file in directory when ending in '\\'">, Flags<[CoreOption, DriverOption]>, Group; def Fre : Separate<["-", "/"], "Fre">, MetaVarName<"">, HelpText<"Output reflection to the given file">, Flags<[CoreOption, DriverOption]>, Group; def Frs : Separate<["-", "/"], "Frs">, MetaVarName<"">, HelpText<"Output root signature to the given file">, Flags<[CoreOption, DriverOption]>, Group; def Fsh : Separate<["-", "/"], "Fsh">, MetaVarName<"">, HelpText<"Output shader hash to the given file">, Flags<[CoreOption, DriverOption]>, Group; def Vn : JoinedOrSeparate<["-", "/"], "Vn">, MetaVarName<"">, HelpText<"Use as variable name in header file">, Flags<[DriverOption]>, Group; def Cc : Flag<["-", "/"], "Cc">, HelpText<"Output color coded assembly listings">, Group, Flags<[DriverOption]>; def Ni : Flag<["-", "/"], "Ni">, HelpText<"Output instruction numbers in assembly listings">, Group, Flags<[DriverOption]>; def No : Flag<["-", "/"], "No">, HelpText<"Output instruction byte offsets in assembly listings">, Group, Flags<[DriverOption]>; def Lx : Flag<["-", "/"], "Lx">, HelpText<"Output hexadecimal literals">, Group, Flags<[DriverOption]>; // In place of 'E' for clang; fxc uses 'E' for entry point. def P : Separate<["-", "/"], "P">, Flags<[CoreOption, DriverOption]>, Group, HelpText<"Preprocess to file (must be used alone)">; // @ - options response file def dumpbin : Flag<["-", "/"], "dumpbin">, Flags<[DriverOption]>, Group, HelpText<"Load a binary file rather than compiling">; def link : Flag<["-", "/"], "link">, Flags<[DriverOption]>, Group, HelpText<"Link list of libraries provided in argument separated by ';'">; def Qstrip_reflect : Flag<["-", "/"], "Qstrip_reflect">, Flags<[CoreOption, DriverOption]>, Group, HelpText<"Strip reflection data from shader bytecode (must be used with /Fo )">; def Qstrip_debug : Flag<["-", "/"], "Qstrip_debug">, Flags<[CoreOption, DriverOption]>, Group, HelpText<"Strip debug information from 4_0+ shader bytecode (must be used with /Fo )">; def Qembed_debug : Flag<["-", "/"], "Qembed_debug">, Flags<[CoreOption]>, Group, HelpText<"Embed PDB in shader container (must be used with /Zi)">; def Qstrip_priv : Flag<["-", "/"], "Qstrip_priv">, Flags<[DriverOption]>, Group, HelpText<"Strip private data from shader bytecode (must be used with /Fo )">; def Qsource_in_debug_module : Flag<["-", "/"], "Qsource_in_debug_module">, Flags<[CoreOption, HelpHidden]>, Group, HelpText<"Generate old PDB format.">; def Zs : Flag<["-", "/"], "Zs">, Flags<[CoreOption]>, Group, HelpText<"Generate small PDB with just sources and compile options.">; def Qpdb_in_private : Flag<["-", "/"], "Qpdb_in_private">, Flags<[CoreOption, HelpHidden]>, Group, HelpText<"Store PDB in private user data.">; def Qstrip_rootsignature : Flag<["-", "/"], "Qstrip_rootsignature">, Flags<[CoreOption, DriverOption]>, Group, HelpText<"Strip root signature data from shader bytecode (must be used with /Fo )">; def setrootsignature : JoinedOrSeparate<["-", "/"], "setrootsignature">, MetaVarName<"">, Flags<[CoreOption, DriverOption]>, Group, HelpText<"Attach root signature to shader bytecode">; def extractrootsignature : Flag<["-", "/"], "extractrootsignature">, Flags<[DriverOption]>, Group, HelpText<"Extract root signature from shader bytecode (must be used with /Fo )">; def verifyrootsignature : JoinedOrSeparate<["-", "/"], "verifyrootsignature">, MetaVarName<"">, Flags<[DriverOption]>, Group, HelpText<"Verify shader bytecode with root signature">; def force_rootsig_ver : JoinedOrSeparate<["-", "/"], "force-rootsig-ver">, Flags<[CoreOption]>, MetaVarName<"">, Group, HelpText<"force root signature version (rootsig_1_1 if omitted)">; def force_rootsig_ver_ : JoinedOrSeparate<["-", "/"], "force_rootsig_ver">, Flags<[CoreOption, HelpHidden]>, MetaVarName<"">, Group, HelpText<"force root signature version (rootsig_1_1 if omitted)">; // Temporary TEST options, until reflection inside DXIL part can always be stripped def Qkeep_reflect_in_dxil : Flag<["-", "/"], "Qkeep_reflect_in_dxil">, Flags<[CoreOption, HelpHidden]>, Group, HelpText<"Keep reflection data in shader bytecode">; def Qstrip_reflect_from_dxil : Flag<["-", "/"], "Qstrip_reflect_from_dxil">, Flags<[CoreOption, HelpHidden]>, Group, HelpText<"Strip reflection data from shader bytecode (must be used with /Fo )">; /* def shtemplate : JoinedOrSeparate<["-", "/"], "shtemplate">, MetaVarName<"">, Group, HelpText<"Template shader file for merging/matching resources">; def mergeUAVs : JoinedOrSeparate<["-", "/"], "mergeUAVs">, MetaVarName<"">, Group, HelpText<"Merge UAV slots of template shader and current shader">; def matchUAVs : JoinedOrSeparate<["-", "/"], "matchUAVs">, MetaVarName<"">, Group, HelpText<"Match template shader UAV slots in current shader">; def enable_unbounded_descriptor_tables : Flag<["-", "/"], "enable_unbounded_descriptor_tables">, Flags<[CoreOption]>, Group, HelpText<"Enables unbounded descriptor tables">; */ def res_may_alias : Flag<["-", "/"], "res-may-alias">, Flags<[CoreOption]>, Group, HelpText<"Assume that UAVs/SRVs may alias">; def res_may_alias_ : Flag<["-", "/"], "res_may_alias">, Flags<[CoreOption, HelpHidden]>, Group, HelpText<"Assume that UAVs/SRVs may alias">; def all_resources_bound : Flag<["-", "/"], "all-resources-bound">, Flags<[CoreOption]>, Group, HelpText<"Enables agressive flattening">; def all_resources_bound_ : Flag<["-", "/"], "all_resources_bound">, Flags<[CoreOption, HelpHidden]>, Group, HelpText<"Enables agressive flattening">; def setprivate : JoinedOrSeparate<["-", "/"], "setprivate">, Flags<[DriverOption]>, MetaVarName<"">, Group, HelpText<"Private data to add to compiled shader blob">; def getprivate : JoinedOrSeparate<["-", "/"], "getprivate">, Flags<[DriverOption]>, MetaVarName<"">, Group, HelpText<"Save private data from shader blob">; def nologo : Flag<["-", "/"], "nologo">, Group, Flags<[DriverOption]>, HelpText<"Suppress copyright message">; ////////////////////////////////////////////////////////////////////////////// // Rewriter Options def rw_unchanged : Flag<["-", "/"], "unchanged">, Group, Flags<[RewriteOption]>, HelpText<"Rewrite HLSL, without changes.">; def rw_skip_function_body : Flag<["-", "/"], "skip-fn-body">, Group, Flags<[RewriteOption]>, HelpText<"Translate function definitions to declarations">; def rw_skip_static : Flag<["-", "/"], "skip-static">, Group, Flags<[RewriteOption]>, HelpText<"Remove static functions and globals when used with -skip-fn-body">; def rw_global_extern_by_default : Flag<["-", "/"], "global-extern-by-default">, Group, Flags<[RewriteOption]>, HelpText<"Set extern on non-static globals">; def rw_keep_user_macro : Flag<["-", "/"], "keep-user-macro">, Group, Flags<[RewriteOption]>, HelpText<"Write out user defines after rewritten HLSL">; def rw_extract_entry_uniforms : Flag<["-", "/"], "extract-entry-uniforms">, Group, Flags<[RewriteOption]>, HelpText<"Move uniform parameters from entry point to global scope">; def rw_remove_unused_globals : Flag<["-", "/"], "remove-unused-globals">, Group, Flags<[RewriteOption]>, HelpText<"Remove unused static globals and functions">; def rw_remove_unused_functions : Flag<["-", "/"], "remove-unused-functions">, Group, Flags<[RewriteOption]>, HelpText<"Remove unused functions and types">; def rw_line_directive : Flag<["-", "/"], "line-directive">, Group, Flags<[RewriteOption]>, HelpText<"Add line directive">; // Also removed: compress, decompress, /Gch (child effect), /Gpp (partial precision) // /Op - no support for preshaders.