| //===- DXILConstants.h - Essential DXIL constants -------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| /// |
| /// \file This file contains essential DXIL constants. |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_LIB_TARGET_DIRECTX_DXILCONSTANTS_H |
| #define LLVM_LIB_TARGET_DIRECTX_DXILCONSTANTS_H |
| |
| namespace llvm { |
| namespace dxil { |
| |
| enum class OpCode : unsigned { |
| #define DXIL_OPCODE(Op, Name) Name = Op, |
| #include "DXILOperation.inc" |
| }; |
| |
| enum class OpCodeClass : unsigned { |
| #define DXIL_OPCLASS(Name) Name, |
| #include "DXILOperation.inc" |
| }; |
| |
| enum class OpParamType : unsigned { |
| #define DXIL_OP_PARAM_TYPE(Name) Name, |
| #include "DXILOperation.inc" |
| }; |
| |
| struct Attributes { |
| #define DXIL_ATTRIBUTE(Name) bool Name = false; |
| #include "DXILOperation.inc" |
| }; |
| |
| inline Attributes operator|(Attributes a, Attributes b) { |
| Attributes c; |
| #define DXIL_ATTRIBUTE(Name) c.Name = a.Name | b.Name; |
| #include "DXILOperation.inc" |
| return c; |
| } |
| |
| inline Attributes &operator|=(Attributes &a, Attributes &b) { |
| a = a | b; |
| return a; |
| } |
| |
| } // namespace dxil |
| } // namespace llvm |
| |
| #endif |