Movatterモバイル変換


[0]ホーム

URL:


LLVM 20.0.0git
DXILResource.h
Go to the documentation of this file.
1//===- DXILResource.h - Representations of DXIL resources -------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_ANALYSIS_DXILRESOURCE_H
10#define LLVM_ANALYSIS_DXILRESOURCE_H
11
12#include "llvm/ADT/MapVector.h"
13#include "llvm/ADT/StringRef.h"
14#include "llvm/IR/DerivedTypes.h"
15#include "llvm/IR/GlobalVariable.h"
16#include "llvm/IR/PassManager.h"
17#include "llvm/Pass.h"
18#include "llvm/Support/Alignment.h"
19#include "llvm/Support/DXILABI.h"
20
21namespacellvm {
22classCallInst;
23classDataLayout;
24classLLVMContext;
25classMDTuple;
26classValue;
27
28classDXILResourceTypeMap;
29
30namespacedxil {
31
32/// The dx.RawBuffer target extension type
33///
34/// `target("dx.RawBuffer", Type, IsWriteable, IsROV)`
35classRawBufferExtType :publicTargetExtType {
36public:
37RawBufferExtType() =delete;
38RawBufferExtType(constRawBufferExtType &) =delete;
39RawBufferExtType &operator=(constRawBufferExtType &) =delete;
40
41boolisStructured() const{
42// TODO: We need to be more prescriptive here, but since there's some debate
43// over whether byte address buffer should have a void type or an i8 type,
44// accept either for now.
45Type *Ty =getTypeParameter(0);
46return !Ty->isVoidTy() && !Ty->isIntegerTy(8);
47 }
48
49Type *getResourceType() const{
50returnisStructured() ?getTypeParameter(0) :nullptr;
51 }
52boolisWriteable() const{returngetIntParameter(0); }
53boolisROV() const{returngetIntParameter(1); }
54
55staticboolclassof(constTargetExtType *T) {
56returnT->getName() =="dx.RawBuffer";
57 }
58staticboolclassof(constType *T) {
59return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
60 }
61};
62
63/// The dx.TypedBuffer target extension type
64///
65/// `target("dx.TypedBuffer", Type, IsWriteable, IsROV, IsSigned)`
66classTypedBufferExtType :publicTargetExtType {
67public:
68TypedBufferExtType() =delete;
69TypedBufferExtType(constTypedBufferExtType &) =delete;
70TypedBufferExtType &operator=(constTypedBufferExtType &) =delete;
71
72Type *getResourceType() const{returngetTypeParameter(0); }
73boolisWriteable() const{returngetIntParameter(0); }
74boolisROV() const{returngetIntParameter(1); }
75boolisSigned() const{returngetIntParameter(2); }
76
77staticboolclassof(constTargetExtType *T) {
78returnT->getName() =="dx.TypedBuffer";
79 }
80staticboolclassof(constType *T) {
81return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
82 }
83};
84
85/// The dx.Texture target extension type
86///
87/// `target("dx.Texture", Type, IsWriteable, IsROV, IsSigned, Dimension)`
88classTextureExtType :publicTargetExtType {
89public:
90TextureExtType() =delete;
91TextureExtType(constTextureExtType &) =delete;
92TextureExtType &operator=(constTextureExtType &) =delete;
93
94Type *getResourceType() const{returngetTypeParameter(0); }
95boolisWriteable() const{returngetIntParameter(0); }
96boolisROV() const{returngetIntParameter(1); }
97boolisSigned() const{returngetIntParameter(2); }
98dxil::ResourceKindgetDimension() const{
99returnstatic_cast<dxil::ResourceKind>(getIntParameter(3));
100 }
101
102staticboolclassof(constTargetExtType *T) {
103returnT->getName() =="dx.Texture";
104 }
105staticboolclassof(constType *T) {
106return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
107 }
108};
109
110/// The dx.MSTexture target extension type
111///
112/// `target("dx.MSTexture", Type, IsWriteable, Samples, IsSigned, Dimension)`
113classMSTextureExtType :publicTargetExtType {
114public:
115MSTextureExtType() =delete;
116MSTextureExtType(constMSTextureExtType &) =delete;
117MSTextureExtType &operator=(constMSTextureExtType &) =delete;
118
119Type *getResourceType() const{returngetTypeParameter(0); }
120boolisWriteable() const{returngetIntParameter(0); }
121uint32_tgetSampleCount() const{returngetIntParameter(1); }
122boolisSigned() const{returngetIntParameter(2); }
123dxil::ResourceKindgetDimension() const{
124returnstatic_cast<dxil::ResourceKind>(getIntParameter(3));
125 }
126
127staticboolclassof(constTargetExtType *T) {
128returnT->getName() =="dx.MSTexture";
129 }
130staticboolclassof(constType *T) {
131return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
132 }
133};
134
135/// The dx.FeedbackTexture target extension type
136///
137/// `target("dx.FeedbackTexture", FeedbackType, Dimension)`
138classFeedbackTextureExtType :publicTargetExtType {
139public:
140FeedbackTextureExtType() =delete;
141FeedbackTextureExtType(constFeedbackTextureExtType &) =delete;
142FeedbackTextureExtType &operator=(constFeedbackTextureExtType &) =delete;
143
144dxil::SamplerFeedbackTypegetFeedbackType() const{
145returnstatic_cast<dxil::SamplerFeedbackType>(getIntParameter(0));
146 }
147dxil::ResourceKindgetDimension() const{
148returnstatic_cast<dxil::ResourceKind>(getIntParameter(1));
149 }
150
151staticboolclassof(constTargetExtType *T) {
152returnT->getName() =="dx.FeedbackTexture";
153 }
154staticboolclassof(constType *T) {
155return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
156 }
157};
158
159/// The dx.CBuffer target extension type
160///
161/// `target("dx.CBuffer", <Type>, ...)`
162classCBufferExtType :publicTargetExtType {
163public:
164CBufferExtType() =delete;
165CBufferExtType(constCBufferExtType &) =delete;
166CBufferExtType &operator=(constCBufferExtType &) =delete;
167
168Type *getResourceType() const{returngetTypeParameter(0); }
169uint32_tgetCBufferSize() const{returngetIntParameter(0); }
170
171staticboolclassof(constTargetExtType *T) {
172returnT->getName() =="dx.CBuffer";
173 }
174staticboolclassof(constType *T) {
175return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
176 }
177};
178
179/// The dx.Sampler target extension type
180///
181/// `target("dx.Sampler", SamplerType)`
182classSamplerExtType :publicTargetExtType {
183public:
184SamplerExtType() =delete;
185SamplerExtType(constSamplerExtType &) =delete;
186SamplerExtType &operator=(constSamplerExtType &) =delete;
187
188dxil::SamplerTypegetSamplerType() const{
189returnstatic_cast<dxil::SamplerType>(getIntParameter(0));
190 }
191
192staticboolclassof(constTargetExtType *T) {
193returnT->getName() =="dx.Sampler";
194 }
195staticboolclassof(constType *T) {
196return isa<TargetExtType>(T) &&classof(cast<TargetExtType>(T));
197 }
198};
199
200//===----------------------------------------------------------------------===//
201
202classResourceTypeInfo {
203public:
204structUAVInfo {
205boolGloballyCoherent;
206boolHasCounter;
207boolIsROV;
208
209booloperator==(constUAVInfo &RHS) const{
210return std::tie(GloballyCoherent,HasCounter,IsROV) ==
211 std::tie(RHS.GloballyCoherent,RHS.HasCounter,RHS.IsROV);
212 }
213booloperator!=(constUAVInfo &RHS) const{return !(*this ==RHS); }
214booloperator<(constUAVInfo &RHS) const{
215return std::tie(GloballyCoherent,HasCounter,IsROV) <
216 std::tie(RHS.GloballyCoherent,RHS.HasCounter,RHS.IsROV);
217 }
218 };
219
220structStructInfo {
221uint32_tStride;
222// Note: we store an integer here rather than using `MaybeAlign` because in
223// GCC 7 MaybeAlign isn't trivial so having one in this union would delete
224// our move constructor.
225// See https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html
226uint32_tAlignLog2;
227
228booloperator==(constStructInfo &RHS) const{
229return std::tie(Stride,AlignLog2) == std::tie(RHS.Stride,RHS.AlignLog2);
230 }
231booloperator!=(constStructInfo &RHS) const{return !(*this ==RHS); }
232booloperator<(constStructInfo &RHS) const{
233return std::tie(Stride,AlignLog2) < std::tie(RHS.Stride,RHS.AlignLog2);
234 }
235 };
236
237structTypedInfo {
238dxil::ElementTypeElementTy;
239uint32_tElementCount;
240
241booloperator==(constTypedInfo &RHS) const{
242return std::tie(ElementTy,ElementCount) ==
243 std::tie(RHS.ElementTy,RHS.ElementCount);
244 }
245booloperator!=(constTypedInfo &RHS) const{return !(*this ==RHS); }
246booloperator<(constTypedInfo &RHS) const{
247return std::tie(ElementTy,ElementCount) <
248 std::tie(RHS.ElementTy,RHS.ElementCount);
249 }
250 };
251
252private:
253TargetExtType *HandleTy;
254
255// GloballyCoherent and HasCounter aren't really part of the type and need to
256// be determined by analysis, so they're just provided directly by the
257// DXILResourceTypeMap when we construct these.
258bool GloballyCoherent;
259bool HasCounter;
260
261dxil::ResourceClass RC;
262dxil::ResourceKind Kind;
263
264public:
265ResourceTypeInfo(TargetExtType *HandleTy,constdxil::ResourceClass RC,
266constdxil::ResourceKind Kind,bool GloballyCoherent =false,
267bool HasCounter =false);
268ResourceTypeInfo(TargetExtType *HandleTy,bool GloballyCoherent =false,
269bool HasCounter =false)
270 :ResourceTypeInfo(HandleTy, {},dxil::ResourceKind::Invalid,
271 GloballyCoherent, HasCounter) {}
272
273TargetExtType *getHandleTy() const{return HandleTy; }
274StructType *createElementStruct();
275
276// Conditions to check before accessing specific views.
277boolisUAV()const;
278boolisCBuffer()const;
279boolisSampler()const;
280boolisStruct()const;
281boolisTyped()const;
282boolisFeedback()const;
283boolisMultiSample()const;
284
285// Views into the type.
286 UAVInfogetUAV()const;
287uint32_tgetCBufferSize(constDataLayout &DL)const;
288dxil::SamplerTypegetSamplerType()const;
289 StructInfogetStruct(constDataLayout &DL)const;
290 TypedInfogetTyped()const;
291dxil::SamplerFeedbackTypegetFeedbackType()const;
292uint32_tgetMultiSampleCount()const;
293
294dxil::ResourceClassgetResourceClass() const{return RC; }
295dxil::ResourceKindgetResourceKind() const{return Kind; }
296
297voidsetGloballyCoherent(bool V) { GloballyCoherent = V; }
298voidsetHasCounter(bool V) { HasCounter = V; }
299
300bool operator==(constResourceTypeInfo &RHS)const;
301booloperator!=(constResourceTypeInfo &RHS) const{return !(*this ==RHS); }
302booloperator<(constResourceTypeInfo &RHS)const;
303
304voidprint(raw_ostream &OS,constDataLayout &DL)const;
305};
306
307//===----------------------------------------------------------------------===//
308
309classResourceBindingInfo {
310public:
311structResourceBinding {
312uint32_tRecordID;
313uint32_tSpace;
314uint32_tLowerBound;
315uint32_tSize;
316
317booloperator==(constResourceBinding &RHS) const{
318return std::tie(RecordID,Space,LowerBound,Size) ==
319 std::tie(RHS.RecordID,RHS.Space,RHS.LowerBound,RHS.Size);
320 }
321booloperator!=(constResourceBinding &RHS) const{
322return !(*this ==RHS);
323 }
324booloperator<(constResourceBinding &RHS) const{
325return std::tie(RecordID,Space,LowerBound,Size) <
326 std::tie(RHS.RecordID,RHS.Space,RHS.LowerBound,RHS.Size);
327 }
328 };
329
330private:
331 ResourceBinding Binding;
332TargetExtType *HandleTy;
333GlobalVariable *Symbol =nullptr;
334
335public:
336ResourceBindingInfo(uint32_t RecordID,uint32_t Space,uint32_t LowerBound,
337uint32_tSize,TargetExtType *HandleTy,
338GlobalVariable *Symbol =nullptr)
339 : Binding{RecordID, Space, LowerBound,Size}, HandleTy(HandleTy),
340 Symbol(Symbol) {}
341
342voidsetBindingID(unsignedID) { Binding.RecordID =ID; }
343
344constResourceBinding &getBinding() const{return Binding; }
345TargetExtType *getHandleTy() const{return HandleTy; }
346constStringRefgetName() const{return Symbol ? Symbol->getName() :""; }
347
348boolhasSymbol() const{return Symbol; }
349GlobalVariable *createSymbol(Module &M,StructType *Ty,StringRefName ="");
350MDTuple *getAsMetadata(Module &M,dxil::ResourceTypeInfo &RTI)const;
351
352 std::pair<uint32_t, uint32_t>
353getAnnotateProps(Module &M,dxil::ResourceTypeInfo &RTI)const;
354
355booloperator==(constResourceBindingInfo &RHS) const{
356return std::tie(Binding, HandleTy, Symbol) ==
357 std::tie(RHS.Binding,RHS.HandleTy,RHS.Symbol);
358 }
359booloperator!=(constResourceBindingInfo &RHS) const{
360return !(*this ==RHS);
361 }
362booloperator<(constResourceBindingInfo &RHS) const{
363return Binding <RHS.Binding;
364 }
365
366voidprint(raw_ostream &OS,dxil::ResourceTypeInfo &RTI,
367constDataLayout &DL)const;
368};
369
370}// namespace dxil
371
372//===----------------------------------------------------------------------===//
373
374classDXILResourceTypeMap {
375DenseMap<TargetExtType *, dxil::ResourceTypeInfo> Infos;
376
377public:
378boolinvalidate(Module &M,constPreservedAnalyses &PA,
379ModuleAnalysisManager::Invalidator &Inv);
380
381dxil::ResourceTypeInfo &operator[](TargetExtType *Ty) {
382auto It = Infos.find(Ty);
383if (It != Infos.end())
384return It->second;
385auto [NewIt, Inserted] = Infos.try_emplace(Ty, Ty);
386return NewIt->second;
387 }
388};
389
390classDXILResourceTypeAnalysis
391 :publicAnalysisInfoMixin<DXILResourceTypeAnalysis> {
392friendAnalysisInfoMixin<DXILResourceTypeAnalysis>;
393
394staticAnalysisKey Key;
395
396public:
397usingResult =DXILResourceTypeMap;
398
399DXILResourceTypeMaprun(Module &M,ModuleAnalysisManager &AM) {
400// Running the pass just generates an empty map, which will be filled when
401// users of the pass query the results.
402returnResult();
403 }
404};
405
406classDXILResourceTypeWrapperPass :publicImmutablePass {
407DXILResourceTypeMap DRTM;
408
409virtualvoid anchor();
410
411public:
412staticcharID;
413DXILResourceTypeWrapperPass();
414
415DXILResourceTypeMap &getResourceTypeMap() {return DRTM; }
416constDXILResourceTypeMap &getResourceTypeMap() const{return DRTM; }
417};
418
419ModulePass *createDXILResourceTypeWrapperPassPass();
420
421//===----------------------------------------------------------------------===//
422
423classDXILBindingMap {
424SmallVector<dxil::ResourceBindingInfo> Infos;
425DenseMap<CallInst *, unsigned> CallMap;
426unsigned FirstUAV = 0;
427unsigned FirstCBuffer = 0;
428unsigned FirstSampler = 0;
429
430 /// Populate the map given the resource binding calls in the given module.
431void populate(Module &M,DXILResourceTypeMap &DRTM);
432
433public:
434usingiterator =SmallVector<dxil::ResourceBindingInfo>::iterator;
435usingconst_iterator =SmallVector<dxil::ResourceBindingInfo>::const_iterator;
436
437iteratorbegin() {return Infos.begin(); }
438const_iteratorbegin() const{return Infos.begin(); }
439iteratorend() {return Infos.end(); }
440const_iteratorend() const{return Infos.end(); }
441
442boolempty() const{return Infos.empty(); }
443
444iteratorfind(constCallInst *Key) {
445auto Pos = CallMap.find(Key);
446return Pos == CallMap.end() ? Infos.end() : (Infos.begin() + Pos->second);
447 }
448
449const_iteratorfind(constCallInst *Key) const{
450auto Pos = CallMap.find(Key);
451return Pos == CallMap.end() ? Infos.end() : (Infos.begin() + Pos->second);
452 }
453
454iteratorsrv_begin() {returnbegin(); }
455const_iteratorsrv_begin() const{returnbegin(); }
456iteratorsrv_end() {returnbegin() + FirstUAV; }
457const_iteratorsrv_end() const{returnbegin() + FirstUAV; }
458iterator_range<iterator>srvs() {returnmake_range(srv_begin(),srv_end()); }
459iterator_range<const_iterator>srvs() const{
460returnmake_range(srv_begin(),srv_end());
461 }
462
463iteratoruav_begin() {returnbegin() + FirstUAV; }
464const_iteratoruav_begin() const{returnbegin() + FirstUAV; }
465iteratoruav_end() {returnbegin() + FirstCBuffer; }
466const_iteratoruav_end() const{returnbegin() + FirstCBuffer; }
467iterator_range<iterator>uavs() {returnmake_range(uav_begin(),uav_end()); }
468iterator_range<const_iterator>uavs() const{
469returnmake_range(uav_begin(),uav_end());
470 }
471
472iteratorcbuffer_begin() {returnbegin() + FirstCBuffer; }
473const_iteratorcbuffer_begin() const{returnbegin() + FirstCBuffer; }
474iteratorcbuffer_end() {returnbegin() + FirstSampler; }
475const_iteratorcbuffer_end() const{returnbegin() + FirstSampler; }
476iterator_range<iterator>cbuffers() {
477returnmake_range(cbuffer_begin(),cbuffer_end());
478 }
479iterator_range<const_iterator>cbuffers() const{
480returnmake_range(cbuffer_begin(),cbuffer_end());
481 }
482
483iteratorsampler_begin() {returnbegin() + FirstSampler; }
484const_iteratorsampler_begin() const{returnbegin() + FirstSampler; }
485iteratorsampler_end() {returnend(); }
486const_iteratorsampler_end() const{returnend(); }
487iterator_range<iterator>samplers() {
488returnmake_range(sampler_begin(),sampler_end());
489 }
490iterator_range<const_iterator>samplers() const{
491returnmake_range(sampler_begin(),sampler_end());
492 }
493
494voidprint(raw_ostream &OS,DXILResourceTypeMap &DRTM,
495constDataLayout &DL)const;
496
497friendclassDXILResourceBindingAnalysis;
498friendclassDXILResourceBindingWrapperPass;
499};
500
501classDXILResourceBindingAnalysis
502 :publicAnalysisInfoMixin<DXILResourceBindingAnalysis> {
503friendAnalysisInfoMixin<DXILResourceBindingAnalysis>;
504
505staticAnalysisKey Key;
506
507public:
508usingResult =DXILBindingMap;
509
510 /// Gather resource info for the module \c M.
511DXILBindingMaprun(Module &M,ModuleAnalysisManager &AM);
512};
513
514/// Printer pass for the \c DXILResourceBindingAnalysis results.
515classDXILResourceBindingPrinterPass
516 :publicPassInfoMixin<DXILResourceBindingPrinterPass> {
517raw_ostream &OS;
518
519public:
520explicitDXILResourceBindingPrinterPass(raw_ostream &OS) :OS(OS) {}
521
522PreservedAnalysesrun(Module &M,ModuleAnalysisManager &AM);
523
524staticboolisRequired() {returntrue; }
525};
526
527classDXILResourceBindingWrapperPass :publicModulePass {
528 std::unique_ptr<DXILBindingMap> Map;
529DXILResourceTypeMap *DRTM;
530
531public:
532staticcharID;// Class identification, replacement for typeinfo
533
534DXILResourceBindingWrapperPass();
535~DXILResourceBindingWrapperPass()override;
536
537constDXILBindingMap &getBindingMap() const{return *Map; }
538DXILBindingMap &getBindingMap() {return *Map; }
539
540voidgetAnalysisUsage(AnalysisUsage &AU)const override;
541boolrunOnModule(Module &M)override;
542voidreleaseMemory()override;
543
544voidprint(raw_ostream &OS,constModule *M)const override;
545voiddump()const;
546};
547
548ModulePass *createDXILResourceBindingWrapperPassPass();
549
550}// namespace llvm
551
552#endif// LLVM_ANALYSIS_DXILRESOURCE_H
DL
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Definition:ARMSLSHardening.cpp:73
Alignment.h
DXILABI.h
DerivedTypes.h
Name
std::string Name
Definition:ELFObjHandler.cpp:77
Size
uint64_t Size
Definition:ELFObjHandler.cpp:81
GlobalVariable.h
PassManager.h
This header defines various interfaces for pass management in LLVM.
MapVector.h
This file implements a map that provides insertion order iteration.
Pass.h
OS
raw_pwrite_stream & OS
Definition:SampleProfWriter.cpp:51
StringRef.h
RHS
Value * RHS
Definition:X86PartialReduction.cpp:74
T
llvm::AnalysisManager::Invalidator
API to communicate dependencies between analyses during invalidation.
Definition:PassManager.h:292
llvm::AnalysisManager
A container for analyses that lazily runs them and caches their results.
Definition:PassManager.h:253
llvm::AnalysisUsage
Represent the analysis usage information of a pass.
Definition:PassAnalysisSupport.h:47
llvm::CallInst
This class represents a function call, abstracting a target machine's calling convention.
Definition:Instructions.h:1479
llvm::DXILBindingMap
Definition:DXILResource.h:423
llvm::DXILBindingMap::srvs
iterator_range< const_iterator > srvs() const
Definition:DXILResource.h:459
llvm::DXILBindingMap::cbuffers
iterator_range< iterator > cbuffers()
Definition:DXILResource.h:476
llvm::DXILBindingMap::find
iterator find(const CallInst *Key)
Definition:DXILResource.h:444
llvm::DXILBindingMap::sampler_end
const_iterator sampler_end() const
Definition:DXILResource.h:486
llvm::DXILBindingMap::samplers
iterator_range< const_iterator > samplers() const
Definition:DXILResource.h:490
llvm::DXILBindingMap::print
void print(raw_ostream &OS, DXILResourceTypeMap &DRTM, const DataLayout &DL) const
Definition:DXILResource.cpp:757
llvm::DXILBindingMap::sampler_begin
const_iterator sampler_begin() const
Definition:DXILResource.h:484
llvm::DXILBindingMap::cbuffer_begin
iterator cbuffer_begin()
Definition:DXILResource.h:472
llvm::DXILBindingMap::begin
const_iterator begin() const
Definition:DXILResource.h:438
llvm::DXILBindingMap::cbuffer_end
const_iterator cbuffer_end() const
Definition:DXILResource.h:475
llvm::DXILBindingMap::srv_begin
const_iterator srv_begin() const
Definition:DXILResource.h:455
llvm::DXILBindingMap::empty
bool empty() const
Definition:DXILResource.h:442
llvm::DXILBindingMap::uav_end
iterator uav_end()
Definition:DXILResource.h:465
llvm::DXILBindingMap::begin
iterator begin()
Definition:DXILResource.h:437
llvm::DXILBindingMap::srvs
iterator_range< iterator > srvs()
Definition:DXILResource.h:458
llvm::DXILBindingMap::sampler_end
iterator sampler_end()
Definition:DXILResource.h:485
llvm::DXILBindingMap::find
const_iterator find(const CallInst *Key) const
Definition:DXILResource.h:449
llvm::DXILBindingMap::samplers
iterator_range< iterator > samplers()
Definition:DXILResource.h:487
llvm::DXILBindingMap::uavs
iterator_range< const_iterator > uavs() const
Definition:DXILResource.h:468
llvm::DXILBindingMap::cbuffers
iterator_range< const_iterator > cbuffers() const
Definition:DXILResource.h:479
llvm::DXILBindingMap::end
const_iterator end() const
Definition:DXILResource.h:440
llvm::DXILBindingMap::uav_end
const_iterator uav_end() const
Definition:DXILResource.h:466
llvm::DXILBindingMap::uav_begin
iterator uav_begin()
Definition:DXILResource.h:463
llvm::DXILBindingMap::cbuffer_begin
const_iterator cbuffer_begin() const
Definition:DXILResource.h:473
llvm::DXILBindingMap::srv_end
const_iterator srv_end() const
Definition:DXILResource.h:457
llvm::DXILBindingMap::srv_end
iterator srv_end()
Definition:DXILResource.h:456
llvm::DXILBindingMap::uav_begin
const_iterator uav_begin() const
Definition:DXILResource.h:464
llvm::DXILBindingMap::cbuffer_end
iterator cbuffer_end()
Definition:DXILResource.h:474
llvm::DXILBindingMap::uavs
iterator_range< iterator > uavs()
Definition:DXILResource.h:467
llvm::DXILBindingMap::srv_begin
iterator srv_begin()
Definition:DXILResource.h:454
llvm::DXILBindingMap::end
iterator end()
Definition:DXILResource.h:439
llvm::DXILBindingMap::sampler_begin
iterator sampler_begin()
Definition:DXILResource.h:483
llvm::DXILResourceBindingAnalysis
Definition:DXILResource.h:502
llvm::DXILResourceBindingAnalysis::run
DXILBindingMap run(Module &M, ModuleAnalysisManager &AM)
Gather resource info for the module M.
Definition:DXILResource.cpp:778
llvm::DXILResourceBindingPrinterPass
Printer pass for the DXILResourceBindingAnalysis results.
Definition:DXILResource.h:516
llvm::DXILResourceBindingPrinterPass::DXILResourceBindingPrinterPass
DXILResourceBindingPrinterPass(raw_ostream &OS)
Definition:DXILResource.h:520
llvm::DXILResourceBindingPrinterPass::run
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
Definition:DXILResource.cpp:787
llvm::DXILResourceBindingPrinterPass::isRequired
static bool isRequired()
Definition:DXILResource.h:524
llvm::DXILResourceBindingWrapperPass
Definition:DXILResource.h:527
llvm::DXILResourceBindingWrapperPass::runOnModule
bool runOnModule(Module &M) override
runOnModule - Virtual method overriden by subclasses to process the module being operated on.
Definition:DXILResource.cpp:822
llvm::DXILResourceBindingWrapperPass::getAnalysisUsage
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
Definition:DXILResource.cpp:817
llvm::DXILResourceBindingWrapperPass::~DXILResourceBindingWrapperPass
~DXILResourceBindingWrapperPass() override
llvm::DXILResourceBindingWrapperPass::dump
void dump() const
Definition:DXILResource.cpp:844
llvm::DXILResourceBindingWrapperPass::DXILResourceBindingWrapperPass
DXILResourceBindingWrapperPass()
Definition:DXILResource.cpp:809
llvm::DXILResourceBindingWrapperPass::print
void print(raw_ostream &OS, const Module *M) const override
print - Print out the internal state of the pass.
Definition:DXILResource.cpp:833
llvm::DXILResourceBindingWrapperPass::ID
static char ID
Definition:DXILResource.h:532
llvm::DXILResourceBindingWrapperPass::releaseMemory
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
Definition:DXILResource.cpp:831
llvm::DXILResourceBindingWrapperPass::getBindingMap
const DXILBindingMap & getBindingMap() const
Definition:DXILResource.h:537
llvm::DXILResourceBindingWrapperPass::getBindingMap
DXILBindingMap & getBindingMap()
Definition:DXILResource.h:538
llvm::DXILResourceTypeAnalysis
Definition:DXILResource.h:391
llvm::DXILResourceTypeAnalysis::run
DXILResourceTypeMap run(Module &M, ModuleAnalysisManager &AM)
Definition:DXILResource.h:399
llvm::DXILResourceTypeAnalysis::Result
DXILResourceTypeMap Result
Definition:DXILResource.h:397
llvm::DXILResourceTypeMap
Definition:DXILResource.h:374
llvm::DXILResourceTypeMap::operator[]
dxil::ResourceTypeInfo & operator[](TargetExtType *Ty)
Definition:DXILResource.h:381
llvm::DXILResourceTypeMap::invalidate
bool invalidate(Module &M, const PreservedAnalyses &PA, ModuleAnalysisManager::Invalidator &Inv)
Definition:DXILResource.cpp:673
llvm::DXILResourceTypeWrapperPass
Definition:DXILResource.h:406
llvm::DXILResourceTypeWrapperPass::DXILResourceTypeWrapperPass
DXILResourceTypeWrapperPass()
Definition:DXILResource.cpp:797
llvm::DXILResourceTypeWrapperPass::getResourceTypeMap
DXILResourceTypeMap & getResourceTypeMap()
Definition:DXILResource.h:415
llvm::DXILResourceTypeWrapperPass::ID
static char ID
Definition:DXILResource.h:412
llvm::DXILResourceTypeWrapperPass::getResourceTypeMap
const DXILResourceTypeMap & getResourceTypeMap() const
Definition:DXILResource.h:416
llvm::DataLayout
A parsed version of the target data layout string in and methods for querying it.
Definition:DataLayout.h:63
llvm::DenseMapBase::find
iterator find(const_arg_type_t< KeyT > Val)
Definition:DenseMap.h:156
llvm::DenseMapBase::try_emplace
std::pair< iterator, bool > try_emplace(KeyT &&Key, Ts &&...Args)
Definition:DenseMap.h:226
llvm::DenseMapBase::end
iterator end()
Definition:DenseMap.h:84
llvm::DenseMap
Definition:DenseMap.h:727
llvm::ElementCount
Definition:TypeSize.h:300
llvm::GlobalVariable
Definition:GlobalVariable.h:39
llvm::ImmutablePass
ImmutablePass class - This class is used to provide information that does not need to be run.
Definition:Pass.h:281
llvm::MDTuple
Tuple of metadata.
Definition:Metadata.h:1479
llvm::ModulePass
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition:Pass.h:251
llvm::Module
A Module instance is used to store all the information related to an LLVM module.
Definition:Module.h:65
llvm::PreservedAnalyses
A set of analyses that are preserved following a run of a transformation pass.
Definition:Analysis.h:111
llvm::SmallVectorBase::empty
bool empty() const
Definition:SmallVector.h:81
llvm::SmallVectorTemplateCommon::end
iterator end()
Definition:SmallVector.h:269
llvm::SmallVectorTemplateCommon::begin
iterator begin()
Definition:SmallVector.h:267
llvm::SmallVector
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition:SmallVector.h:1196
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:StringRef.h:51
llvm::StructType
Class to represent struct types.
Definition:DerivedTypes.h:218
llvm::TargetExtType
Class to represent target extensions types, which are generally unintrospectable from target-independ...
Definition:DerivedTypes.h:744
llvm::TargetExtType::getTypeParameter
Type * getTypeParameter(unsigned i) const
Definition:DerivedTypes.h:792
llvm::TargetExtType::getIntParameter
unsigned getIntParameter(unsigned i) const
Definition:DerivedTypes.h:801
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition:Type.h:45
llvm::Type::isIntegerTy
bool isIntegerTy() const
True if this is an instance of IntegerType.
Definition:Type.h:237
llvm::Type::isVoidTy
bool isVoidTy() const
Return true if this is 'void'.
Definition:Type.h:139
llvm::dxil::CBufferExtType
The dx.CBuffer target extension type.
Definition:DXILResource.h:162
llvm::dxil::CBufferExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:171
llvm::dxil::CBufferExtType::operator=
CBufferExtType & operator=(const CBufferExtType &)=delete
llvm::dxil::CBufferExtType::CBufferExtType
CBufferExtType(const CBufferExtType &)=delete
llvm::dxil::CBufferExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:174
llvm::dxil::CBufferExtType::getCBufferSize
uint32_t getCBufferSize() const
Definition:DXILResource.h:169
llvm::dxil::CBufferExtType::getResourceType
Type * getResourceType() const
Definition:DXILResource.h:168
llvm::dxil::CBufferExtType::CBufferExtType
CBufferExtType()=delete
llvm::dxil::FeedbackTextureExtType
The dx.FeedbackTexture target extension type.
Definition:DXILResource.h:138
llvm::dxil::FeedbackTextureExtType::getFeedbackType
dxil::SamplerFeedbackType getFeedbackType() const
Definition:DXILResource.h:144
llvm::dxil::FeedbackTextureExtType::FeedbackTextureExtType
FeedbackTextureExtType(const FeedbackTextureExtType &)=delete
llvm::dxil::FeedbackTextureExtType::getDimension
dxil::ResourceKind getDimension() const
Definition:DXILResource.h:147
llvm::dxil::FeedbackTextureExtType::operator=
FeedbackTextureExtType & operator=(const FeedbackTextureExtType &)=delete
llvm::dxil::FeedbackTextureExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:151
llvm::dxil::FeedbackTextureExtType::FeedbackTextureExtType
FeedbackTextureExtType()=delete
llvm::dxil::FeedbackTextureExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:154
llvm::dxil::MSTextureExtType
The dx.MSTexture target extension type.
Definition:DXILResource.h:113
llvm::dxil::MSTextureExtType::getDimension
dxil::ResourceKind getDimension() const
Definition:DXILResource.h:123
llvm::dxil::MSTextureExtType::MSTextureExtType
MSTextureExtType(const MSTextureExtType &)=delete
llvm::dxil::MSTextureExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:127
llvm::dxil::MSTextureExtType::MSTextureExtType
MSTextureExtType()=delete
llvm::dxil::MSTextureExtType::getResourceType
Type * getResourceType() const
Definition:DXILResource.h:119
llvm::dxil::MSTextureExtType::getSampleCount
uint32_t getSampleCount() const
Definition:DXILResource.h:121
llvm::dxil::MSTextureExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:130
llvm::dxil::MSTextureExtType::isSigned
bool isSigned() const
Definition:DXILResource.h:122
llvm::dxil::MSTextureExtType::isWriteable
bool isWriteable() const
Definition:DXILResource.h:120
llvm::dxil::MSTextureExtType::operator=
MSTextureExtType & operator=(const MSTextureExtType &)=delete
llvm::dxil::RawBufferExtType
The dx.RawBuffer target extension type.
Definition:DXILResource.h:35
llvm::dxil::RawBufferExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:55
llvm::dxil::RawBufferExtType::isStructured
bool isStructured() const
Definition:DXILResource.h:41
llvm::dxil::RawBufferExtType::isWriteable
bool isWriteable() const
Definition:DXILResource.h:52
llvm::dxil::RawBufferExtType::RawBufferExtType
RawBufferExtType()=delete
llvm::dxil::RawBufferExtType::RawBufferExtType
RawBufferExtType(const RawBufferExtType &)=delete
llvm::dxil::RawBufferExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:58
llvm::dxil::RawBufferExtType::operator=
RawBufferExtType & operator=(const RawBufferExtType &)=delete
llvm::dxil::RawBufferExtType::isROV
bool isROV() const
Definition:DXILResource.h:53
llvm::dxil::RawBufferExtType::getResourceType
Type * getResourceType() const
Definition:DXILResource.h:49
llvm::dxil::ResourceBindingInfo
Definition:DXILResource.h:309
llvm::dxil::ResourceBindingInfo::getName
const StringRef getName() const
Definition:DXILResource.h:346
llvm::dxil::ResourceBindingInfo::operator==
bool operator==(const ResourceBindingInfo &RHS) const
Definition:DXILResource.h:355
llvm::dxil::ResourceBindingInfo::setBindingID
void setBindingID(unsigned ID)
Definition:DXILResource.h:342
llvm::dxil::ResourceBindingInfo::hasSymbol
bool hasSymbol() const
Definition:DXILResource.h:348
llvm::dxil::ResourceBindingInfo::operator<
bool operator<(const ResourceBindingInfo &RHS) const
Definition:DXILResource.h:362
llvm::dxil::ResourceBindingInfo::createSymbol
GlobalVariable * createSymbol(Module &M, StructType *Ty, StringRef Name="")
Definition:DXILResource.cpp:527
llvm::dxil::ResourceBindingInfo::getAnnotateProps
std::pair< uint32_t, uint32_t > getAnnotateProps(Module &M, dxil::ResourceTypeInfo &RTI) const
Definition:DXILResource.cpp:606
llvm::dxil::ResourceBindingInfo::getHandleTy
TargetExtType * getHandleTy() const
Definition:DXILResource.h:345
llvm::dxil::ResourceBindingInfo::getAsMetadata
MDTuple * getAsMetadata(Module &M, dxil::ResourceTypeInfo &RTI) const
Definition:DXILResource.cpp:536
llvm::dxil::ResourceBindingInfo::ResourceBindingInfo
ResourceBindingInfo(uint32_t RecordID, uint32_t Space, uint32_t LowerBound, uint32_t Size, TargetExtType *HandleTy, GlobalVariable *Symbol=nullptr)
Definition:DXILResource.h:336
llvm::dxil::ResourceBindingInfo::getBinding
const ResourceBinding & getBinding() const
Definition:DXILResource.h:344
llvm::dxil::ResourceBindingInfo::operator!=
bool operator!=(const ResourceBindingInfo &RHS) const
Definition:DXILResource.h:359
llvm::dxil::ResourceBindingInfo::print
void print(raw_ostream &OS, dxil::ResourceTypeInfo &RTI, const DataLayout &DL) const
Definition:DXILResource.cpp:654
llvm::dxil::ResourceTypeInfo
Definition:DXILResource.h:202
llvm::dxil::ResourceTypeInfo::getResourceClass
dxil::ResourceClass getResourceClass() const
Definition:DXILResource.h:294
llvm::dxil::ResourceTypeInfo::getMultiSampleCount
uint32_t getMultiSampleCount() const
Definition:DXILResource.cpp:459
llvm::dxil::ResourceTypeInfo::getCBufferSize
uint32_t getCBufferSize(const DataLayout &DL) const
Definition:DXILResource.cpp:383
llvm::dxil::ResourceTypeInfo::operator<
bool operator<(const ResourceTypeInfo &RHS) const
Definition:DXILResource.cpp:469
llvm::dxil::ResourceTypeInfo::isUAV
bool isUAV() const
Definition:DXILResource.cpp:294
llvm::dxil::ResourceTypeInfo::isMultiSample
bool isMultiSample() const
Definition:DXILResource.cpp:342
llvm::dxil::ResourceTypeInfo::isSampler
bool isSampler() const
Definition:DXILResource.cpp:300
llvm::dxil::ResourceTypeInfo::isTyped
bool isTyped() const
Definition:DXILResource.cpp:308
llvm::dxil::ResourceTypeInfo::getSamplerType
dxil::SamplerType getSamplerType() const
Definition:DXILResource.cpp:388
llvm::dxil::ResourceTypeInfo::setHasCounter
void setHasCounter(bool V)
Definition:DXILResource.h:298
llvm::dxil::ResourceTypeInfo::isCBuffer
bool isCBuffer() const
Definition:DXILResource.cpp:296
llvm::dxil::ResourceTypeInfo::getTyped
TypedInfo getTyped() const
Definition:DXILResource.cpp:444
llvm::dxil::ResourceTypeInfo::operator!=
bool operator!=(const ResourceTypeInfo &RHS) const
Definition:DXILResource.h:301
llvm::dxil::ResourceTypeInfo::getHandleTy
TargetExtType * getHandleTy() const
Definition:DXILResource.h:273
llvm::dxil::ResourceTypeInfo::createElementStruct
StructType * createElementStruct()
Definition:DXILResource.cpp:225
llvm::dxil::ResourceTypeInfo::isFeedback
bool isFeedback() const
Definition:DXILResource.cpp:337
llvm::dxil::ResourceTypeInfo::ResourceTypeInfo
ResourceTypeInfo(TargetExtType *HandleTy, bool GloballyCoherent=false, bool HasCounter=false)
Definition:DXILResource.h:268
llvm::dxil::ResourceTypeInfo::setGloballyCoherent
void setGloballyCoherent(bool V)
Definition:DXILResource.h:297
llvm::dxil::ResourceTypeInfo::getUAV
UAVInfo getUAV() const
Definition:DXILResource.cpp:378
llvm::dxil::ResourceTypeInfo::getStruct
StructInfo getStruct(const DataLayout &DL) const
Definition:DXILResource.cpp:394
llvm::dxil::ResourceTypeInfo::isStruct
bool isStruct() const
Definition:DXILResource.cpp:304
llvm::dxil::ResourceTypeInfo::getFeedbackType
dxil::SamplerFeedbackType getFeedbackType() const
Definition:DXILResource.cpp:455
llvm::dxil::ResourceTypeInfo::getResourceKind
dxil::ResourceKind getResourceKind() const
Definition:DXILResource.h:295
llvm::dxil::ResourceTypeInfo::print
void print(raw_ostream &OS, const DataLayout &DL) const
Definition:DXILResource.cpp:495
llvm::dxil::SamplerExtType
The dx.Sampler target extension type.
Definition:DXILResource.h:182
llvm::dxil::SamplerExtType::SamplerExtType
SamplerExtType(const SamplerExtType &)=delete
llvm::dxil::SamplerExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:195
llvm::dxil::SamplerExtType::getSamplerType
dxil::SamplerType getSamplerType() const
Definition:DXILResource.h:188
llvm::dxil::SamplerExtType::operator=
SamplerExtType & operator=(const SamplerExtType &)=delete
llvm::dxil::SamplerExtType::SamplerExtType
SamplerExtType()=delete
llvm::dxil::SamplerExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:192
llvm::dxil::TextureExtType
The dx.Texture target extension type.
Definition:DXILResource.h:88
llvm::dxil::TextureExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:102
llvm::dxil::TextureExtType::getDimension
dxil::ResourceKind getDimension() const
Definition:DXILResource.h:98
llvm::dxil::TextureExtType::getResourceType
Type * getResourceType() const
Definition:DXILResource.h:94
llvm::dxil::TextureExtType::isWriteable
bool isWriteable() const
Definition:DXILResource.h:95
llvm::dxil::TextureExtType::operator=
TextureExtType & operator=(const TextureExtType &)=delete
llvm::dxil::TextureExtType::TextureExtType
TextureExtType(const TextureExtType &)=delete
llvm::dxil::TextureExtType::TextureExtType
TextureExtType()=delete
llvm::dxil::TextureExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:105
llvm::dxil::TextureExtType::isSigned
bool isSigned() const
Definition:DXILResource.h:97
llvm::dxil::TextureExtType::isROV
bool isROV() const
Definition:DXILResource.h:96
llvm::dxil::TypedBufferExtType
The dx.TypedBuffer target extension type.
Definition:DXILResource.h:66
llvm::dxil::TypedBufferExtType::getResourceType
Type * getResourceType() const
Definition:DXILResource.h:72
llvm::dxil::TypedBufferExtType::isROV
bool isROV() const
Definition:DXILResource.h:74
llvm::dxil::TypedBufferExtType::isSigned
bool isSigned() const
Definition:DXILResource.h:75
llvm::dxil::TypedBufferExtType::operator=
TypedBufferExtType & operator=(const TypedBufferExtType &)=delete
llvm::dxil::TypedBufferExtType::TypedBufferExtType
TypedBufferExtType()=delete
llvm::dxil::TypedBufferExtType::isWriteable
bool isWriteable() const
Definition:DXILResource.h:73
llvm::dxil::TypedBufferExtType::classof
static bool classof(const TargetExtType *T)
Definition:DXILResource.h:77
llvm::dxil::TypedBufferExtType::TypedBufferExtType
TypedBufferExtType(const TypedBufferExtType &)=delete
llvm::dxil::TypedBufferExtType::classof
static bool classof(const Type *T)
Definition:DXILResource.h:80
llvm::iterator_range
A range adaptor for a pair of iterators.
Definition:iterator_range.h:42
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition:raw_ostream.h:52
uint32_t
unsigned
llvm::CallingConv::ID
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
Definition:CallingConv.h:24
llvm::TargetStackID::Value
Value
Definition:TargetFrameLowering.h:29
llvm::dxil::ResourceKind
ResourceKind
The kind of resource for an SRV or UAV resource.
Definition:DXILABI.h:34
llvm::dxil::ResourceKind::Invalid
@ Invalid
llvm::dxil::ResourceClass
ResourceClass
Definition:DXILABI.h:25
llvm::dxil::SamplerType
SamplerType
Definition:DXILABI.h:88
llvm::dxil::SamplerFeedbackType
SamplerFeedbackType
Definition:DXILABI.h:94
llvm::dxil::ElementType
ElementType
The element type of an SRV or UAV resource.
Definition:DXILABI.h:58
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:AddressRanges.h:18
llvm::make_range
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
Definition:iterator_range.h:77
llvm::createDXILResourceTypeWrapperPassPass
ModulePass * createDXILResourceTypeWrapperPassPass()
llvm::createDXILResourceBindingWrapperPassPass
ModulePass * createDXILResourceBindingWrapperPassPass()
llvm::AnalysisInfoMixin
A CRTP mix-in that provides informational APIs needed for analysis passes.
Definition:PassManager.h:92
llvm::AnalysisKey
A special type used by analysis passes to provide an address that identifies that particular analysis...
Definition:Analysis.h:28
llvm::PassInfoMixin
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition:PassManager.h:69
llvm::dxil::ResourceBindingInfo::ResourceBinding
Definition:DXILResource.h:311
llvm::dxil::ResourceBindingInfo::ResourceBinding::operator!=
bool operator!=(const ResourceBinding &RHS) const
Definition:DXILResource.h:321
llvm::dxil::ResourceBindingInfo::ResourceBinding::LowerBound
uint32_t LowerBound
Definition:DXILResource.h:314
llvm::dxil::ResourceBindingInfo::ResourceBinding::RecordID
uint32_t RecordID
Definition:DXILResource.h:312
llvm::dxil::ResourceBindingInfo::ResourceBinding::operator<
bool operator<(const ResourceBinding &RHS) const
Definition:DXILResource.h:324
llvm::dxil::ResourceBindingInfo::ResourceBinding::operator==
bool operator==(const ResourceBinding &RHS) const
Definition:DXILResource.h:317
llvm::dxil::ResourceBindingInfo::ResourceBinding::Size
uint32_t Size
Definition:DXILResource.h:315
llvm::dxil::ResourceBindingInfo::ResourceBinding::Space
uint32_t Space
Definition:DXILResource.h:313
llvm::dxil::ResourceTypeInfo::StructInfo
Definition:DXILResource.h:220
llvm::dxil::ResourceTypeInfo::StructInfo::operator==
bool operator==(const StructInfo &RHS) const
Definition:DXILResource.h:228
llvm::dxil::ResourceTypeInfo::StructInfo::operator!=
bool operator!=(const StructInfo &RHS) const
Definition:DXILResource.h:231
llvm::dxil::ResourceTypeInfo::StructInfo::AlignLog2
uint32_t AlignLog2
Definition:DXILResource.h:226
llvm::dxil::ResourceTypeInfo::StructInfo::Stride
uint32_t Stride
Definition:DXILResource.h:221
llvm::dxil::ResourceTypeInfo::StructInfo::operator<
bool operator<(const StructInfo &RHS) const
Definition:DXILResource.h:232
llvm::dxil::ResourceTypeInfo::TypedInfo
Definition:DXILResource.h:237
llvm::dxil::ResourceTypeInfo::TypedInfo::ElementCount
uint32_t ElementCount
Definition:DXILResource.h:239
llvm::dxil::ResourceTypeInfo::TypedInfo::operator<
bool operator<(const TypedInfo &RHS) const
Definition:DXILResource.h:246
llvm::dxil::ResourceTypeInfo::TypedInfo::operator==
bool operator==(const TypedInfo &RHS) const
Definition:DXILResource.h:241
llvm::dxil::ResourceTypeInfo::TypedInfo::ElementTy
dxil::ElementType ElementTy
Definition:DXILResource.h:238
llvm::dxil::ResourceTypeInfo::TypedInfo::operator!=
bool operator!=(const TypedInfo &RHS) const
Definition:DXILResource.h:245
llvm::dxil::ResourceTypeInfo::UAVInfo
Definition:DXILResource.h:204
llvm::dxil::ResourceTypeInfo::UAVInfo::GloballyCoherent
bool GloballyCoherent
Definition:DXILResource.h:205
llvm::dxil::ResourceTypeInfo::UAVInfo::IsROV
bool IsROV
Definition:DXILResource.h:207
llvm::dxil::ResourceTypeInfo::UAVInfo::operator!=
bool operator!=(const UAVInfo &RHS) const
Definition:DXILResource.h:213
llvm::dxil::ResourceTypeInfo::UAVInfo::operator==
bool operator==(const UAVInfo &RHS) const
Definition:DXILResource.h:209
llvm::dxil::ResourceTypeInfo::UAVInfo::operator<
bool operator<(const UAVInfo &RHS) const
Definition:DXILResource.h:214
llvm::dxil::ResourceTypeInfo::UAVInfo::HasCounter
bool HasCounter
Definition:DXILResource.h:206

Generated on Thu Jul 17 2025 08:30:59 for LLVM by doxygen 1.9.6
[8]ページ先頭

©2009-2025 Movatter.jp