//===-- DXILOperationCommon.h - DXIL Operation ------------------*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// // // This file is created to share common definitions used by both the // DXILOpBuilder and the table // generator. // Documentation for DXIL can be found in // https://github.com/Microsoft/DirectXShaderCompiler/blob/main/docs/DXIL.rst. // //===----------------------------------------------------------------------===// #ifndef LLVM_SUPPORT_DXILOPERATIONCOMMON_H #define LLVM_SUPPORT_DXILOPERATIONCOMMON_H #include "llvm/ADT/StringSwitch.h" namespace llvm { namespace dxil { enum class ParameterKind : uint8_t { INVALID = 0, VOID, HALF, FLOAT, DOUBLE, I1, I8, I16, I32, I64, OVERLOAD, CBUFFER_RET, RESOURCE_RET, DXIL_HANDLE, }; inline ParameterKind parameterTypeNameToKind(StringRef Name) { return StringSwitch(Name) .Case("void", ParameterKind::VOID) .Case("half", ParameterKind::HALF) .Case("float", ParameterKind::FLOAT) .Case("double", ParameterKind::DOUBLE) .Case("i1", ParameterKind::I1) .Case("i8", ParameterKind::I8) .Case("i16", ParameterKind::I16) .Case("i32", ParameterKind::I32) .Case("i64", ParameterKind::I64) .Case("$o", ParameterKind::OVERLOAD) .Case("dx.types.Handle", ParameterKind::DXIL_HANDLE) .Case("dx.types.CBufRet", ParameterKind::CBUFFER_RET) .Case("dx.types.ResRet", ParameterKind::RESOURCE_RET) .Default(ParameterKind::INVALID); } } // namespace dxil } // namespace llvm #endif