llvm-project/llvm/lib/Target/DirectX/DXILConstants.h
Justin Bogner f357fe371d
[DirectX] Disentangle DXIL.td's op types from LLVMType. NFC
LLVMType is both too broad and too narrow for defining DXIL operations, in
different ways. It's too broad in the sense that we don't need the full set of
MVTs - the set of types DXIL operations work on is much smaller. It's too
narrow in the sense that it's difficult to use it for the various fixed
structure types in DXIL, like `%dx.types.Handle` or `%dx.Types.ResRet.f32`.

Replace the usage of LLVMType in DXIL.td with DXILOpParamType, a simple class
that we can define an enum of types from. Further, use this to replace the
"ParameterKind" enum in DXILABI.h that has nothing to do with DXIL's ABI.

Pull Request: https://github.com/llvm/llvm-project/pull/104247
2024-08-19 10:09:46 -07:00

37 lines
1005 B
C++

//===- 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"
};
} // namespace dxil
} // namespace llvm
#endif