llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Tim Corringham (tcorringham)

<details>
<summary>Changes</summary>

Add front-end support for RWTexture2DArray, and update related tests to include 
coverage of this resource.

Fixes #<!-- -->194947

---
Full diff: https://github.com/llvm/llvm-project/pull/208725.diff


8 Files Affected:

- (modified) clang/lib/Sema/HLSLExternalSemaSource.cpp (+20) 
- (modified) clang/test/AST/HLSL/Texture2D-AST.hlsl (+1) 
- (modified) clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl 
(+3-1) 
- (modified) clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl (+4) 
- (modified) clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl (+1) 
- (modified) 
clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl (+1) 
- (modified) clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl (+1) 
- (modified) clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl (+1) 


``````````diff
diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp 
b/clang/lib/Sema/HLSLExternalSemaSource.cpp
index 115795ca74bae..7578f20a27f18 100644
--- a/clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp
@@ -745,6 +745,26 @@ void 
HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
                      /*IsArray=*/true, ResourceDimension::Dim2D)
         .completeDefinition();
   });
+
+  // RWTexture2DArray — same as RWTexture2D but IsArray=true
+  Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RWTexture2DArray")
+             .addSimpleTemplateParams({"element_type"}, {Float4Ty},
+                                      TypedBufferConcept)
+             .finalizeForwardDeclaration();
+
+  onCompletion(Decl, [this](CXXRecordDecl *Decl) {
+    setupRWTextureType(Decl, *SemaPtr, /*IsArray=*/true,
+                       ResourceDimension::Dim2D)
+        .completeDefinition();
+  });
+
+  auto *PartialSpecRW2DA = addVectorTexturePartialSpecialization(
+      *SemaPtr, HLSLNamespace, Decl->getDescribedClassTemplate());
+  onCompletion(PartialSpecRW2DA, [this](CXXRecordDecl *Decl) {
+    setupRWTextureType(Decl, *SemaPtr, /*IsArray=*/true,
+                       ResourceDimension::Dim2D)
+        .completeDefinition();
+  });
 }
 
 // Build a single overload of an HLSL atomic intrinsic in the hlsl namespace.
diff --git a/clang/test/AST/HLSL/Texture2D-AST.hlsl 
b/clang/test/AST/HLSL/Texture2D-AST.hlsl
index 23d0b8138b39b..80ac278eb9174 100644
--- a/clang/test/AST/HLSL/Texture2D-AST.hlsl
+++ b/clang/test/AST/HLSL/Texture2D-AST.hlsl
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump 
-disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2D -o - %s | 
FileCheck %s --check-prefixes=CHECK,SRV -DTEXTURE=Texture2D -DSZ=2 -DKIND=SRV
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump 
-disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2DArray -o - %s 
| FileCheck %s --check-prefixes=CHECK,SRV,SRV-ARR -DTEXTURE=Texture2DArray 
-DSZ=3 -DKIND=SRV
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -DRW=1 -o - 
%s | FileCheck %s --check-prefixes=CHECK,UAV,UAV-STORE,UAV-TRUNC 
-DTEXTURE=RWTexture2D -DSZ=2 -DKIND=UAV
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -DRW=1 
-o - %s | FileCheck %s --check-prefixes=CHECK,UAV,UAV-ARR,UAV-STORE,UAV-NOTRUNC 
-DTEXTURE=RWTexture2DArray -DSZ=3 -DKIND=UAV
 
 // CHECK: ClassTemplateDecl {{.*}} [[TEXTURE]]
 // CHECK: TemplateTypeParmDecl {{.*}} element_type
diff --git a/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl 
b/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl
index 25f123a47649b..9c37efeb56a74 100644
--- a/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Texture2D-GetDimensions.hlsl
@@ -10,7 +10,9 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -o - %s | 
llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2D 
-DDXILTY=2 -DRW=1
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D -o - %s | 
llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2D 
-DARRAYED=0 -DSAMPLED=2 -DFORMAT=1
 
-// When RWTexture2DArray is implemented, add DXIL/SPIRV runs with DXILTY=7, 
RW=1, ARRAYED=1, SAMPLED=2, FORMAT=1.
+// RWTexture2DArray
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -o - 
%s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL 
-DTEXTURE=RWTexture2DArray -DDXILTY=7 -DRW=1
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray -o - 
%s | llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV 
-DTEXTURE=RWTexture2DArray -DARRAYED=1 -DSAMPLED=2 -DFORMAT=1
 
 TEXTURE<float4> Tex;
 
diff --git a/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl 
b/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl
index d69a0f6ddaa89..dd214347cb975 100644
--- a/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Texture2D-Load.hlsl
@@ -10,6 +10,10 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D 
-DLOCTY=int3 -DZEROS=0 -o - %s | llvm-cxxfilt | FileCheck %s 
--check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2D -DLOCSZ=3 -DCOORDSZ=2 -DARG3= 
-DDXILTY=2 -DRW=1
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2D 
-DLOCTY=int3 -DZEROS=0 -o - %s | llvm-cxxfilt | FileCheck %s 
--check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2D -DLOCSZ=3 -DCOORDSZ=2 
-DARG3= -DARRAYED=0 -DSAMPLED=2 -DFORMAT1=1 -DFORMAT3=3 -DFORMAT6=6 
-DFORMAT21=21 -DFORMAT24=24 -DFORMAT25=25
 
+// RWTexture2DArray
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray 
-DLOCTY=int4 -DZEROS="0, 0" -o - %s | llvm-cxxfilt | FileCheck %s 
--check-prefixes=CHECK,DXIL -DTEXTURE=RWTexture2DArray -DLOCSZ=4 -DCOORDSZ=3 
-DARG3=", i32 2" -DDXILTY=7 -DRW=1
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=RWTexture2DArray 
-DLOCTY=int4 -DZEROS="0, 0" -o - %s | llvm-cxxfilt | FileCheck %s 
--check-prefixes=CHECK,SPIRV -DTEXTURE=RWTexture2DArray -DLOCSZ=4 -DCOORDSZ=3 
-DARG3=", i32 2" -DARRAYED=1 -DSAMPLED=2 -DFORMAT1=1 -DFORMAT3=3 -DFORMAT6=6 
-DFORMAT21=21 -DFORMAT24=24 -DFORMAT25=25
+
 TEXTURE<float4> t;
 
 // CHECK: define hidden {{.*}} <4 x float> @test_load(int vector[2])
diff --git a/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl 
b/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl
index 34f704043e55e..e53157d6e9660 100644
--- a/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl
+++ b/clang/test/SemaHLSL/Resources/RWTexture2D-mips-errors.hlsl
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=RWTexture2D -verify %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=RWTexture2DArray -verify %s
 
 // RWTexture2D has no mips view (contrast with Texture2D-mips-errors.hlsl,
 // which exercises private/protected mips_type on Texture2D).
diff --git 
a/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl 
b/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl
index 61c7497217284..b02d4d61c8522 100644
--- a/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl
+++ b/clang/test/SemaHLSL/Resources/RWTexture2D-unsupported-methods-errors.hlsl
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=RWTexture2D -verify %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=RWTexture2DArray -verify %s
 
 // SRV-style texture methods are not available on RWTexture2D or 
RWTexture2DArray (UAV).
 
diff --git a/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl 
b/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl
index 6a6c2b1e2da4e..56dfcd659b25c 100644
--- a/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl
+++ b/clang/test/SemaHLSL/Resources/Texture2D-GetDimensions.hlsl
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library 
-finclude-default-header -fsyntax-only -DTEXTURE=Texture2D -verify %s
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library 
-finclude-default-header -fsyntax-only -DTEXTURE=Texture2DArray -verify %s
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library 
-finclude-default-header -fsyntax-only -DTEXTURE=RWTexture2D -verify %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library 
-finclude-default-header -fsyntax-only -DTEXTURE=RWTexture2DArray -verify %s
 
 TEXTURE<float4> tex;
 
diff --git a/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl 
b/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl
index 88e1f81d07094..03e64b62fddc1 100644
--- a/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl
+++ b/clang/test/SemaHLSL/Resources/Texture2D-Load-errors.hlsl
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=Texture2D -DARRAYED=0 -verify %s
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=Texture2DArray -DARRAYED=1 -verify %s
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=RWTexture2D -DARRAYED=0 -verify %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-finclude-default-header -DTEXTURE=RWTexture2DArray -DARRAYED=1 -verify %s
 
 #if ARRAYED
 #define ITY int4

``````````

</details>


https://github.com/llvm/llvm-project/pull/208725
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to