https://github.com/inbelic updated https://github.com/llvm/llvm-project/pull/142491
>From 1c8b81ec00e5403cc94a7f12275f0b76f7310b5d Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Mon, 2 Jun 2025 21:35:39 +0000 Subject: [PATCH 1/3] [NFC][RootSignature] Let Root Signature struct defs have own file - this commit moves the helper utilities functions/helper objects to a seperate file, HLSLRootSignatureUtils.[h|cpp] --- .../llvm/Frontend/HLSL/HLSLRootSignature.h | 41 +----------- .../Frontend/HLSL/HLSLRootSignatureUtils.h | 65 +++++++++++++++++++ llvm/lib/Frontend/HLSL/CMakeLists.txt | 2 +- ...gnature.cpp => HLSLRootSignatureUtils.cpp} | 4 +- 4 files changed, 70 insertions(+), 42 deletions(-) create mode 100644 llvm/include/llvm/Frontend/HLSL/HLSLRootSignatureUtils.h rename llvm/lib/Frontend/HLSL/{HLSLRootSignature.cpp => HLSLRootSignatureUtils.cpp} (98%) diff --git a/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h b/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h index ca383a828b5cc..2f028817b45b6 100644 --- a/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h +++ b/llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h @@ -6,25 +6,19 @@ // //===----------------------------------------------------------------------===// /// -/// \file This file contains helper objects for working with HLSL Root -/// Signatures. +/// \file This file contains structure definitions of HLSL Root Signature +/// objects. /// //===----------------------------------------------------------------------===// #ifndef LLVM_FRONTEND_HLSL_HLSLROOTSIGNATURE_H #define LLVM_FRONTEND_HLSL_HLSLROOTSIGNATURE_H -#include "llvm/ADT/ArrayRef.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/DXILABI.h" -#include "llvm/Support/raw_ostream.h" #include <variant> namespace llvm { -class LLVMContext; -class MDNode; -class Metadata; - namespace hlsl { namespace rootsig { @@ -195,8 +189,6 @@ struct DescriptorTable { uint32_t NumClauses = 0; }; -LLVM_ABI raw_ostream &operator<<(raw_ostream &OS, const DescriptorTable &Table); - static const uint32_t NumDescriptorsUnbounded = 0xffffffff; static const uint32_t DescriptorTableOffsetAppend = 0xffffffff; // Models DTClause : CBV | SRV | UAV | Sampler, by collecting like parameters @@ -225,9 +217,6 @@ struct DescriptorTableClause { } }; -LLVM_ABI raw_ostream &operator<<(raw_ostream &OS, - const DescriptorTableClause &Clause); - struct StaticSampler { Register Reg; SamplerFilter Filter = SamplerFilter::Anisotropic; @@ -264,32 +253,6 @@ using RootElement = std::variant<RootFlags, RootConstants, RootDescriptor, DescriptorTable, DescriptorTableClause, StaticSampler>; -LLVM_ABI void dumpRootElements(raw_ostream &OS, ArrayRef<RootElement> Elements); - -class MetadataBuilder { -public: - MetadataBuilder(llvm::LLVMContext &Ctx, ArrayRef<RootElement> Elements) - : Ctx(Ctx), Elements(Elements) {} - - /// Iterates through the elements and dispatches onto the correct Build method - /// - /// Accumulates the root signature and returns the Metadata node that is just - /// a list of all the elements - LLVM_ABI MDNode *BuildRootSignature(); - -private: - /// Define the various builders for the different metadata types - MDNode *BuildRootFlags(const RootFlags &Flags); - MDNode *BuildRootConstants(const RootConstants &Constants); - MDNode *BuildRootDescriptor(const RootDescriptor &Descriptor); - MDNode *BuildDescriptorTable(const DescriptorTable &Table); - MDNode *BuildDescriptorTableClause(const DescriptorTableClause &Clause); - - llvm::LLVMContext &Ctx; - ArrayRef<RootElement> Elements; - SmallVector<Metadata *> GeneratedMetadata; -}; - } // namespace rootsig } // namespace hlsl } // namespace llvm diff --git a/llvm/include/llvm/Frontend/HLSL/HLSLRootSignatureUtils.h b/llvm/include/llvm/Frontend/HLSL/HLSLRootSignatureUtils.h new file mode 100644 index 0000000000000..365197a4dfdb5 --- /dev/null +++ b/llvm/include/llvm/Frontend/HLSL/HLSLRootSignatureUtils.h @@ -0,0 +1,65 @@ +//===- HLSLRootSignatureUtils.h - HLSL Root Signature helpers -------------===// +// +// 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 helper obejcts for working with HLSL Root +/// Signatures. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_FRONTEND_HLSL_HLSLROOTSIGNATUREUTILS_H +#define LLVM_FRONTEND_HLSL_HLSLROOTSIGNATUREUTILS_H + +#include "llvm/ADT/ArrayRef.h" +#include "llvm/Frontend/HLSL/HLSLRootSignature.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/raw_ostream.h" + +namespace llvm { +class LLVMContext; +class MDNode; +class Metadata; + +namespace hlsl { +namespace rootsig { + +LLVM_ABI raw_ostream &operator<<(raw_ostream &OS, + const DescriptorTableClause &Clause); + +LLVM_ABI raw_ostream &operator<<(raw_ostream &OS, const DescriptorTable &Table); + +LLVM_ABI void dumpRootElements(raw_ostream &OS, ArrayRef<RootElement> Elements); + +class MetadataBuilder { +public: + MetadataBuilder(llvm::LLVMContext &Ctx, ArrayRef<RootElement> Elements) + : Ctx(Ctx), Elements(Elements) {} + + /// Iterates through the elements and dispatches onto the correct Build method + /// + /// Accumulates the root signature and returns the Metadata node that is just + /// a list of all the elements + LLVM_ABI MDNode *BuildRootSignature(); + +private: + /// Define the various builders for the different metadata types + MDNode *BuildRootFlags(const RootFlags &Flags); + MDNode *BuildRootConstants(const RootConstants &Constants); + MDNode *BuildRootDescriptor(const RootDescriptor &Descriptor); + MDNode *BuildDescriptorTable(const DescriptorTable &Table); + MDNode *BuildDescriptorTableClause(const DescriptorTableClause &Clause); + + llvm::LLVMContext &Ctx; + ArrayRef<RootElement> Elements; + SmallVector<Metadata *> GeneratedMetadata; +}; + +} // namespace rootsig +} // namespace hlsl +} // namespace llvm + +#endif // LLVM_FRONTEND_HLSL_HLSLROOTSIGNATUREUTILS_H diff --git a/llvm/lib/Frontend/HLSL/CMakeLists.txt b/llvm/lib/Frontend/HLSL/CMakeLists.txt index dd987544fe80b..dfebe354807bf 100644 --- a/llvm/lib/Frontend/HLSL/CMakeLists.txt +++ b/llvm/lib/Frontend/HLSL/CMakeLists.txt @@ -1,7 +1,7 @@ add_llvm_component_library(LLVMFrontendHLSL CBuffer.cpp HLSLResource.cpp - HLSLRootSignature.cpp + HLSLRootSignatureUtils.cpp ADDITIONAL_HEADER_DIRS ${LLVM_MAIN_INCLUDE_DIR}/llvm/Frontend diff --git a/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp b/llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp similarity index 98% rename from llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp rename to llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp index b8d6e229006d0..f533d8d3dd8ed 100644 --- a/llvm/lib/Frontend/HLSL/HLSLRootSignature.cpp +++ b/llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp @@ -1,4 +1,4 @@ -//===- HLSLRootSignature.cpp - HLSL Root Signature helper objects ---------===// +//===- HLSLRootSignatureUtils.cpp - HLSL Root Signature helpers -----------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -10,9 +10,9 @@ /// //===----------------------------------------------------------------------===// -#include "llvm/Frontend/HLSL/HLSLRootSignature.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/bit.h" +#include "llvm/Frontend/HLSL/HLSLRootSignatureUtils.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Metadata.h" #include "llvm/IR/Module.h" >From eaea0a016324c9c536fe35ada65341057d2d597d Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Mon, 2 Jun 2025 21:35:56 +0000 Subject: [PATCH 2/3] update headers where utils are actually used --- clang/lib/AST/TextNodeDumper.cpp | 2 +- clang/lib/CodeGen/CGHLSLRuntime.cpp | 1 + llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index 112e902dfb374..1b84b8824047b 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -24,7 +24,7 @@ #include "clang/Basic/Specifiers.h" #include "clang/Basic/TypeTraits.h" #include "llvm/ADT/StringExtras.h" -#include "llvm/Frontend/HLSL/HLSLRootSignature.h" +#include "llvm/Frontend/HLSL/HLSLRootSignatureUtils.h" #include <algorithm> #include <utility> diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp b/clang/lib/CodeGen/CGHLSLRuntime.cpp index cfe9dc1192d9d..dbfdd0e1ecfbb 100644 --- a/clang/lib/CodeGen/CGHLSLRuntime.cpp +++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp @@ -23,6 +23,7 @@ #include "clang/AST/Type.h" #include "clang/Basic/TargetOptions.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/Frontend/HLSL/HLSLRootSignatureUtils.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/GlobalVariable.h" diff --git a/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp b/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp index 3f92fa0f05794..90e6cd0a80d6b 100644 --- a/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp +++ b/llvm/unittests/Frontend/HLSLRootSignatureDumpTest.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Frontend/HLSL/HLSLRootSignature.h" +#include "llvm/Frontend/HLSL/HLSLRootSignatureUtils.h" #include "gtest/gtest.h" using namespace llvm::hlsl::rootsig; >From 518cb821394940940eea7802b5217fe17debeaee Mon Sep 17 00:00:00 2001 From: Finn Plummer <canadienf...@gmail.com> Date: Mon, 2 Jun 2025 21:56:27 +0000 Subject: [PATCH 3/3] clang-format --- llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp b/llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp index f533d8d3dd8ed..aa1f1957d9cbe 100644 --- a/llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp +++ b/llvm/lib/Frontend/HLSL/HLSLRootSignatureUtils.cpp @@ -10,9 +10,9 @@ /// //===----------------------------------------------------------------------===// +#include "llvm/Frontend/HLSL/HLSLRootSignatureUtils.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/bit.h" -#include "llvm/Frontend/HLSL/HLSLRootSignatureUtils.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Metadata.h" #include "llvm/IR/Module.h" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits