// AUTOMATICALLY GENERATED from the SPIR-V JSON grammar:
//   external/spirv.core.grammar.json.
// DO NOT MODIFY!

#![allow(clippy::upper_case_acronyms)]
#[doc = r" SPIR-V decorations."]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum Decoration {
    RelaxedPrecision,
    SpecId(u32),
    Block,
    BufferBlock,
    RowMajor,
    ColMajor,
    ArrayStride(u32),
    MatrixStride(u32),
    GLSLShared,
    GLSLPacked,
    CPacked,
    BuiltIn(spirv::BuiltIn),
    NoPerspective,
    Flat,
    Patch,
    Centroid,
    Sample,
    Invariant,
    Restrict,
    Aliased,
    Volatile,
    Constant,
    Coherent,
    NonWritable,
    NonReadable,
    Uniform,
    UniformId(spirv::Word),
    SaturatedConversion,
    Stream(u32),
    Location(u32),
    Component(u32),
    Index(u32),
    Binding(u32),
    DescriptorSet(u32),
    Offset(u32),
    XfbBuffer(u32),
    XfbStride(u32),
    FuncParamAttr(spirv::FunctionParameterAttribute),
    FPRoundingMode(spirv::FPRoundingMode),
    FPFastMathMode(spirv::FPFastMathMode),
    LinkageAttributes(String, spirv::LinkageType),
    NoContraction,
    InputAttachmentIndex(u32),
    Alignment(u32),
    MaxByteOffset(u32),
    AlignmentId(spirv::Word),
    MaxByteOffsetId(spirv::Word),
    NoSignedWrap,
    NoUnsignedWrap,
    WeightTextureQCOM,
    BlockMatchTextureQCOM,
    ExplicitInterpAMD,
    NodeSharesPayloadLimitsWithAMDX(spirv::Word),
    NodeMaxPayloadsAMDX(spirv::Word),
    TrackFinishWritingAMDX,
    PayloadNodeNameAMDX(String),
    OverrideCoverageNV,
    PassthroughNV,
    ViewportRelativeNV,
    SecondaryViewportRelativeNV(u32),
    PerPrimitiveNV,
    PerPrimitiveEXT,
    PerViewNV,
    PerTaskNV,
    PerVertexKHR,
    PerVertexNV,
    NonUniform,
    NonUniformEXT,
    RestrictPointer,
    RestrictPointerEXT,
    AliasedPointer,
    AliasedPointerEXT,
    HitObjectShaderRecordBufferNV,
    BindlessSamplerNV,
    BindlessImageNV,
    BoundSamplerNV,
    BoundImageNV,
    SIMTCallINTEL(u32),
    ReferencedIndirectlyINTEL,
    ClobberINTEL(String),
    SideEffectsINTEL,
    VectorComputeVariableINTEL,
    FuncParamIOKindINTEL(u32),
    VectorComputeFunctionINTEL,
    StackCallINTEL,
    GlobalVariableOffsetINTEL(u32),
    CounterBuffer(spirv::Word),
    HlslCounterBufferGOOGLE(spirv::Word),
    UserSemantic(String),
    HlslSemanticGOOGLE(String),
    UserTypeGOOGLE(String),
    FunctionRoundingModeINTEL(u32, spirv::FPRoundingMode),
    FunctionDenormModeINTEL(u32, spirv::FPDenormMode),
    RegisterINTEL,
    MemoryINTEL(String),
    NumbanksINTEL(u32),
    BankwidthINTEL(u32),
    MaxPrivateCopiesINTEL(u32),
    SinglepumpINTEL,
    DoublepumpINTEL,
    MaxReplicatesINTEL(u32),
    SimpleDualPortINTEL,
    MergeINTEL(String, String),
    BankBitsINTEL(Vec<u32>),
    ForcePow2DepthINTEL(u32),
    BurstCoalesceINTEL,
    CacheSizeINTEL(u32),
    DontStaticallyCoalesceINTEL,
    PrefetchINTEL(u32),
    StallEnableINTEL,
    FuseLoopsInFunctionINTEL,
    MathOpDSPModeINTEL(u32, u32),
    AliasScopeINTEL(spirv::Word),
    NoAliasINTEL(spirv::Word),
    InitiationIntervalINTEL(u32),
    MaxConcurrencyINTEL(u32),
    PipelineEnableINTEL(u32),
    BufferLocationINTEL(u32),
    IOPipeStorageINTEL(u32),
    FunctionFloatingPointModeINTEL(u32, spirv::FPOperationMode),
    SingleElementVectorINTEL,
    VectorComputeCallableFunctionINTEL,
    MediaBlockIOINTEL,
    InitModeINTEL(spirv::InitializationModeQualifier),
    ImplementInRegisterMapINTEL(u32),
    HostAccessINTEL(spirv::HostAccessQualifier, String),
    FPMaxErrorDecorationINTEL(u32),
    LatencyControlLabelINTEL(u32),
    LatencyControlConstraintINTEL(u32, u32, u32),
    ConduitKernelArgumentINTEL,
    RegisterMapKernelArgumentINTEL,
    MMHostInterfaceAddressWidthINTEL(u32),
    MMHostInterfaceDataWidthINTEL(u32),
    MMHostInterfaceLatencyINTEL(u32),
    MMHostInterfaceReadWriteModeINTEL(spirv::AccessQualifier),
    MMHostInterfaceMaxBurstINTEL(u32),
    MMHostInterfaceWaitRequestINTEL(u32),
    StableKernelArgumentINTEL,
    CacheControlLoadINTEL(u32, spirv::LoadCacheControl),
    CacheControlStoreINTEL(u32, spirv::StoreCacheControl),
}
