Author: Deric C.
Date: 2026-08-31T17:05:19-07:00
New Revision: f8e42858e2b46c202b2f9308cc5020c2e426d946

URL: 
https://github.com/llvm/llvm-project/commit/f8e42858e2b46c202b2f9308cc5020c2e426d946
DIFF: 
https://github.com/llvm/llvm-project/commit/f8e42858e2b46c202b2f9308cc5020c2e426d946.diff

LOG: [HLSL] Implement TextureCubeArray resource type (#218521)

Fixes https://github.com/llvm/llvm-project/issues/194948

This PR adds the TextureCubeArray type to HLSL.

A rather straight-forward change since TextureCube and array textures
were already implemented before.

There are a couple test changes to accomodate the combination of cube
with array textures.

Assisted by: Claude Opus 5

---

<sub>Stack created with <a
href="https://github.com/github/gh-stack";>GitHub Stacks CLI</a> • <a
href="https://gh.io/stacks-feedback";>Give Feedback 💬</a></sub>

Added: 
    

Modified: 
    clang/lib/CodeGen/Targets/DirectX.cpp
    clang/lib/Sema/HLSLExternalSemaSource.cpp
    clang/test/AST/HLSL/Textures-scalar-AST.hlsl
    clang/test/AST/HLSL/Textures-shorthand-AST.hlsl
    clang/test/AST/HLSL/Textures-vector-AST.hlsl
    clang/test/CodeGenHLSL/resources/Textures-CalculateLevelOfDetail.hlsl
    clang/test/CodeGenHLSL/resources/Textures-Gather.hlsl
    clang/test/CodeGenHLSL/resources/Textures-Sample.hlsl
    clang/test/CodeGenHLSL/resources/Textures-SampleBias.hlsl
    clang/test/CodeGenHLSL/resources/Textures-SampleCmp.hlsl
    clang/test/CodeGenHLSL/resources/Textures-SampleCmpLevelZero.hlsl
    clang/test/CodeGenHLSL/resources/Textures-SampleGrad.hlsl
    clang/test/CodeGenHLSL/resources/Textures-SampleLevel.hlsl
    clang/test/CodeGenHLSL/resources/Textures-default-explicit-binding.hlsl
    clang/test/CodeGenHLSL/resources/Textures-default.hlsl
    clang/test/CodeGenHLSL/resources/Textures-shorthand-contexts.hlsl
    clang/test/SemaHLSL/Resources/Textures-CalculateLevelOfDetail.hlsl
    clang/test/SemaHLSL/Resources/Textures-SampleBias.hlsl
    clang/test/SemaHLSL/Resources/Textures-SampleCmp.hlsl
    clang/test/SemaHLSL/Resources/Textures-SampleCmpLevelZero.hlsl
    clang/test/SemaHLSL/Resources/Textures-SampleGrad.hlsl
    clang/test/SemaHLSL/Resources/Textures-SampleLevel.hlsl
    clang/test/SemaHLSL/Resources/Textures-Sema.hlsl
    clang/test/SemaHLSL/Resources/Textures-declaration-order.hlsl
    clang/test/SemaHLSL/Resources/Textures-mips-errors.hlsl
    clang/test/SemaHLSL/Resources/Textures-unsupported-methods-errors.hlsl

Removed: 
    


################################################################################
diff  --git a/clang/lib/CodeGen/Targets/DirectX.cpp 
b/clang/lib/CodeGen/Targets/DirectX.cpp
index 6240a64b6a539..e2c918d861e35 100644
--- a/clang/lib/CodeGen/Targets/DirectX.cpp
+++ b/clang/lib/CodeGen/Targets/DirectX.cpp
@@ -123,7 +123,8 @@ llvm::Type *DirectXTargetCodeGenInfo::getHLSLType(
         RK = llvm::dxil::ResourceKind::Texture3D;
         break;
       case llvm::dxil::ResourceDimension::Cube:
-        RK = llvm::dxil::ResourceKind::TextureCube;
+        RK = ResAttrs.IsArray ? llvm::dxil::ResourceKind::TextureCubeArray
+                              : llvm::dxil::ResourceKind::TextureCube;
         break;
       default:
         llvm_unreachable("Unsupported resource dimension for texture.");

diff  --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp 
b/clang/lib/Sema/HLSLExternalSemaSource.cpp
index bd0de86f2759d..08e7367766fcb 100644
--- a/clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp
@@ -296,14 +296,13 @@ static BuiltinTypeDeclBuilder 
setupRWTextureType(CXXRecordDecl *Decl, Sema &S,
       .addStaticInitializationFunctions(false);
 }
 
-/// Set up TextureCube type: SRV cube texture. Locations are float3 direction
-/// vectors into the cube rather than texel coordinates, so cube textures have
-/// no Load, no operator[] and no mips member. Their sampling and gather
-/// methods also have no offset overloads.
-static BuiltinTypeDeclBuilder setupTextureCubeType(CXXRecordDecl *Decl,
-                                                   Sema &S) {
+/// Set up TextureCube and TextureCubeArray types: SRV cube textures. Locations
+/// are direction vectors into the cube rather than texel coordinates, so cube
+/// textures have no Load, no operator[] and no mips member. Their sampling and
+/// gather methods also have no offset overloads.
+static BuiltinTypeDeclBuilder setupTextureCubeType(CXXRecordDecl *Decl, Sema 
&S,
+                                                   bool IsArray) {
   constexpr ResourceDimension Dim = ResourceDimension::Cube;
-  constexpr bool IsArray = false;
   return BuiltinTypeDeclBuilder(S, Decl)
       .addTextureHandle(ResourceClass::SRV, /*IsROV=*/false, IsArray, Dim)
       .addDefaultHandleConstructor()
@@ -842,13 +841,32 @@ void 
HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
              .finalizeForwardDeclaration();
 
   onCompletion(Decl, [this](CXXRecordDecl *Decl) {
-    setupTextureCubeType(Decl, *SemaPtr).completeDefinition();
+    setupTextureCubeType(Decl, *SemaPtr, /*IsArray=*/false)
+        .completeDefinition();
   });
 
   auto *PartialSpecCube = addVectorTexturePartialSpecialization(
       *SemaPtr, HLSLNamespace, Decl->getDescribedClassTemplate());
   onCompletion(PartialSpecCube, [this](CXXRecordDecl *Decl) {
-    setupTextureCubeType(Decl, *SemaPtr).completeDefinition();
+    setupTextureCubeType(Decl, *SemaPtr, /*IsArray=*/false)
+        .completeDefinition();
+  });
+
+  // TextureCubeArray — same as TextureCube but IsArray=true, so locations gain
+  // an array slice and are float4.
+  Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "TextureCubeArray")
+             .addSimpleTemplateParams({"element_type"}, {Float4Ty},
+                                      TypedBufferConcept)
+             .finalizeForwardDeclaration();
+
+  onCompletion(Decl, [this](CXXRecordDecl *Decl) {
+    setupTextureCubeType(Decl, *SemaPtr, 
/*IsArray=*/true).completeDefinition();
+  });
+
+  auto *PartialSpecCubeArray = addVectorTexturePartialSpecialization(
+      *SemaPtr, HLSLNamespace, Decl->getDescribedClassTemplate());
+  onCompletion(PartialSpecCubeArray, [this](CXXRecordDecl *Decl) {
+    setupTextureCubeType(Decl, *SemaPtr, 
/*IsArray=*/true).completeDefinition();
   });
 }
 

diff  --git a/clang/test/AST/HLSL/Textures-scalar-AST.hlsl 
b/clang/test/AST/HLSL/Textures-scalar-AST.hlsl
index ab3d517d39ad9..d7c3602672675 100644
--- a/clang/test/AST/HLSL/Textures-scalar-AST.hlsl
+++ b/clang/test/AST/HLSL/Textures-scalar-AST.hlsl
@@ -5,12 +5,19 @@
 // RUN:   %s \
 // RUN:   | FileCheck %s --check-prefixes=CHECK,TEXEL,OFFSET,GETDIM-XY \
 // RUN:   -DTEXTURE=Texture2D -DDIM_NAME=2D -DDIM=2 -DCOORD_DIM=2 -DLOAD_DIM=3 
\
-// RUN:   -DINDEX_TYPE="vector<unsigned int, 2>"
+// RUN:   -DINDEX_TYPE="vector<unsigned int, 2>" -DIS_ARRAY=""
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
 // RUN:   -disable-llvm-passes -finclude-default-header -DTEXTURE=TextureCube \
 // RUN:   -DCOORD_TYPE=float3 -DGRAD_TYPE=float3 -DLOD_LOCATION=loc -o - %s \
 // RUN:   | FileCheck %s --check-prefixes=CHECK -DTEXTURE=TextureCube \
-// RUN:   -DDIM_NAME=Cube -DDIM=3 -DCOORD_DIM=3
+// RUN:   -DDIM_NAME=Cube -DDIM=3 -DCOORD_DIM=3 -DIS_ARRAY=""
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
+// RUN:   -disable-llvm-passes -finclude-default-header \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -DGRAD_TYPE=float3 \
+// RUN:   -DLOD_LOCATION=loc.xyz -o - %s \
+// RUN:   | FileCheck %s --check-prefixes=CHECK -DTEXTURE=TextureCubeArray \
+// RUN:   -DDIM_NAME=Cube -DDIM=3 -DCOORD_DIM=4 \
+// RUN:   -DIS_ARRAY=" [[hlsl::is_array]]"
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
 // RUN:   -disable-llvm-passes -finclude-default-header -DHAS_OFFSET \
 // RUN:   -DHAS_GETDIM_XY -DTEXTURE=Texture2DArray -DCOORD_TYPE=float3 \
@@ -18,7 +25,8 @@
 // RUN:   -o - %s \
 // RUN:   | FileCheck %s --check-prefixes=CHECK,ARRAY,TEXEL,OFFSET,GETDIM-XY \
 // RUN:   -DTEXTURE=Texture2DArray -DDIM_NAME=2D -DDIM=2 -DCOORD_DIM=3 \
-// RUN:   -DLOAD_DIM=4 -DINDEX_TYPE="vector<unsigned int, 3>"
+// RUN:   -DLOAD_DIM=4 -DINDEX_TYPE="vector<unsigned int, 3>" \
+// RUN:   -DIS_ARRAY=" [[hlsl::is_array]]"
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.
@@ -49,6 +57,8 @@
 //                      overloads
 //   GETDIM-XY          the width/height GetDimensions overloads exist
 //   ARRAY              the resource has an array slice
+//   IS_ARRAY           the [[hlsl::is_array]] attribute on arrayed resources,
+//                      or empty
 
 // CHECK: CXXRecordDecl {{.*}} SamplerState definition
 // CHECK: FinalAttr {{.*}} Implicit final
@@ -65,9 +75,7 @@
 // CHECK: CXXRecordDecl {{.*}} [[TEXTURE]] definition
 // CHECK: FinalAttr {{.*}} Implicit final
 // CHECK-NEXT: FieldDecl {{.*}} implicit __handle '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 
 // TEXEL: CXXMethodDecl {{.*}} Load 'element_type (vector<int, [[LOAD_DIM]]>)'
@@ -133,9 +141,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -206,9 +212,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_bias' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -285,9 +289,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_grad' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -368,9 +370,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_level' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -418,9 +418,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_cmp' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -496,9 +494,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_cmp_level_zero' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -545,9 +541,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_calculate_lod' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this
@@ -567,9 +561,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_calculate_lod_unclamped' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(element_type){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<element_type>' lvalue 
implicit this

diff  --git a/clang/test/AST/HLSL/Textures-shorthand-AST.hlsl 
b/clang/test/AST/HLSL/Textures-shorthand-AST.hlsl
index 238c56f9165f7..f30bd9e85d3b9 100644
--- a/clang/test/AST/HLSL/Textures-shorthand-AST.hlsl
+++ b/clang/test/AST/HLSL/Textures-shorthand-AST.hlsl
@@ -8,6 +8,10 @@
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
 // RUN:   -disable-llvm-passes -finclude-default-header \
+// RUN:   -DTEXTURE=TextureCubeArray -o - %s \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
+// RUN:   -disable-llvm-passes -finclude-default-header \
 // RUN:   -DTEXTURE=Texture2DArray -o - %s \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2DArray
 

diff  --git a/clang/test/AST/HLSL/Textures-vector-AST.hlsl 
b/clang/test/AST/HLSL/Textures-vector-AST.hlsl
index 94ff44b123768..1600c689d629b 100644
--- a/clang/test/AST/HLSL/Textures-vector-AST.hlsl
+++ b/clang/test/AST/HLSL/Textures-vector-AST.hlsl
@@ -5,12 +5,19 @@
 // RUN:   %s \
 // RUN:   | FileCheck %s --check-prefixes=CHECK,TEXEL,OFFSET,GETDIM-XY \
 // RUN:   -DTEXTURE=Texture2D -DDIM_NAME=2D -DDIM=2 -DCOORD_DIM=2 -DLOAD_DIM=3 
\
-// RUN:   -DINDEX_TYPE="vector<unsigned int, 2>"
+// RUN:   -DINDEX_TYPE="vector<unsigned int, 2>" -DIS_ARRAY=""
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
 // RUN:   -disable-llvm-passes -finclude-default-header -DTEXTURE=TextureCube \
 // RUN:   -DCOORD_TYPE=float3 -DGRAD_TYPE=float3 -DLOD_LOCATION=loc -o - %s \
 // RUN:   | FileCheck %s --check-prefixes=CHECK -DTEXTURE=TextureCube \
-// RUN:   -DDIM_NAME=Cube -DDIM=3 -DCOORD_DIM=3
+// RUN:   -DDIM_NAME=Cube -DDIM=3 -DCOORD_DIM=3 -DIS_ARRAY=""
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
+// RUN:   -disable-llvm-passes -finclude-default-header \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -DGRAD_TYPE=float3 \
+// RUN:   -DLOD_LOCATION=loc.xyz -o - %s \
+// RUN:   | FileCheck %s --check-prefixes=CHECK -DTEXTURE=TextureCubeArray \
+// RUN:   -DDIM_NAME=Cube -DDIM=3 -DCOORD_DIM=4 \
+// RUN:   -DIS_ARRAY=" [[hlsl::is_array]]"
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump \
 // RUN:   -disable-llvm-passes -finclude-default-header -DHAS_OFFSET \
 // RUN:   -DHAS_GETDIM_XY -DTEXTURE=Texture2DArray -DCOORD_TYPE=float3 \
@@ -18,7 +25,8 @@
 // RUN:   -o - %s \
 // RUN:   | FileCheck %s --check-prefixes=CHECK,ARRAY,TEXEL,OFFSET,GETDIM-XY \
 // RUN:   -DTEXTURE=Texture2DArray -DDIM_NAME=2D -DDIM=2 -DCOORD_DIM=3 \
-// RUN:   -DLOAD_DIM=4 -DINDEX_TYPE="vector<unsigned int, 3>"
+// RUN:   -DLOAD_DIM=4 -DINDEX_TYPE="vector<unsigned int, 3>" \
+// RUN:   -DIS_ARRAY=" [[hlsl::is_array]]"
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.
@@ -49,6 +57,8 @@
 //                      overloads
 //   GETDIM-XY          the width/height GetDimensions overloads exist
 //   ARRAY              the resource has an array slice
+//   IS_ARRAY           the [[hlsl::is_array]] attribute on arrayed resources,
+//                      or empty
 
 // CHECK: CXXRecordDecl {{.*}} SamplerState definition
 // CHECK: FinalAttr {{.*}} Implicit final
@@ -69,9 +79,7 @@
 // CHECK: TemplateTypeParmDecl {{.*}} element_type
 // CHECK: NonTypeTemplateParmDecl {{.*}} element_count
 // CHECK-NEXT: FieldDecl {{.*}} implicit __handle '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 
 // TEXEL: CXXMethodDecl {{.*}} Load 'vector<element_type, element_count> 
(vector<int, [[LOAD_DIM]]>)'
@@ -137,9 +145,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -210,9 +216,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_bias' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -289,9 +293,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_grad' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -372,9 +374,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_level' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -422,9 +422,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_cmp' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -500,9 +498,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_sample_cmp_level_zero' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -549,9 +545,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_calculate_lod' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this
@@ -571,9 +565,7 @@
 // CHECK-NEXT: CallExpr {{.*}} '<dependent type>'
 // CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} 
'__builtin_hlsl_resource_calculate_lod_unclamped' 'void (...) noexcept'
 // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
-// CHECK-SAME{LITERAL}: [[hlsl::resource_class("SRV")]]
-// ARRAY-SAME{LITERAL}: [[hlsl::is_array]]
-// CHECK-SAME{LITERAL}: [[hlsl::contained_type(vector<element_type, 
element_count>)]]
+// CHECK-SAME: {{\[\[}}hlsl::resource_class("SRV"){{\]\]}}[[IS_ARRAY]] 
{{\[\[}}hlsl::contained_type(vector<element_type, element_count>){{\]\]}}
 // CHECK-SAME: {{\[\[}}hlsl::dimension("[[DIM_NAME]]"){{\]\]}}
 // CHECK-SAME: ' lvalue .__handle
 // CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[TEXTURE]]<vector<element_type, 
element_count>>' lvalue implicit this

diff  --git 
a/clang/test/CodeGenHLSL/resources/Textures-CalculateLevelOfDetail.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-CalculateLevelOfDetail.hlsl
index 29d6b97c5e429..490575fc43807 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-CalculateLevelOfDetail.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-CalculateLevelOfDetail.hlsl
@@ -10,6 +10,12 @@
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube --check-prefixes=CHECK,DXIL \
 // RUN:   -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - -DLOD_TYPE=float3 
\
+// RUN:   -DTEXTURE=TextureCubeArray %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray \
+// RUN:   --check-prefixes=CHECK,DXIL -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - -DLOD_TYPE=float2 
\
 // RUN:   -DTEXTURE=Texture2D %s \
@@ -22,6 +28,13 @@
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube --check-prefixes=CHECK,SPIRV \
 // RUN:   -DARRAYED=0 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - -DLOD_TYPE=float3 
\
+// RUN:   -DTEXTURE=TextureCubeArray %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray \
+// RUN:   --check-prefixes=CHECK,SPIRV -DARRAYED=1 -DSAMPLED=1 -DIMG_FMT=0 \
+// RUN:   -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - -DLOD_TYPE=float2 
\
 // RUN:   -DTEXTURE=Texture2DArray %s \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-Gather.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-Gather.hlsl
index d611891a27ba0..afdf0b502ead9 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-Gather.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-Gather.hlsl
@@ -12,6 +12,12 @@
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
 // RUN:   --check-prefixes=CHECK,DXIL,DXIL-NOTEXEL -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   --check-prefixes=CHECK,DXIL,DXIL-NOTEXEL -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2D \
@@ -28,6 +34,13 @@
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
 // RUN:   --check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL -DARRAYED=0 -DSAMPLED=1 \
 // RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   --check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL -DARRAYED=1 -DSAMPLED=1 \
+// RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2DArray \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-Sample.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-Sample.hlsl
index 46e8474264a08..b3a85fdf63b19 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-Sample.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-Sample.hlsl
@@ -11,7 +11,15 @@
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET 
-DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2D \
@@ -26,8 +34,15 @@
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET 
-DARRAYED=0 -DSAMPLED=1 \
-// RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=0 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=1 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2DArray \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-SampleBias.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-SampleBias.hlsl
index 18a7d1d0be266..0de7e40d58620 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-SampleBias.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-SampleBias.hlsl
@@ -11,7 +11,15 @@
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET 
-DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2D \
@@ -26,8 +34,15 @@
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET 
-DARRAYED=0 -DSAMPLED=1 \
-// RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=0 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=1 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2DArray \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-SampleCmp.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-SampleCmp.hlsl
index bd2ef7be01909..7e152475b3b98 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-SampleCmp.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-SampleCmp.hlsl
@@ -11,7 +11,15 @@
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET 
-DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2D \
@@ -26,8 +34,15 @@
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET 
-DARRAYED=0 -DSAMPLED=1 \
-// RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=0 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=1 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2DArray \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-SampleCmpLevelZero.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-SampleCmpLevelZero.hlsl
index aed333864b69f..f7c4d7bbc5c05 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-SampleCmpLevelZero.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-SampleCmpLevelZero.hlsl
@@ -12,6 +12,12 @@
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
 // RUN:   --check-prefixes=CHECK,DXIL -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   --check-prefixes=CHECK,DXIL -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2D \
@@ -28,6 +34,13 @@
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
 // RUN:   --check-prefixes=CHECK,SPIRV -DARRAYED=0 -DSAMPLED=1 -DIMG_FMT=0 \
 // RUN:   -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   --check-prefixes=CHECK,SPIRV -DARRAYED=1 -DSAMPLED=1 -DIMG_FMT=0 \
+// RUN:   -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2DArray \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-SampleGrad.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-SampleGrad.hlsl
index 87ceb77cf2861..6d2de772e2beb 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-SampleGrad.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-SampleGrad.hlsl
@@ -11,7 +11,15 @@
 // RUN:   -DGRAD_TYPE=float3 -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET 
-DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DGRAD_TYPE=float3 -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s 
\
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,DXIL,DXIL-NOTEXEL,CHECK-NOOFFSET,DXIL-NOOFFSET \
+// RUN:   -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DGRAD_TYPE=float2 -DHAS_OFFSET \
@@ -26,8 +34,15 @@
 // RUN:   -DGRAD_TYPE=float3 -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
-// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET 
-DARRAYED=0 -DSAMPLED=1 \
-// RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=0 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DGRAD_TYPE=float3 -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s 
\
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   
--check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL,CHECK-NOOFFSET,SPIRV-NOOFFSET \
+// RUN:   -DARRAYED=1 -DSAMPLED=1 -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DGRAD_TYPE=float2 -DHAS_OFFSET \

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-SampleLevel.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-SampleLevel.hlsl
index 0002ac693fc2a..72bc867e5c9da 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-SampleLevel.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-SampleLevel.hlsl
@@ -12,6 +12,12 @@
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
 // RUN:   --check-prefixes=CHECK,DXIL,DXIL-NOTEXEL -DDXIL_TY=5 -DRW=0 -DDIM=3
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   --check-prefixes=CHECK,DXIL,DXIL-NOTEXEL -DDXIL_TY=9 -DRW=0 -DDIM=3
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2D \
@@ -28,6 +34,13 @@
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 \
 // RUN:   --check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL -DARRAYED=0 -DSAMPLED=1 \
 // RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header -o - \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 \
+// RUN:   --check-prefixes=CHECK,SPIRV,SPIRV-NOTEXEL -DARRAYED=1 -DSAMPLED=1 \
+// RUN:   -DIMG_FMT=0 -DSPV_DIM=3 -DDIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -o - \
 // RUN:   -DOFFSET_ARG="int2(1, 2)" -DHAS_OFFSET -DTEXTURE=Texture2DArray \

diff  --git 
a/clang/test/CodeGenHLSL/resources/Textures-default-explicit-binding.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-default-explicit-binding.hlsl
index 1f929f5510acb..a0869ad668560 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-default-explicit-binding.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-default-explicit-binding.hlsl
@@ -3,37 +3,49 @@
 // RUN:   -DCOORD_TYPE=float2 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2D -DCOORD_DIM=2 -DDXIL_TY=2 -DRW=0 \
-// RUN:   --check-prefixes=CHECK
+// RUN:   --check-prefixes=CHECK,CHECK-TEXEL
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -DTEXTURE=TextureCube \
 // RUN:   -DCOORD_TYPE=float3 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 -DDXIL_TY=5 \
-// RUN:   -DRW=0 --check-prefixes=CHECK
+// RUN:   -DRW=0 --check-prefixes=CHECK,CHECK-NOTEXEL
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -o - %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 -DDXIL_TY=9 \
+// RUN:   -DRW=0 --check-prefixes=CHECK,CHECK-NOTEXEL
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2D \
 // RUN:   -DCOORD_TYPE=float2 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2D -DCOORD_DIM=2 -DARRAYED=0 \
-// RUN:   --check-prefixes=SPIRV -DSPV_DIM=1
+// RUN:   --check-prefixes=SPIRV,SPIRV-TEXEL -DSPV_DIM=1
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header -DTEXTURE=TextureCube \
 // RUN:   -DCOORD_TYPE=float3 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=TextureCube -DCOORD_DIM=3 -DARRAYED=0 \
-// RUN:   --check-prefixes=SPIRV -DSPV_DIM=3
+// RUN:   --check-prefixes=SPIRV,SPIRV-NOTEXEL -DSPV_DIM=3
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
+// RUN:   -disable-llvm-passes -finclude-default-header \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -o - %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 -DARRAYED=1 \
+// RUN:   --check-prefixes=SPIRV,SPIRV-NOTEXEL -DSPV_DIM=3
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header \
 // RUN:   -DTEXTURE=Texture2DArray -DCOORD_TYPE=float3 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2DArray -DCOORD_DIM=3 -DDXIL_TY=7 \
-// RUN:   -DRW=0 --check-prefixes=CHECK
+// RUN:   -DRW=0 --check-prefixes=CHECK,CHECK-TEXEL
 // RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm \
 // RUN:   -disable-llvm-passes -finclude-default-header \
 // RUN:   -DTEXTURE=Texture2DArray -DCOORD_TYPE=float3 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2DArray -DCOORD_DIM=3 -DARRAYED=1 \
-// RUN:   --check-prefixes=SPIRV -DSPV_DIM=1
+// RUN:   --check-prefixes=SPIRV,SPIRV-TEXEL -DSPV_DIM=1
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.
@@ -46,6 +58,12 @@
 //   RW                 dx.Texture UAV operand
 //   ARRAYED            spirv.Image Arrayed operand
 //   SPV_DIM            spirv.Image Dim operand
+//
+// Check prefixes:
+//   TEXEL              the type has integer texel addressing (Load,
+//                      operator[], mips), and therefore a `mips` field in its
+//                      layout
+//   NOTEXEL            the type has no integer texel addressing
 
 TEXTURE<> default_template : register(t1, space2);
 TEXTURE implicit_template : register(t0, space1);

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-default.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-default.hlsl
index 3561bed16a8d1..a271f0ff2ff94 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-default.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-default.hlsl
@@ -10,6 +10,11 @@
 // RUN:   --check-prefixes=CHECK,CHECK-NOTEXEL
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
 // RUN:   -std=hlsl202x -emit-llvm -disable-llvm-passes \
+// RUN:   -finclude-default-header -DTEXTURE=TextureCubeArray -o - %s \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DDXIL_TY=9 -DRW=0 \
+// RUN:   --check-prefixes=CHECK,CHECK-NOTEXEL
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -std=hlsl202x -emit-llvm -disable-llvm-passes \
 // RUN:   -finclude-default-header -DTEXTURE=Texture2DArray -o - %s \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2DArray -DDXIL_TY=7 -DRW=0 \
 // RUN:   --check-prefixes=CHECK,CHECK-TEXEL

diff  --git a/clang/test/CodeGenHLSL/resources/Textures-shorthand-contexts.hlsl 
b/clang/test/CodeGenHLSL/resources/Textures-shorthand-contexts.hlsl
index 9a7bc5904292a..4a037bafc452f 100644
--- a/clang/test/CodeGenHLSL/resources/Textures-shorthand-contexts.hlsl
+++ b/clang/test/CodeGenHLSL/resources/Textures-shorthand-contexts.hlsl
@@ -12,6 +12,12 @@
 // RUN:   -DRW=0 --check-prefixes=CHECK,CHECK-NOTEXEL
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
 // RUN:   -finclude-default-header -emit-llvm -disable-llvm-passes \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -o - %s \
+// RUN:   | llvm-cxxfilt \
+// RUN:   | FileCheck %s -DTEXTURE=TextureCubeArray -DCOORD_DIM=4 -DDXIL_TY=9 \
+// RUN:   -DRW=0 --check-prefixes=CHECK,CHECK-NOTEXEL
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -finclude-default-header -emit-llvm -disable-llvm-passes \
 // RUN:   -DTEXTURE=Texture2DArray -DCOORD_TYPE=float3 -o - %s \
 // RUN:   | llvm-cxxfilt \
 // RUN:   | FileCheck %s -DTEXTURE=Texture2DArray -DCOORD_DIM=3 -DDXIL_TY=7 \

diff  --git 
a/clang/test/SemaHLSL/Resources/Textures-CalculateLevelOfDetail.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-CalculateLevelOfDetail.hlsl
index d91fbd782e214..0b31f4beceb1a 100644
--- a/clang/test/SemaHLSL/Resources/Textures-CalculateLevelOfDetail.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-CalculateLevelOfDetail.hlsl
@@ -7,6 +7,9 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library \
 // RUN:   -finclude-default-header -fsyntax-only -verify=expected,dim3 \
 // RUN:   -DTEXTURE=TextureCube -DLOD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library \
+// RUN:   -finclude-default-header -fsyntax-only -verify=expected,dim3 \
+// RUN:   -DTEXTURE=TextureCubeArray -DLOD_TYPE=float3 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-SampleBias.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-SampleBias.hlsl
index 23b282828a024..1b141cf052ac5 100644
--- a/clang/test/SemaHLSL/Resources/Textures-SampleBias.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-SampleBias.hlsl
@@ -10,6 +10,10 @@
 // RUN:   -finclude-default-header -fsyntax-only \
 // RUN:   -verify=expected,nooffset,dim3 -DOFFSET_TYPE=int3 \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library \
+// RUN:   -finclude-default-header -fsyntax-only \
+// RUN:   -verify=expected,nooffset,dim3 -DOFFSET_TYPE=int3 \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-SampleCmp.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-SampleCmp.hlsl
index 615e0d780ef0a..30705360319a2 100644
--- a/clang/test/SemaHLSL/Resources/Textures-SampleCmp.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-SampleCmp.hlsl
@@ -10,6 +10,10 @@
 // RUN:   -fsyntax-only -finclude-default-header \
 // RUN:   -verify=expected,nooffset,dim3 -DOFFSET_ARG="int3(1, 2, 3)" \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -fsyntax-only -finclude-default-header \
+// RUN:   -verify=expected,nooffset,dim3 -DOFFSET_ARG="int3(1, 2, 3)" \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-SampleCmpLevelZero.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-SampleCmpLevelZero.hlsl
index 35e6e50d6e0f1..c3d7b41fba2ea 100644
--- a/clang/test/SemaHLSL/Resources/Textures-SampleCmpLevelZero.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-SampleCmpLevelZero.hlsl
@@ -10,6 +10,10 @@
 // RUN:   -fsyntax-only -finclude-default-header \
 // RUN:   -verify=expected,nooffset,dim3 -DOFFSET_ARG="int3(1, 2, 3)" \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -fsyntax-only -finclude-default-header \
+// RUN:   -verify=expected,nooffset,dim3 -DOFFSET_ARG="int3(1, 2, 3)" \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-SampleGrad.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-SampleGrad.hlsl
index fc706953eee46..9ef77e5723988 100644
--- a/clang/test/SemaHLSL/Resources/Textures-SampleGrad.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-SampleGrad.hlsl
@@ -10,6 +10,10 @@
 // RUN:   -finclude-default-header -fsyntax-only \
 // RUN:   -verify=expected,nooffset,dim3 -DOFFSET_TYPE=int3 \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 -DGRAD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library \
+// RUN:   -finclude-default-header -fsyntax-only \
+// RUN:   -verify=expected,nooffset,dim3 -DOFFSET_TYPE=int3 \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -DGRAD_TYPE=float3 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-SampleLevel.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-SampleLevel.hlsl
index efdd5cd11a134..1713cc1ea0529 100644
--- a/clang/test/SemaHLSL/Resources/Textures-SampleLevel.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-SampleLevel.hlsl
@@ -10,6 +10,10 @@
 // RUN:   -finclude-default-header -fsyntax-only \
 // RUN:   -verify=expected,nooffset,dim3 -DOFFSET_TYPE=int3 \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library \
+// RUN:   -finclude-default-header -fsyntax-only \
+// RUN:   -verify=expected,nooffset,dim3 -DOFFSET_TYPE=int3 \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-Sema.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-Sema.hlsl
index 6f63e309c4534..5b01281efe00d 100644
--- a/clang/test/SemaHLSL/Resources/Textures-Sema.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-Sema.hlsl
@@ -10,6 +10,10 @@
 // RUN:   -fsyntax-only -finclude-default-header \
 // RUN:   -verify=expected,nooffset,dim3 -DOFFSET_ARG="int3(1, 2, 3)" \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -fsyntax-only -finclude-default-header \
+// RUN:   -verify=expected,nooffset,dim3 -DOFFSET_ARG="int3(1, 2, 3)" \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git a/clang/test/SemaHLSL/Resources/Textures-declaration-order.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-declaration-order.hlsl
index 6bd7efdb6a8fa..9811202570310 100644
--- a/clang/test/SemaHLSL/Resources/Textures-declaration-order.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-declaration-order.hlsl
@@ -22,6 +22,8 @@ RWTexture2DArray<float> RWTex2DArray;
 RWTexture2DArray<float2> RWTex2DArrayVec;
 TextureCube<float> TexCube;
 TextureCube<float2> TexCubeVec;
+TextureCubeArray<float> TexCubeArray;
+TextureCubeArray<float2> TexCubeArrayVec;
 #else
 Texture2D<float2> Tex2DVec;
 Texture2D<float> Tex2D;
@@ -33,13 +35,15 @@ RWTexture2DArray<float2> RWTex2DArrayVec;
 RWTexture2DArray<float> RWTex2DArray;
 TextureCube<float2> TexCubeVec;
 TextureCube<float> TexCube;
+TextureCubeArray<float2> TexCubeArrayVec;
+TextureCubeArray<float> TexCubeArray;
 #endif
 
 SamplerState Samp;
 
 // Use members of both the primary template and the partial specialization to
 // make sure both patterns really have been completed.
-export void useTextures(float2 UV, float3 UVW) {
+export void useTextures(float2 UV, float3 UVW, float4 UVWA) {
   float S = Tex2D.Sample(Samp, UV);
   float2 V = Tex2DVec.Sample(Samp, UV);
   RWTex2D[uint2(0, 0)] = S;
@@ -52,4 +56,7 @@ export void useTextures(float2 UV, float3 UVW) {
 
   float CS = TexCube.Sample(Samp, UVW);
   float2 CV = TexCubeVec.Sample(Samp, UVW);
+
+  float CAS = TexCubeArray.Sample(Samp, UVWA);
+  float2 CAV = TexCubeArrayVec.Sample(Samp, UVWA);
 }

diff  --git a/clang/test/SemaHLSL/Resources/Textures-mips-errors.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-mips-errors.hlsl
index d2e91897bb9e3..3f5ecf264938f 100644
--- a/clang/test/SemaHLSL/Resources/Textures-mips-errors.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-mips-errors.hlsl
@@ -13,6 +13,9 @@
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
 // RUN:   -emit-llvm-only -disable-llvm-passes -finclude-default-header \
 // RUN:   -DTEXTURE=TextureCube -verify %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -emit-llvm-only -disable-llvm-passes -finclude-default-header \
+// RUN:   -DTEXTURE=TextureCubeArray -verify %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.

diff  --git 
a/clang/test/SemaHLSL/Resources/Textures-unsupported-methods-errors.hlsl 
b/clang/test/SemaHLSL/Resources/Textures-unsupported-methods-errors.hlsl
index 0e1a64ed03038..d2c62b9d5a082 100644
--- a/clang/test/SemaHLSL/Resources/Textures-unsupported-methods-errors.hlsl
+++ b/clang/test/SemaHLSL/Resources/Textures-unsupported-methods-errors.hlsl
@@ -9,6 +9,11 @@
 // RUN:   -DLOAD_ARG="int4(0, 0, 0, 0)" -DINDEX_ARG="uint3(0, 0, 0)" \
 // RUN:   -DTEXTURE=TextureCube -DCOORD_TYPE=float3 -DOFFSET_TYPE=int3 -verify 
\
 // RUN:   %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
+// RUN:   -finclude-default-header -DHAS_SAMPLE -DHAS_GATHER -DHAS_LOD \
+// RUN:   -DLOAD_ARG="int4(0, 0, 0, 0)" -DINDEX_ARG="uint3(0, 0, 0)" \
+// RUN:   -DTEXTURE=TextureCubeArray -DCOORD_TYPE=float4 -DOFFSET_TYPE=int3 \
+// RUN:   -verify %s
 
 // Parameterized over the texture types in the RUN lines above; adding a 
texture
 // of another dimension only requires new RUN lines.


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

Reply via email to