================
@@ -1,46 +1,55 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -o - %s | llvm-cxxfilt | 
FileCheck %s --check-prefixes=CHECK,DXIL
-// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -o - %s | llvm-cxxfilt | 
FileCheck %s --check-prefixes=CHECK,SPIRV
+// Texture2D
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2D -o - %s | 
llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL -DTEXTURE=Texture2D 
-DDXILTY=2 -DRW=0
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2D -o - %s | 
llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV -DTEXTURE=Texture2D 
-DA=0 -DS=1 -DF=0
 
-Texture2D<float4> Tex : register(t0);
+// Texture2DArray
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2DArray -o - %s 
| llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,DXIL 
-DTEXTURE=Texture2DArray -DDXILTY=7 -DRW=0
+// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm 
-disable-llvm-passes -finclude-default-header -DTEXTURE=Texture2DArray -o - %s 
| llvm-cxxfilt | FileCheck %s --check-prefixes=CHECK,SPIRV 
-DTEXTURE=Texture2DArray -DA=1 -DS=1 -DF=0
 
-// CHECK: define {{.*}} void @test_uint_dims()
-// CHECK: call void @hlsl::Texture2D<float vector[4]>::GetDimensions(unsigned 
int&, unsigned int&)(ptr {{.*}} @Tex, ptr {{.*}}, ptr {{.*}})
+// RWTexture2D
+// 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 
-DA=0 -DS=2 -DF=1
+
+// When RWTexture2DArray is implemented, add DXIL/SPIRV runs with DXILTY=7, 
RW=1, A=1, S=2, F=1.
+
+TEXTURE<float4> Tex;
+
+// CHECK: define {{.*}} void @test_uint_dims{{(\(\))?}}()
+// CHECK: call void @hlsl::[[TEXTURE]]<float 
vector[4]>::GetDimensions(unsigned int&, unsigned int&)(ptr {{.*}} @Tex, ptr 
{{.*}}, ptr {{.*}})
 void test_uint_dims() {
   uint w, h;
   Tex.GetDimensions(w, h);
 }
 
-// TODO: The test will have to be updated because the return type for the 
getdimensions intrinsic will no longer a overloaded.
-
-// CHECK: define linkonce_odr hidden void @hlsl::Texture2D<float 
vector[4]>::GetDimensions(unsigned int&, unsigned int&)(ptr {{.*}} 
%[[THIS:.*]], ptr {{.*}} %[[WIDTH:.*]], ptr {{.*}} %[[HEIGHT:.*]])
+// CHECK: define linkonce_odr hidden void @hlsl::[[TEXTURE]]<float 
vector[4]>::GetDimensions(unsigned int&, unsigned int&)(ptr {{.*}} 
%[[THIS:.*]], ptr {{.*}} %[[WIDTH:.*]], ptr {{.*}} %[[HEIGHT:.*]])
 // CHECK: %[[THIS_VAL:.*]] = load ptr, ptr %[[THIS]]
-// CHECK: %[[HANDLE_GEP:.*]] = getelementptr inbounds nuw 
%"class.hlsl::Texture2D", ptr %[[THIS_VAL]], i32 0, i32 0
-// DXIL: %[[HANDLE:.*]] = load target("dx.Texture", <4 x float>, 0, 0, 0, 2), 
ptr %[[HANDLE_GEP]]
-// SPIRV: %[[HANDLE:.*]] = load target("spirv.Image", float, 1, 2, 0, 0, 1, 
0), ptr %[[HANDLE_GEP]]
-// DXIL: %[[RES:.*]] = call <2 x i32> 
@llvm.dx.resource.getdimensions.xy.tdx.Texture_v4f32_0_0_0_2t(target("dx.Texture",
 <4 x float>, 0, 0, 0, 2) %[[HANDLE]])
-// SPIRV: %[[RES:.*]] = call <2 x i32> 
@llvm.spv.resource.getdimensions.xy.tspirv.Image_f32_1_2_0_0_1_0t(target("spirv.Image",
 float, 1, 2, 0, 0, 1, 0) %[[HANDLE]])
+// CHECK: %[[HANDLE_GEP:.*]] = getelementptr inbounds nuw 
%"class.hlsl::[[TEXTURE]]", ptr %[[THIS_VAL]], i32 0, i32 0
+// DXIL: %[[HANDLE:.*]] = load target("dx.Texture", <4 x float>, [[RW]], 0, 0, 
[[DXILTY]]), ptr %[[HANDLE_GEP]]
+// SPIRV: %[[HANDLE:.*]] = load target("spirv.Image", float, 1, 2, [[A]], 0, 
[[S]], [[F]]), ptr %[[HANDLE_GEP]]
+// DXIL: %[[RES:.*]] = call <2 x i32> 
@llvm.dx.resource.getdimensions.xy.tdx.Texture_v4f32_[[RW]]_0_0_[[DXILTY]]t(target("dx.Texture",
 <4 x float>, [[RW]], 0, 0, [[DXILTY]]) %[[HANDLE]])
+// SPIRV: %[[RES:.*]] = call <2 x i32> 
@llvm.spv.resource.getdimensions.xy.tspirv.Image_f32_1_2_[[A]]_0_[[S]]_[[F]]t(target("spirv.Image",
 float, 1, 2, [[A]], 0, [[S]], [[F]]) %[[HANDLE]])
 // CHECK: %[[W_PTR:.*]] = load ptr, ptr %[[WIDTH]]
 // CHECK: %[[W_VAL:.*]] = extractelement <2 x i32> %[[RES]], i64 0
 // CHECK: store i32 %[[W_VAL]], ptr %[[W_PTR]]
 // CHECK: %[[H_PTR:.*]] = load ptr, ptr %[[HEIGHT]]
 // CHECK: %[[H_VAL:.*]] = extractelement <2 x i32> %[[RES]], i64 1
 // CHECK: store i32 %[[H_VAL]], ptr %[[H_PTR]]
 
-// CHECK: define {{.*}} void @test_uint_levels_dims{{.*}}(i32 noundef 
%[[MIP_LEVEL:.*]])
----------------
Icohedron wrote:

I thought I saw a use somewhere, but I guess not.

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

Reply via email to