================ @@ -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 { ---------------- llvm-beanz wrote:
Given that the template doesn't cover all cases, it seems like it probably adds complexity that isn't needed since all cases can be handled by the other macro approach. https://github.com/llvm/llvm-project/pull/87171 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits