blob: 69762453f7189a63863cd0287b86d889b513e44e [file] [edit]
// Texture1D
// Texture1D
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
// RUN: -std=hlsl202x -emit-llvm -disable-llvm-passes \
// RUN: -finclude-default-header -DTEXTURE=Texture1D -o - %s | FileCheck %s \
// RUN: -DTEXTURE=Texture1D --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 1)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 1)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=Texture1D -o - %s | FileCheck %s -DTEXTURE=Texture1D \
// RUN: --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 0, 2, 0, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 0, 2, 0, 0, 1, 0)'
// Texture1DArray
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
// RUN: -std=hlsl202x -emit-llvm -disable-llvm-passes \
// RUN: -finclude-default-header -DTEXTURE=Texture1DArray -o - %s | \
// RUN: FileCheck %s -DTEXTURE=Texture1DArray \
// RUN: --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 6)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 6)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=Texture1DArray -o - %s | FileCheck %s \
// RUN: -DTEXTURE=Texture1DArray --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 0, 2, 1, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 0, 2, 1, 0, 1, 0)'
// Texture2D
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
// RUN: -std=hlsl202x -emit-llvm -disable-llvm-passes \
// RUN: -finclude-default-header -DTEXTURE=Texture2D -o - %s | FileCheck %s \
// RUN: -DTEXTURE=Texture2D --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 2)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 2)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=Texture2D -o - %s | FileCheck %s -DTEXTURE=Texture2D \
// RUN: --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 1, 2, 0, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 1, 2, 0, 0, 1, 0)'
// Texture2DArray
// 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 \
// RUN: --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 7)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 7)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=Texture2DArray -o - %s | FileCheck %s \
// RUN: -DTEXTURE=Texture2DArray --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 1, 2, 1, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 1, 2, 1, 0, 1, 0)'
// Texture3D
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
// RUN: -std=hlsl202x -emit-llvm -disable-llvm-passes \
// RUN: -finclude-default-header -DTEXTURE=Texture3D -o - %s | FileCheck %s \
// RUN: -DTEXTURE=Texture3D --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 4)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 4)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=Texture3D -o - %s | FileCheck %s -DTEXTURE=Texture3D \
// RUN: --check-prefixes=CHECK,CHECK-TEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 2, 2, 0, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 2, 2, 0, 0, 1, 0)'
// TextureCube
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl \
// RUN: -std=hlsl202x -emit-llvm -disable-llvm-passes \
// RUN: -finclude-default-header -DTEXTURE=TextureCube -o - %s | FileCheck \
// RUN: %s -DTEXTURE=TextureCube --check-prefixes=CHECK,CHECK-NOTEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 5)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 5)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=TextureCube -o - %s | FileCheck %s -DTEXTURE=TextureCube \
// RUN: --check-prefixes=CHECK,CHECK-NOTEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 3, 2, 0, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 3, 2, 0, 0, 1, 0)'
// TextureCubeArray
// 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 \
// RUN: --check-prefixes=CHECK,CHECK-NOTEXEL \
// RUN: -DHANDLE_TY='target("dx.Texture", <4 x float>, 0, 0, 0, 9)' \
// RUN: -DSCALAR_HANDLE_TY='target("dx.Texture", float, 0, 0, 0, 9)'
// RUN: %clang_cc1 -triple spirv-vulkan-library -x hlsl -std=hlsl202x \
// RUN: -emit-llvm -disable-llvm-passes -finclude-default-header \
// RUN: -DTEXTURE=TextureCubeArray -o - %s | FileCheck %s \
// RUN: -DTEXTURE=TextureCubeArray --check-prefixes=CHECK,CHECK-NOTEXEL \
// RUN: -DHANDLE_TY='target("spirv.Image", float, 3, 2, 1, 0, 1, 0)' \
// RUN: -DSCALAR_HANDLE_TY='target("spirv.Image", float, 3, 2, 1, 0, 1, 0)'
// Parameterized over the texture types in the RUN lines above; adding a texture
// of another dimension only requires new RUN lines.
//
// TEXTURE resource type name
// HANDLE_TY the resource handle type of the float4 texture in the
// IR
// SCALAR_HANDLE_TY the resource handle type of the float texture in the IR
//
// 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
// CHECK-TEXEL: %"class.hlsl::[[TEXTURE]]" = type { [[HANDLE_TY]], %"struct.hlsl::[[TEXTURE]]<>::mips_type" }
// CHECK-NOTEXEL: %"class.hlsl::[[TEXTURE]]" = type { [[HANDLE_TY]] }
// CHECK-TEXEL: %"class.hlsl::[[TEXTURE]].0" = type { [[SCALAR_HANDLE_TY]], %"struct.hlsl::[[TEXTURE]]<float>::mips_type" }
// CHECK-NOTEXEL: %"class.hlsl::[[TEXTURE]].0" = type { [[SCALAR_HANDLE_TY]] }
// CHECK: @{{.*}}t1 = internal global %"class.hlsl::[[TEXTURE]]" poison, align {{[0-9]+}}
TEXTURE<> t1;
// CHECK: @{{.*}}t2 = internal global %"class.hlsl::[[TEXTURE]].0" poison, align {{[0-9]+}}
TEXTURE<float> t2;
// CHECK: @{{.*}}t3 = internal global %"class.hlsl::[[TEXTURE]]" poison, align {{[0-9]+}}
TEXTURE t3;
void main() {
}