LLVM 22.0.0git
DXContainer.cpp
Go to the documentation of this file.
1
2//===-- llvm/BinaryFormat/DXContainer.cpp - DXContainer Utils ----*- C++-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains utility functions for working with DXContainers.
11//
12//===----------------------------------------------------------------------===//
13
17
18using namespace llvm;
19using namespace llvm::dxbc;
20
22#define CONTAINER_PART(PartName) .Case(#PartName, PartType::PartName)
24#include "llvm/BinaryFormat/DXContainerConstants.def"
26}
27
29 static uint8_t Zeros[16] = {0};
30 return Flags > 0 || 0 != memcmp(&Digest, &Zeros, 16);
31}
32
33#define COMPONENT_PRECISION(Val, Enum) {#Enum, SigMinPrecision::Enum},
34
36#include "llvm/BinaryFormat/DXContainerConstants.def"
37};
38
42
43#define D3D_SYSTEM_VALUE(Val, Enum) {#Enum, D3DSystemValue::Enum},
44
46#include "llvm/BinaryFormat/DXContainerConstants.def"
47};
48
52
53#define COMPONENT_TYPE(Val, Enum) {#Enum, SigComponentType::Enum},
54
56#include "llvm/BinaryFormat/DXContainerConstants.def"
57};
58
62
64#define ROOT_SIGNATURE_FLAG(Val, Enum) {#Enum, RootFlags::Enum},
65#include "llvm/BinaryFormat/DXContainerConstants.def"
66};
67
71
73#define ROOT_DESCRIPTOR_FLAG(Val, Enum, Flag) \
74 {#Enum, RootDescriptorFlags::Enum},
75#include "llvm/BinaryFormat/DXContainerConstants.def"
76};
77
81
83#define DESCRIPTOR_RANGE_FLAG(Val, Enum, Flag) \
84 {#Enum, DescriptorRangeFlags::Enum},
85#include "llvm/BinaryFormat/DXContainerConstants.def"
86};
87
91
93#define STATIC_SAMPLER_FLAG(Val, Enum, Flag) {#Enum, StaticSamplerFlags::Enum},
94#include "llvm/BinaryFormat/DXContainerConstants.def"
95};
96
100
101#define SHADER_VISIBILITY(Val, Enum) {#Enum, ShaderVisibility::Enum},
102
104#include "llvm/BinaryFormat/DXContainerConstants.def"
105};
106
110
111#define FILTER(Val, Enum) {#Enum, SamplerFilter::Enum},
112
114#include "llvm/BinaryFormat/DXContainerConstants.def"
115};
116
120
121#define TEXTURE_ADDRESS_MODE(Val, Enum) {#Enum, TextureAddressMode::Enum},
122
124#include "llvm/BinaryFormat/DXContainerConstants.def"
125};
126
130
131#define COMPARISON_FUNC(Val, Enum) {#Enum, ComparisonFunc::Enum},
132
134#include "llvm/BinaryFormat/DXContainerConstants.def"
135};
136
140
141#define STATIC_BORDER_COLOR(Val, Enum) {#Enum, StaticBorderColor::Enum},
142
144#include "llvm/BinaryFormat/DXContainerConstants.def"
145};
146
150
151#define ROOT_PARAMETER(Val, Enum) {#Enum, RootParameterType::Enum},
152
154#include "llvm/BinaryFormat/DXContainerConstants.def"
155};
156
160
161#define SEMANTIC_KIND(Val, Enum) {#Enum, PSV::SemanticKind::Enum},
162
164#include "llvm/BinaryFormat/DXContainerConstants.def"
165};
166
170
171#define COMPONENT_TYPE(Val, Enum) {#Enum, PSV::ComponentType::Enum},
172
174#include "llvm/BinaryFormat/DXContainerConstants.def"
175};
176
180
181#define INTERPOLATION_MODE(Val, Enum) {#Enum, PSV::InterpolationMode::Enum},
182
184#include "llvm/BinaryFormat/DXContainerConstants.def"
185};
186
190
191#define RESOURCE_TYPE(Val, Enum) {#Enum, PSV::ResourceType::Enum},
192
194#include "llvm/BinaryFormat/DXContainerConstants.def"
195};
196
200
201#define RESOURCE_KIND(Val, Enum) {#Enum, PSV::ResourceKind::Enum},
202
204#include "llvm/BinaryFormat/DXContainerConstants.def"
205};
206
static const EnumEntry< DescriptorRangeFlags > DescriptorRangeFlagNames[]
static const EnumEntry< ShaderVisibility > ShaderVisibilityValues[]
static const EnumEntry< D3DSystemValue > D3DSystemValueNames[]
static const EnumEntry< PSV::InterpolationMode > InterpolationModeNames[]
static const EnumEntry< SigMinPrecision > SigMinPrecisionNames[]
static const EnumEntry< StaticSamplerFlags > StaticSamplerFlagNames[]
static const EnumEntry< SamplerFilter > SamplerFilterNames[]
static const EnumEntry< RootParameterType > RootParameterTypes[]
static const EnumEntry< PSV::SemanticKind > SemanticKindNames[]
static const EnumEntry< PSV::ResourceType > ResourceTypeNames[]
static const EnumEntry< StaticBorderColor > StaticBorderColorValues[]
static const EnumEntry< RootFlags > RootFlagNames[]
static const EnumEntry< ComparisonFunc > ComparisonFuncNames[]
static const EnumEntry< PSV::ResourceKind > ResourceKindNames[]
static const EnumEntry< RootDescriptorFlags > RootDescriptorFlagNames[]
static const EnumEntry< TextureAddressMode > TextureAddressModeNames[]
static const EnumEntry< SigComponentType > SigComponentTypes[]
static const EnumEntry< PSV::ComponentType > ComponentTypeNames[]
Merge contiguous icmps into a memcmp
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition ArrayRef.h:41
StringRef - Represent a constant reference to a string, i.e.
Definition StringRef.h:55
A switch()-like statement whose cases are string literals.
LLVM_ABI ArrayRef< EnumEntry< ResourceKind > > getResourceKinds()
LLVM_ABI ArrayRef< EnumEntry< ComponentType > > getComponentTypes()
LLVM_ABI ArrayRef< EnumEntry< ResourceType > > getResourceTypes()
LLVM_ABI ArrayRef< EnumEntry< SemanticKind > > getSemanticKinds()
LLVM_ABI ArrayRef< EnumEntry< InterpolationMode > > getInterpolationModes()
LLVM_ABI ArrayRef< EnumEntry< ComparisonFunc > > getComparisonFuncs()
LLVM_ABI ArrayRef< EnumEntry< ShaderVisibility > > getShaderVisibility()
LLVM_ABI PartType parsePartType(StringRef S)
LLVM_ABI ArrayRef< EnumEntry< RootFlags > > getRootFlags()
LLVM_ABI ArrayRef< EnumEntry< RootParameterType > > getRootParameterTypes()
LLVM_ABI ArrayRef< EnumEntry< SigComponentType > > getSigComponentTypes()
LLVM_ABI ArrayRef< EnumEntry< SigMinPrecision > > getSigMinPrecisions()
LLVM_ABI ArrayRef< EnumEntry< DescriptorRangeFlags > > getDescriptorRangeFlags()
LLVM_ABI ArrayRef< EnumEntry< SamplerFilter > > getSamplerFilters()
LLVM_ABI ArrayRef< EnumEntry< D3DSystemValue > > getD3DSystemValues()
LLVM_ABI ArrayRef< EnumEntry< StaticBorderColor > > getStaticBorderColors()
LLVM_ABI ArrayRef< EnumEntry< TextureAddressMode > > getTextureAddressModes()
LLVM_ABI ArrayRef< EnumEntry< StaticSamplerFlags > > getStaticSamplerFlags()
LLVM_ABI ArrayRef< EnumEntry< RootDescriptorFlags > > getRootDescriptorFlags()
This is an optimization pass for GlobalISel generic memory operations.
ArrayRef(const T &OneElt) -> ArrayRef< T >
LLVM_ABI bool isPopulated()