From e6f5730aef5e15a305a3aa52d85b33e9ab9ca4d6 Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 27 Sep 2021 19:21:43 +0000 Subject: [PATCH] Add OpImageSampeProj* unit tests to end-to-end list Fixed: tint:1143 Change-Id: Ib812b9c1c55e48ee78280c32b465afca1b707b82 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/65040 Auto-Submit: David Neto Commit-Queue: Ben Clayton Kokoro: Kokoro Reviewed-by: Ben Clayton --- src/reader/spirv/parser_impl_handle_test.cc | 10 -- ...eCoordinateOperandsForImageAccess_0.spvasm | 112 ++++++++++++++++ ...eCoordinateOperandsForImageAccess_1.spvasm | 112 ++++++++++++++++ ...t_SampledImageAccessTest_Variable_0.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_1.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_0.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_1.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_0.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_1.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_0.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_1.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_2.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_0.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_0.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_1.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_2.spvasm | 121 ++++++++++++++++++ ...t_SampledImageAccessTest_Variable_3.spvasm | 121 ++++++++++++++++++ 17 files changed, 1918 insertions(+), 10 deletions(-) create mode 100644 test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm create mode 100644 test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm diff --git a/src/reader/spirv/parser_impl_handle_test.cc b/src/reader/spirv/parser_impl_handle_test.cc index 4c84b8e243..212ccc3218 100644 --- a/src/reader/spirv/parser_impl_handle_test.cc +++ b/src/reader/spirv/parser_impl_handle_test.cc @@ -934,11 +934,6 @@ TEST_P(SpvParserHandleTest_RegisterHandleUsage_SampledImage, Variable) { // So don't emit them as part of a "passing" corpus. p->DeliberatelyInvalidSpirv(); } - if (inst.find("Proj") != std::string::npos) { - // WGSL does not support Projection variants of image sampling. - // So don't emit them as part of a "passing" corpus. - p->DeliberatelyInvalidSpirv(); - } if (inst.find("ImageQueryLod") != std::string::npos) { // WGSL does not support querying image level of detail. // So don't emit them as part of a "passing" corpus. @@ -996,11 +991,6 @@ TEST_P(SpvParserHandleTest_RegisterHandleUsage_SampledImage, FunctionParam) { // So don't emit them as part of a "passing" corpus. p->DeliberatelyInvalidSpirv(); } - if (inst.find("Proj") != std::string::npos) { - // WGSL does not support Projection variants of image sampling. - // So don't emit them as part of a "passing" corpus. - p->DeliberatelyInvalidSpirv(); - } if (inst.find("ImageQueryLod") != std::string::npos) { // WGSL does not support querying image level of detail. // So don't emit them as part of a "passing" corpus. diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm new file mode 100644 index 0000000000..e1a39408b3 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm @@ -0,0 +1,112 @@ +; Test: ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 1001 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %100 "main" +OpExecutionMode %100 OriginUpperLeft +OpName %float_var "float_var" +OpName %ptr_float "ptr_float" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%17 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%43 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%50 = OpConstantNull %v2float +%51 = OpConstantNull %v3float +%52 = OpConstantNull %v4float +%53 = OpConstantComposite %v2int %int_1 %int_2 +%54 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%55 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%56 = OpConstantComposite %v2uint %uint_1 %uint_2 +%57 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%58 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%59 = OpConstantComposite %v2float %float_1 %float_2 +%60 = OpConstantComposite %v2float %float_2 %float_1 +%61 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%62 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%64 = OpTypeSampler +%_ptr_UniformConstant_64 = OpTypePointer UniformConstant %64 +%66 = OpTypeImage %float 2D 1 0 0 1 Unknown +%_ptr_UniformConstant_66 = OpTypePointer UniformConstant %66 +%68 = OpTypeSampledImage %66 +%ptr_float = OpTypePointer Function %float +%10 = OpVariable %_ptr_UniformConstant_64 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_66 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_64 UniformConstant +%100 = OpFunction %void None %17 +%69 = OpLabel +%float_var = OpVariable %ptr_float Function +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %53 +%vi123 = OpCopyObject %v3int %54 +%vi1234 = OpCopyObject %v4int %55 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %56 +%vu123 = OpCopyObject %v3uint %57 +%vu1234 = OpCopyObject %v4uint %58 +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %59 +%vf123 = OpCopyObject %v3float %61 +%vf1234 = OpCopyObject %v4float %62 +%70 = OpLoad %64 %10 +%71 = OpLoad %66 %20 +%72 = OpSampledImage %68 %71 %70 +%73 = OpImageSampleProjDrefExplicitLod %float %72 %vf1234 %float_0_200000003 Lod %float_0 +%1000 = OpCopyObject %uint %uint_0 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm b/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm new file mode 100644 index 0000000000..67371d495b --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm @@ -0,0 +1,112 @@ +; Test: ImageSampleProjDrefExplicitLod_CheckForLod0_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_1.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 1001 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %100 "main" +OpExecutionMode %100 OriginUpperLeft +OpName %float_var "float_var" +OpName %ptr_float "ptr_float" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%17 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%43 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%50 = OpConstantNull %v2float +%51 = OpConstantNull %v3float +%52 = OpConstantNull %v4float +%53 = OpConstantComposite %v2int %int_1 %int_2 +%54 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%55 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%56 = OpConstantComposite %v2uint %uint_1 %uint_2 +%57 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%58 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%59 = OpConstantComposite %v2float %float_1 %float_2 +%60 = OpConstantComposite %v2float %float_2 %float_1 +%61 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%62 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%64 = OpTypeSampler +%_ptr_UniformConstant_64 = OpTypePointer UniformConstant %64 +%66 = OpTypeImage %float 2D 1 0 0 1 Unknown +%_ptr_UniformConstant_66 = OpTypePointer UniformConstant %66 +%68 = OpTypeSampledImage %66 +%ptr_float = OpTypePointer Function %float +%10 = OpVariable %_ptr_UniformConstant_64 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_66 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_64 UniformConstant +%100 = OpFunction %void None %17 +%69 = OpLabel +%float_var = OpVariable %ptr_float Function +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %53 +%vi123 = OpCopyObject %v3int %54 +%vi1234 = OpCopyObject %v4int %55 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %56 +%vu123 = OpCopyObject %v3uint %57 +%vu1234 = OpCopyObject %v4uint %58 +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %59 +%vf123 = OpCopyObject %v3float %61 +%vf1234 = OpCopyObject %v4float %62 +%70 = OpLoad %64 %10 +%71 = OpLoad %66 %20 +%72 = OpSampledImage %68 %71 %70 +%73 = OpImageSampleProjDrefExplicitLod %float %72 %vf1234 %float_0_200000003 Lod %float_0 +%1000 = OpCopyObject %uint %uint_0 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm new file mode 100644 index 0000000000..41bfc2c6b7 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 1 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjDrefImplicitLod %float %78 %coords123 %f1 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm b/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm new file mode 100644 index 0000000000..df826bb5fc --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 1 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjDrefImplicitLod %float %78 %coords123 %f1 ConstOffset %offsets2d +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm new file mode 100644 index 0000000000..ae753ac1e3 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjExplicitLod %v4float %78 %coords123 Grad %vf12 %vf21 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm new file mode 100644 index 0000000000..e2504688e2 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjExplicitLod_Grad_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjExplicitLod %v4float %78 %coords123 Grad|ConstOffset %vf12 %vf21 %offsets2d +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm new file mode 100644 index 0000000000..02b1175d18 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjExplicitLod %v4float %78 %coords123 Lod %f1 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm new file mode 100644 index 0000000000..2571cf5c92 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjExplicitLod_Lod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjExplicitLod %v4float %78 %coords123 Lod|ConstOffset %f1 %offsets2d +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm new file mode 100644 index 0000000000..ce61aebd0a --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords123 Bias %float_7 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm new file mode 100644 index 0000000000..0791dfb1db --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords123 Bias|ConstOffset %float_7 %offsets2d +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm new file mode 100644 index 0000000000..09e18678e4 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_Bias_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords123 Bias|ConstOffset %float_7 %u_offsets2d +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm new file mode 100644 index 0000000000..e4a4ce633c --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 1 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords123 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm new file mode 100644 index 0000000000..e50477f5a0 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 1D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords12 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm new file mode 100644 index 0000000000..00ff18d5a0 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords123 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm new file mode 100644 index 0000000000..33faa58217 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 3D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords1234 +OpReturn +OpFunctionEnd + diff --git a/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm new file mode 100644 index 0000000000..cd417602e1 --- /dev/null +++ b/test/unittest/reader/spirv/ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm @@ -0,0 +1,121 @@ +; Test: ImageSampleProjImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm +; SPIR-V +; Version: 1.0 +; Generator: Khronos SPIR-V Tools Assembler; 0 +; Bound: 80 +; Schema: 0 +OpCapability Shader +OpCapability Sampled1D +OpCapability Image1D +OpCapability StorageImageExtendedFormats +OpCapability ImageQuery +OpMemoryModel Logical Simple +OpEntryPoint Fragment %1 "main" +OpExecutionMode %1 OriginUpperLeft +OpName %f1 "f1" +OpName %vf12 "vf12" +OpName %vf21 "vf21" +OpName %vf123 "vf123" +OpName %vf1234 "vf1234" +OpName %u1 "u1" +OpName %vu12 "vu12" +OpName %vu123 "vu123" +OpName %vu1234 "vu1234" +OpName %i1 "i1" +OpName %vi12 "vi12" +OpName %vi123 "vi123" +OpName %vi1234 "vi1234" +OpName %coords1 "coords1" +OpName %coords12 "coords12" +OpName %coords123 "coords123" +OpName %coords1234 "coords1234" +OpName %offsets2d "offsets2d" +OpName %u_offsets2d "u_offsets2d" +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 0 +OpDecorate %20 DescriptorSet 2 +OpDecorate %20 Binding 1 +OpDecorate %30 DescriptorSet 0 +OpDecorate %30 Binding 1 +%void = OpTypeVoid +%24 = OpTypeFunction %void +%float = OpTypeFloat 32 +%uint = OpTypeInt 32 0 +%int = OpTypeInt 32 1 +%int_0 = OpConstant %int 0 +%int_1 = OpConstant %int 1 +%int_2 = OpConstant %int 2 +%int_3 = OpConstant %int 3 +%int_4 = OpConstant %int 4 +%uint_0 = OpConstant %uint 0 +%uint_1 = OpConstant %uint 1 +%uint_2 = OpConstant %uint 2 +%uint_3 = OpConstant %uint 3 +%uint_4 = OpConstant %uint 4 +%uint_100 = OpConstant %uint 100 +%v2int = OpTypeVector %int 2 +%v3int = OpTypeVector %int 3 +%v4int = OpTypeVector %int 4 +%v2uint = OpTypeVector %uint 2 +%v3uint = OpTypeVector %uint 3 +%v4uint = OpTypeVector %uint 4 +%v2float = OpTypeVector %float 2 +%v3float = OpTypeVector %float 3 +%v4float = OpTypeVector %float 4 +%49 = OpConstantNull %float +%float_0 = OpConstant %float 0 +%float_1 = OpConstant %float 1 +%float_2 = OpConstant %float 2 +%float_3 = OpConstant %float 3 +%float_4 = OpConstant %float 4 +%float_7 = OpConstant %float 7 +%56 = OpConstantNull %v2float +%57 = OpConstantNull %v3float +%58 = OpConstantNull %v4float +%59 = OpConstantComposite %v2int %int_1 %int_2 +%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3 +%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%62 = OpConstantComposite %v2uint %uint_1 %uint_2 +%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3 +%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4 +%65 = OpConstantComposite %v2float %float_1 %float_2 +%66 = OpConstantComposite %v2float %float_2 %float_1 +%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3 +%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4 +%float_0_200000003 = OpConstant %float 0.200000003 +%70 = OpTypeSampler +%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70 +%72 = OpTypeImage %float 2D 0 0 0 1 Unknown +%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72 +%74 = OpTypeSampledImage %72 +%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant +%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant +%offsets2d = OpConstantComposite %v2int %int_3 %int_4 +%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4 +%1 = OpFunction %void None %24 +%75 = OpLabel +%f1 = OpCopyObject %float %float_1 +%vf12 = OpCopyObject %v2float %65 +%vf21 = OpCopyObject %v2float %66 +%vf123 = OpCopyObject %v3float %67 +%vf1234 = OpCopyObject %v4float %68 +%i1 = OpCopyObject %int %int_1 +%vi12 = OpCopyObject %v2int %59 +%vi123 = OpCopyObject %v3int %60 +%vi1234 = OpCopyObject %v4int %61 +%u1 = OpCopyObject %uint %uint_1 +%vu12 = OpCopyObject %v2uint %62 +%vu123 = OpCopyObject %v3uint %63 +%vu1234 = OpCopyObject %v4uint %64 +%coords1 = OpCopyObject %float %float_1 +%coords12 = OpCopyObject %v2float %vf12 +%coords123 = OpCopyObject %v3float %vf123 +%coords1234 = OpCopyObject %v4float %vf1234 +%76 = OpLoad %70 %10 +%77 = OpLoad %72 %20 +%78 = OpSampledImage %74 %77 %76 +%79 = OpImageSampleProjImplicitLod %v4float %78 %coords123 ConstOffset %offsets2d +OpReturn +OpFunctionEnd +