xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/DirectX/DXILMetadata.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1bdd1243dSDimitry Andric //===- DXILMetadata.h - DXIL Metadata helper objects ----------------------===//
2bdd1243dSDimitry Andric //
3bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6bdd1243dSDimitry Andric //
7bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
8bdd1243dSDimitry Andric ///
9bdd1243dSDimitry Andric /// \file This file contains helper objects for working with DXIL metadata.
10bdd1243dSDimitry Andric ///
11bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
12bdd1243dSDimitry Andric 
13bdd1243dSDimitry Andric #ifndef LLVM_TARGET_DIRECTX_DXILMETADATA_H
14bdd1243dSDimitry Andric #define LLVM_TARGET_DIRECTX_DXILMETADATA_H
15bdd1243dSDimitry Andric 
16bdd1243dSDimitry Andric #include <stdint.h>
17bdd1243dSDimitry Andric 
18bdd1243dSDimitry Andric namespace llvm {
19bdd1243dSDimitry Andric class Module;
20bdd1243dSDimitry Andric class NamedMDNode;
21bdd1243dSDimitry Andric class VersionTuple;
22bdd1243dSDimitry Andric namespace dxil {
23bdd1243dSDimitry Andric 
24bdd1243dSDimitry Andric class ValidatorVersionMD {
25bdd1243dSDimitry Andric   NamedMDNode *Entry;
26bdd1243dSDimitry Andric 
27bdd1243dSDimitry Andric public:
28bdd1243dSDimitry Andric   ValidatorVersionMD(Module &M);
29bdd1243dSDimitry Andric 
30bdd1243dSDimitry Andric   void update(VersionTuple ValidatorVer);
31bdd1243dSDimitry Andric 
32bdd1243dSDimitry Andric   bool isEmpty();
33*0fca6ea1SDimitry Andric   VersionTuple getAsVersionTuple();
34bdd1243dSDimitry Andric };
35bdd1243dSDimitry Andric 
36bdd1243dSDimitry Andric void createShaderModelMD(Module &M);
37*0fca6ea1SDimitry Andric void createDXILVersionMD(Module &M);
38bdd1243dSDimitry Andric void createEntryMD(Module &M, const uint64_t ShaderFlags);
39bdd1243dSDimitry Andric 
40bdd1243dSDimitry Andric } // namespace dxil
41bdd1243dSDimitry Andric } // namespace llvm
42bdd1243dSDimitry Andric 
43bdd1243dSDimitry Andric #endif // LLVM_TARGET_DIRECTX_DXILMETADATA_H
44