[clang] [llvm] [HLSL][DXIL][SPIRV] Implementation of an abstraction for intrinsic selection of HLSL backends (PR #87171)
Farzon Lotfi via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 4 13:52:55 PDT 2024
================
@@ -0,0 +1,47 @@
+
+//===----- CGHLSLUtils.h - Utility functions for HLSL CodeGen ---*- 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 provides utility functions for HLSL code generation.
+// It is used to abstract away implementation details of backends.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_LIB_CODEGEN_CGHLSLUTILS_H
+#define LLVM_CLANG_LIB_CODEGEN_CGHLSLUTILS_H
+
+#include "llvm/IR/Intrinsics.h"
+#include "llvm/IR/IntrinsicsDirectX.h"
+#include "llvm/IR/IntrinsicsSPIRV.h"
+
+// Define the function generator macro
+#define GENERATE_HLSL_INTRINSIC_FUNCTION(name) \
+ static llvm::Intrinsic::ID get_hlsl_##name##_intrinsic( \
+ const llvm::Triple::ArchType Arch) { \
+ switch (Arch) { \
+ case llvm::Triple::dxil: \
+ return llvm::Intrinsic::dx_##name; \
+ case llvm::Triple::spirv: \
+ return llvm::Intrinsic::spv_##name; \
+ default: \
+ llvm_unreachable("Intrinsic " #name \
+ " not supported by target architecture"); \
+ } \
+ }
+
+namespace clang::CodeGen {
+class HLSLUtils {
----------------
farzonl wrote:
I'll remove the template
https://github.com/llvm/llvm-project/pull/87171
More information about the cfe-commits
mailing list