[clang] [llvm] [DirectX] Move ROV info into HLSL metadata. NFC (PR #74896)
https://github.com/bogner updated https://github.com/llvm/llvm-project/pull/74896 >From 133bdc09eed41545794a369d3fa4d2afb720815e Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Fri, 8 Dec 2023 15:41:14 -0800 Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?= =?UTF-8?q?itial=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.5 --- clang/lib/CodeGen/CGHLSLRuntime.cpp | 9 ++--- clang/lib/CodeGen/CGHLSLRuntime.h | 1 + .../builtins/RWBuffer-annotations.hlsl| 12 +-- clang/test/CodeGenHLSL/cbuf.hlsl | 4 ++-- .../include/llvm/Frontend/HLSL/HLSLResource.h | 5 +++-- llvm/lib/Frontend/HLSL/HLSLResource.cpp | 14 + llvm/lib/Target/DirectX/DXILResource.cpp | 4 +--- llvm/test/CodeGen/DirectX/UAVMetadata.ll | 20 +-- llvm/test/CodeGen/DirectX/cbuf.ll | 2 +- .../CodeGen/DirectX/legacy_cb_layout_0.ll | 2 +- .../CodeGen/DirectX/legacy_cb_layout_1.ll | 2 +- .../CodeGen/DirectX/legacy_cb_layout_2.ll | 4 ++-- .../CodeGen/DirectX/legacy_cb_layout_3.ll | 2 +- 13 files changed, 45 insertions(+), 36 deletions(-) diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp b/clang/lib/CodeGen/CGHLSLRuntime.cpp index c239bc17ef267e..3e8a40e7540bef 100644 --- a/clang/lib/CodeGen/CGHLSLRuntime.cpp +++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp @@ -184,7 +184,8 @@ void CGHLSLRuntime::finishCodeGen() { : llvm::hlsl::ResourceKind::TBuffer; std::string TyName = Buf.Name.str() + (Buf.IsCBuffer ? ".cb." : ".tb.") + "ty"; -addBufferResourceAnnotation(GV, TyName, RC, RK, Buf.Binding); +addBufferResourceAnnotation(GV, TyName, RC, RK, /*IsROV=*/false, +Buf.Binding); } } @@ -196,6 +197,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, llvm::StringRef TyName, llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, +bool IsROV, BufferResBinding ) { llvm::Module = CGM.getModule(); @@ -219,7 +221,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, "ResourceMD must have been set by the switch above."); llvm::hlsl::FrontendResource Res( - GV, TyName, RK, Binding.Reg.value_or(UINT_MAX), Binding.Space); + GV, TyName, RK, IsROV, Binding.Reg.value_or(UINT_MAX), Binding.Space); ResourceMD->addOperand(Res.getMetadata()); } @@ -236,10 +238,11 @@ void CGHLSLRuntime::annotateHLSLResource(const VarDecl *D, GlobalVariable *GV) { llvm::hlsl::ResourceClass RC = Attr->getResourceClass(); llvm::hlsl::ResourceKind RK = Attr->getResourceKind(); + bool IsROV = Attr->getIsROV(); QualType QT(Ty, 0); BufferResBinding Binding(D->getAttr()); - addBufferResourceAnnotation(GV, QT.getAsString(), RC, RK, Binding); + addBufferResourceAnnotation(GV, QT.getAsString(), RC, RK, IsROV, Binding); } CGHLSLRuntime::BufferResBinding::BufferResBinding( diff --git a/clang/lib/CodeGen/CGHLSLRuntime.h b/clang/lib/CodeGen/CGHLSLRuntime.h index 67413fbd4a78e1..0979a0c5eb9ad0 100644 --- a/clang/lib/CodeGen/CGHLSLRuntime.h +++ b/clang/lib/CodeGen/CGHLSLRuntime.h @@ -93,6 +93,7 @@ class CGHLSLRuntime { llvm::StringRef TyName, llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, + bool IsROV, BufferResBinding ); void addConstant(VarDecl *D, Buffer ); void addBufferDecls(const DeclContext *DC, Buffer ); diff --git a/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl b/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl index 77091f8390a15a..a70e224b81e4b7 100644 --- a/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl +++ b/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl @@ -16,9 +16,9 @@ void main() { } // CHECK: !hlsl.uavs = !{![[Single:[0-9]+]], ![[Array:[0-9]+]], ![[SingleAllocated:[0-9]+]], ![[ArrayAllocated:[0-9]+]], ![[SingleSpace:[0-9]+]], ![[ArraySpace:[0-9]+]]} -// CHECK-DAG: ![[Single]] = !{ptr @"?Buffer1@@3V?$RWBuffer@M@hlsl@@A", !"RWBuffer", i32 10, i32 -1, i32 0} -// CHECK-DAG: ![[Array]] = !{ptr @"?BufferArray@@3PAV?$RWBuffer@T?$__vector@M$03@__clang@@@hlsl@@A", !"RWBuffer >", i32 10, i32 -1, i32 0} -// CHECK-DAG: ![[SingleAllocated]] = !{ptr @"?Buffer2@@3V?$RWBuffer@M@hlsl@@A", !"RWBuffer", i32 10, i32 3, i32 0} -// CHECK-DAG: ![[ArrayAllocated]] = !{ptr @"?BufferArray2@@3PAV?$RWBuffer@T?$__vector@M$03@__clang@@@hlsl@@A", !"RWBuffer >", i32 10, i32 4, i32 0}
[clang] [llvm] [DirectX] Move ROV info into HLSL metadata. NFC (PR #74896)
@@ -219,7 +221,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, "ResourceMD must have been set by the switch above."); llvm::hlsl::FrontendResource Res( - GV, TyName, RK, Binding.Reg.value_or(UINT_MAX), Binding.Space); + GV, TyName, RK, IsROV, Binding.Reg.value_or(UINT_MAX), Binding.Space); dmpots wrote: Ok, sounds good to me. Thanks! https://github.com/llvm/llvm-project/pull/74896 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [DirectX] Move ROV info into HLSL metadata. NFC (PR #74896)
https://github.com/dmpots approved this pull request. https://github.com/llvm/llvm-project/pull/74896 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [DirectX] Move ROV info into HLSL metadata. NFC (PR #74896)
llvmbot wrote: @llvm/pr-subscribers-hlsl @llvm/pr-subscribers-backend-directx Author: Justin Bogner (bogner) Changes --- Full diff: https://github.com/llvm/llvm-project/pull/74896.diff 13 Files Affected: - (modified) clang/lib/CodeGen/CGHLSLRuntime.cpp (+6-3) - (modified) clang/lib/CodeGen/CGHLSLRuntime.h (+1) - (modified) clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl (+6-6) - (modified) clang/test/CodeGenHLSL/cbuf.hlsl (+2-2) - (modified) llvm/include/llvm/Frontend/HLSL/HLSLResource.h (+3-2) - (modified) llvm/lib/Frontend/HLSL/HLSLResource.cpp (+10-4) - (modified) llvm/lib/Target/DirectX/DXILResource.cpp (+1-3) - (modified) llvm/test/CodeGen/DirectX/UAVMetadata.ll (+10-10) - (modified) llvm/test/CodeGen/DirectX/cbuf.ll (+1-1) - (modified) llvm/test/CodeGen/DirectX/legacy_cb_layout_0.ll (+1-1) - (modified) llvm/test/CodeGen/DirectX/legacy_cb_layout_1.ll (+1-1) - (modified) llvm/test/CodeGen/DirectX/legacy_cb_layout_2.ll (+2-2) - (modified) llvm/test/CodeGen/DirectX/legacy_cb_layout_3.ll (+1-1) ``diff diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp b/clang/lib/CodeGen/CGHLSLRuntime.cpp index c239bc17ef267..3e8a40e7540be 100644 --- a/clang/lib/CodeGen/CGHLSLRuntime.cpp +++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp @@ -184,7 +184,8 @@ void CGHLSLRuntime::finishCodeGen() { : llvm::hlsl::ResourceKind::TBuffer; std::string TyName = Buf.Name.str() + (Buf.IsCBuffer ? ".cb." : ".tb.") + "ty"; -addBufferResourceAnnotation(GV, TyName, RC, RK, Buf.Binding); +addBufferResourceAnnotation(GV, TyName, RC, RK, /*IsROV=*/false, +Buf.Binding); } } @@ -196,6 +197,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, llvm::StringRef TyName, llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, +bool IsROV, BufferResBinding ) { llvm::Module = CGM.getModule(); @@ -219,7 +221,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, "ResourceMD must have been set by the switch above."); llvm::hlsl::FrontendResource Res( - GV, TyName, RK, Binding.Reg.value_or(UINT_MAX), Binding.Space); + GV, TyName, RK, IsROV, Binding.Reg.value_or(UINT_MAX), Binding.Space); ResourceMD->addOperand(Res.getMetadata()); } @@ -236,10 +238,11 @@ void CGHLSLRuntime::annotateHLSLResource(const VarDecl *D, GlobalVariable *GV) { llvm::hlsl::ResourceClass RC = Attr->getResourceClass(); llvm::hlsl::ResourceKind RK = Attr->getResourceKind(); + bool IsROV = Attr->getIsROV(); QualType QT(Ty, 0); BufferResBinding Binding(D->getAttr()); - addBufferResourceAnnotation(GV, QT.getAsString(), RC, RK, Binding); + addBufferResourceAnnotation(GV, QT.getAsString(), RC, RK, IsROV, Binding); } CGHLSLRuntime::BufferResBinding::BufferResBinding( diff --git a/clang/lib/CodeGen/CGHLSLRuntime.h b/clang/lib/CodeGen/CGHLSLRuntime.h index 67413fbd4a78e..0979a0c5eb9ad 100644 --- a/clang/lib/CodeGen/CGHLSLRuntime.h +++ b/clang/lib/CodeGen/CGHLSLRuntime.h @@ -93,6 +93,7 @@ class CGHLSLRuntime { llvm::StringRef TyName, llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, + bool IsROV, BufferResBinding ); void addConstant(VarDecl *D, Buffer ); void addBufferDecls(const DeclContext *DC, Buffer ); diff --git a/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl b/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl index 77091f8390a15..a70e224b81e4b 100644 --- a/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl +++ b/clang/test/CodeGenHLSL/builtins/RWBuffer-annotations.hlsl @@ -16,9 +16,9 @@ void main() { } // CHECK: !hlsl.uavs = !{![[Single:[0-9]+]], ![[Array:[0-9]+]], ![[SingleAllocated:[0-9]+]], ![[ArrayAllocated:[0-9]+]], ![[SingleSpace:[0-9]+]], ![[ArraySpace:[0-9]+]]} -// CHECK-DAG: ![[Single]] = !{ptr @"?Buffer1@@3V?$RWBuffer@M@hlsl@@A", !"RWBuffer", i32 10, i32 -1, i32 0} -// CHECK-DAG: ![[Array]] = !{ptr @"?BufferArray@@3PAV?$RWBuffer@T?$__vector@M$03@__clang@@@hlsl@@A", !"RWBuffer >", i32 10, i32 -1, i32 0} -// CHECK-DAG: ![[SingleAllocated]] = !{ptr @"?Buffer2@@3V?$RWBuffer@M@hlsl@@A", !"RWBuffer", i32 10, i32 3, i32 0} -// CHECK-DAG: ![[ArrayAllocated]] = !{ptr @"?BufferArray2@@3PAV?$RWBuffer@T?$__vector@M$03@__clang@@@hlsl@@A", !"RWBuffer >", i32 10, i32 4, i32 0} -// CHECK-DAG: ![[SingleSpace]] = !{ptr @"?Buffer3@@3V?$RWBuffer@M@hlsl@@A", !"RWBuffer", i32 10, i32 3, i32 1} -// CHECK-DAG: ![[ArraySpace]] = !{ptr