Test OpCompositeInsert with OpUndef
authorAri Suonpaa <ari.suonpaa@siru.fi>
Mon, 30 Mar 2020 11:35:17 +0000 (14:35 +0300)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 21 Apr 2020 11:39:54 +0000 (07:39 -0400)
Expanded composite insert tests to operate on
temporary variables generated by OpUndef.

VK-GL-CTS Issue: 1153

New tests:

dEQP-VK.spirv_assembly.*.composite_insert.undef_*

Components: Vulkan
Change-Id: I5907fc864d2aa95d8638bb76f03ceab948addf67

android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmCompositeInsertTests.cpp
external/vulkancts/mustpass/master/vk-default.txt

index 963f576..323daf8 100644 (file)
@@ -91184,6 +91184,19 @@ dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.denorm_ind_all_fp16_flush_fp32_flush_fp64_preserve
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.denorm_ind_all_fp16_flush_fp32_preserve_fp64_preserve
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.independence_settings
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_nested_struct
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.float_from_workgroup
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.vec4_from_workgroup
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.matrix_from_workgroup
@@ -91557,6 +91570,71 @@ dEQP-VK.spirv_assembly.instruction.graphics.opspecconstantop.shiftleftlogical_s_
 dEQP-VK.spirv_assembly.instruction.graphics.opspecconstantop.shiftleftlogical_s_i8_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.opspecconstantop.shiftleftlogical_s_i8_geom
 dEQP-VK.spirv_assembly.instruction.graphics.opspecconstantop.shiftleftlogical_s_i8_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_frag
 dEQP-VK.spirv_assembly.instruction.graphics.indexing.input.struct.opaccesschain_u32_vert
 dEQP-VK.spirv_assembly.instruction.graphics.indexing.input.struct.opaccesschain_u32_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.indexing.input.struct.opaccesschain_u32_tesse
index 2ccb9a5..3101790 100644 (file)
@@ -315827,9 +315827,21 @@ dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.denorm_ind_all_fp16_flush_fp32_preserve_fp64_preserve
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.independence_settings
 dEQP-VK.spirv_assembly.instruction.compute.ubo_padding.mat2x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.vec2
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.vec3
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.vec4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat2x2
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat3x2
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat4x2
@@ -315839,6 +315851,7 @@ dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat4x3
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat2x4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat3x4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat4x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_nested_struct
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.nested_struct
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.float
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.vec4
@@ -324787,6 +324800,21 @@ dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_geom
 dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_frag
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec2_vert
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec2_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec2_tesse
@@ -324802,6 +324830,51 @@ dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_geom
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_frag
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat2x2_vert
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat2x2_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat2x2_tesse
@@ -324847,6 +324920,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_geom
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_frag
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.nested_struct_vert
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.nested_struct_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.nested_struct_tesse
index 0d34f2b..6053db7 100644 (file)
@@ -82,9 +82,14 @@ string getIdentityVectors (deUint32 cols, deUint32 rows)
        return ret;
 }
 
-string getVectorCompositeInserts (deUint32 elements)
+string getVectorCompositeInserts (deUint32 elements, bool useUndef)
 {
-       string  ret             = "                 %tmp0 = OpLoad %v" + de::toString(elements) + "f32 %vec\n";
+       string  ret;
+
+       if (useUndef)
+               ret     = "                 %tmp0 = OpUndef %v" + de::toString(elements) + "f32\n";
+       else
+               ret     = "                 %tmp0 = OpLoad %v" + de::toString(elements) + "f32 %vec\n";
 
        for (deUint32 e = 0; e < elements; e++)
                ret += "                 %tmp" + de::toString(e + 1) + " = OpCompositeInsert %v" + de::toString(elements) + "f32 %c_f32_" + de::toString(e) + " %tmp" + de::toString(e) + " " + de::toString(e) + "\n";
@@ -92,10 +97,15 @@ string getVectorCompositeInserts (deUint32 elements)
        return ret;
 }
 
-string getMatrixCompositeInserts (deUint32 cols, deUint32 rows)
+string getMatrixCompositeInserts (deUint32 cols, deUint32 rows, bool useUndef)
 {
        string  matType = getMatrixType(cols, rows);
-       string  ret             = "                 %tmp0 = OpLoad " + matType + " %mat\n";
+       string  ret;
+
+       if (useUndef)
+               ret = "                 %tmp0 = OpUndef " + matType + "\n";
+       else
+               ret = "                 %tmp0 = OpLoad " + matType + " %mat\n";
 
        for (deUint32 c = 0; c < cols; c++)
                ret += "                 %tmp" + de::toString(c + 1) + " = OpCompositeInsert " + matType + " %identity" + de::toString(c) + " %tmp" + de::toString(c) + " " + de::toString(c) + "\n";
@@ -128,10 +138,15 @@ bool verifyMatrixOutput (const std::vector<Resource>& inputs, const vector<Alloc
        return ret;
 }
 
-string getNestedStructCompositeInserts (deUint32 arraySize)
+string getNestedStructCompositeInserts (deUint32 arraySize, bool useUndef)
 {
        string  ret;
 
+       if (useUndef)
+               ret = "                 %tmp0 = OpUndef %Output\n";
+       else
+               ret = "                 %tmp0 = OpLoad %Output %nestedstruct\n";
+
        for (deUint32 arrayIdx = 0; arrayIdx < arraySize; arrayIdx++)
                for (deUint32 vectorIdx = 0; vectorIdx < 4; vectorIdx++)
                        ret += string("%tmp") + de::toString(arrayIdx * 4 + vectorIdx + 1) + " = OpCompositeInsert %Output %identity" + de::toString(vectorIdx) + " %tmp" + de::toString(arrayIdx * 4 + vectorIdx) + " 0 0 " + de::toString(arrayIdx) + " " + de::toString(vectorIdx) + "\n";
@@ -143,6 +158,7 @@ void addComputeVectorCompositeInsertTests (tcu::TestCaseGroup* group)
 {
        tcu::TestContext& testCtx = group->getTestContext();
 
+       for (bool useUndef : {true, false})
        for (deUint32 elements = 2; elements <= 4; elements++)
        {
                ComputeShaderSpec       spec;
@@ -181,7 +197,7 @@ void addComputeVectorCompositeInsertTests (tcu::TestCaseGroup* group)
                        "                 %main = OpFunction %void None %3\n"
                        "                %entry = OpLabel\n"
                        "                  %vec = OpVariable %_ptr_Function_vec Function\n"
-                       + getVectorCompositeInserts(elements) +
+                       + getVectorCompositeInserts(elements, useUndef) +
                        "            %vecOutPtr = OpAccessChain %_ptr_Uniform_vec %dataOutput %c_i32_0\n"
                        "                         OpStore %vecOutPtr %tmp" + de::toString(elements) + "\n"
                        "                         OpReturn\n"
@@ -196,7 +212,12 @@ void addComputeVectorCompositeInsertTests (tcu::TestCaseGroup* group)
 
                spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(refData))));
 
-               string testName = string("vec") + de::toString(elements);
+               string testName;
+
+               if (useUndef)
+                       testName += "undef_";
+
+               testName += string("vec") + de::toString(elements);
 
                group->addChild(new SpvAsmComputeShaderCase(testCtx, testName.c_str(), "Tests vector composite insert.", spec));
        }
@@ -204,6 +225,7 @@ void addComputeVectorCompositeInsertTests (tcu::TestCaseGroup* group)
 
 void addGraphicsVectorCompositeInsertTests (tcu::TestCaseGroup* group)
 {
+       for (bool useUndef : { true, false })
        for (deUint32 elements = 2; elements <= 4; elements++)
        {
                map<string, string>     fragments;
@@ -216,7 +238,7 @@ void addGraphicsVectorCompositeInsertTests (tcu::TestCaseGroup* group)
                vector<string>          noExtensions;
                VulkanFeatures          vulkanFeatures  = VulkanFeatures();
                vector<float>           refData;
-               const string            testName                = string("vec") + de::toString(elements);
+               const string            testName                = string(useUndef ? "undef_" : "") + "vec" + de::toString(elements);
                const string            vecType                 = string("%v") + de::toString(elements) + "f32";
 
                // Expect running counter
@@ -248,7 +270,7 @@ void addGraphicsVectorCompositeInsertTests (tcu::TestCaseGroup* group)
                        "                %param = OpFunctionParameter %v4f32\n"
                        "                %entry = OpLabel\n"
                        "                  %vec = OpVariable %fp_v" + de::toString(elements) + "f32 Function\n"
-                       + getVectorCompositeInserts(elements) +
+                       + getVectorCompositeInserts(elements, useUndef) +
                        "            %vecOutPtr = OpAccessChain %_ptr_Uniform_vec %dataOutput %c_i32_0\n"
                        "                         OpStore %vecOutPtr %tmp" + de::toString(elements) + "\n"
                        "                         OpReturnValue %param\n"
@@ -279,6 +301,7 @@ void addComputeMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
 {
        tcu::TestContext&               testCtx                 = group->getTestContext();
 
+       for (bool useUndef : { true, false })
        for (deUint32 rows = 2; rows <= 4; rows++)
        {
                const deUint32  matrixStride = rows == 3 ? 16 : rows * 4;
@@ -320,7 +343,7 @@ void addComputeMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
                                "                 %main = OpFunction %void None %3\n"
                                "                %entry = OpLabel\n"
                                "                  %mat = OpVariable %_ptr_Function_mat Function\n"
-                               + getMatrixCompositeInserts(cols, rows) +
+                               + getMatrixCompositeInserts(cols, rows, useUndef) +
                                "            %matOutPtr = OpAccessChain %_ptr_Uniform_mat %dataOutput %c_i32_0\n"
                                "                         OpStore %matOutPtr %tmp" + de::toString(cols) + "\n"
                                "                         OpReturn\n"
@@ -342,7 +365,7 @@ void addComputeMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(identityData))));
                        spec.verifyIO = verifyMatrixOutput;
 
-                       string testName = string("mat") + de::toString(cols) + "x" + de::toString(rows);
+                       string testName = string(useUndef ? "undef_" : "") + "mat" + de::toString(cols) + "x" + de::toString(rows);
 
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, testName.c_str(), "Tests matrix composite insert.", spec));
                }
@@ -351,6 +374,7 @@ void addComputeMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
 
 void addGraphicsMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
 {
+       for (bool useUndef : { true, false })
        for (deUint32 rows = 2; rows <= 4; rows++)
        {
                const deUint32  matrixStride = rows == 3 ? 16 : rows * 4;
@@ -367,7 +391,7 @@ void addGraphicsMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
                        vector<string>                  noExtensions;
                        VulkanFeatures                  vulkanFeatures  = VulkanFeatures();
                        vector<float>                   identityData;
-                       string                                  testName                = string("mat") + de::toString(cols) + "x" + de::toString(rows);
+                       string                                  testName                = string(useUndef ? "undef_" : "") + "mat" + de::toString(cols) + "x" + de::toString(rows);
                        string                                  matType                 = getMatrixType(cols, rows);
 
                        // Expect identity matrix as output
@@ -405,7 +429,7 @@ void addGraphicsMatrixCompositeInsertTests (tcu::TestCaseGroup* group)
                                "                %param = OpFunctionParameter %v4f32\n"
                                "                %entry = OpLabel\n"
                                "                  %mat = OpVariable %_ptr_Function_mat Function\n"
-                               + getMatrixCompositeInserts(cols, rows) +
+                               + getMatrixCompositeInserts(cols, rows, useUndef) +
                                "            %matOutPtr = OpAccessChain %_ptr_Uniform_mat %dataOutput %c_i32_0\n"
                                "                         OpStore %matOutPtr %tmp" + de::toString(cols) + "\n"
                                "                         OpReturnValue %param\n"
@@ -437,140 +461,145 @@ void addComputeNestedStructCompositeInsertTests (tcu::TestCaseGroup* group)
 {
        tcu::TestContext&       testCtx                 = group->getTestContext();
 
-       ComputeShaderSpec       spec;
-       vector<float>           identityData;
-       const deUint32          arraySize               = 8u;
-
-       const string            shaderSource    =
-               "                         OpCapability Shader\n"
-               "                    %1 = OpExtInstImport \"GLSL.std.450\"\n"
-               "                         OpMemoryModel Logical GLSL450\n"
-               "                         OpEntryPoint GLCompute %main \"main\"\n"
-               "                         OpExecutionMode %main LocalSize 1 1 1\n"
-               "                         OpSource GLSL 430\n"
-               "                         OpDecorate %_arr_mat4v4f32_uint_8 ArrayStride 64\n"
-               "                         OpMemberDecorate %S 0 ColMajor\n"
-               "                         OpMemberDecorate %S 0 Offset 0\n"
-               "                         OpMemberDecorate %S 0 MatrixStride 16\n"
-               "                         OpMemberDecorate %Output 0 Offset 0\n"
-               "                         OpDecorate %Output BufferBlock\n"
-               "                         OpDecorate %dataOutput DescriptorSet 0\n"
-               "                         OpDecorate %dataOutput Binding 0\n"
-               "                  %f32 = OpTypeFloat 32\n"
-               "                %v4f32 = OpTypeVector %f32 4\n"
-               "            %mat4v4f32 = OpTypeMatrix %v4f32 4\n"
-               "                 %uint = OpTypeInt 32 0\n"
-               "               %uint_8 = OpConstant %uint 8\n"
-               "%_arr_mat4v4f32_uint_8 = OpTypeArray %mat4v4f32 %uint_8\n"
-               "                    %S = OpTypeStruct %_arr_mat4v4f32_uint_8\n"
-               "               %Output = OpTypeStruct %S\n"
-               "  %_ptr_Uniform_Output = OpTypePointer Uniform %Output\n"
-               " %_ptr_Function_Output = OpTypePointer Function %Output\n"
-               "           %dataOutput = OpVariable %_ptr_Uniform_Output Uniform\n"
-               "              %c_f32_0 = OpConstant %f32 0\n"
-               "              %c_f32_1 = OpConstant %f32 1\n"
-               "                  %i32 = OpTypeInt 32 1\n"
-               "              %c_i32_0 = OpConstant %i32 0\n"
-               + getIdentityVectors(4, 4) +
-               "                 %void = OpTypeVoid\n"
-               "                    %3 = OpTypeFunction %void\n"
-               "                 %main = OpFunction %void None %3\n"
-               "                %entry = OpLabel\n"
-               "         %nestedstruct = OpVariable %_ptr_Function_Output Function\n"
-               "                 %tmp0 = OpLoad %Output %nestedstruct\n"
-               + getNestedStructCompositeInserts(arraySize) +
-               "                         OpStore %dataOutput %tmp" + de::toString(arraySize * 4) + "\n"
-               "                         OpReturn\n"
-               "                         OpFunctionEnd\n";
-
-       spec.assembly           = shaderSource;
-       spec.numWorkGroups      = IVec3(1, 1, 1);
-
-       // Expect an array of identity matrix as output
-       for (deUint32 a = 0; a < arraySize; a++)
-               for (deUint32 c = 0; c < 4; c++)
-                       for (deUint32 r = 0; r < 4; r++)
-                               identityData.push_back(c == r ? 1.0f : 0.0f);
-
-       spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(identityData))));
-
-       group->addChild(new SpvAsmComputeShaderCase(testCtx, "nested_struct", "Tests nested struct composite insert.", spec));
+       for (bool useUndef : { true, false })
+       {
+               ComputeShaderSpec       spec;
+               vector<float>           identityData;
+               const deUint32          arraySize               = 8u;
+               const string            testName                = string(useUndef ? "undef_" : "") + "nested_struct";
+
+               const string            shaderSource    =
+                       "                         OpCapability Shader\n"
+                       "                    %1 = OpExtInstImport \"GLSL.std.450\"\n"
+                       "                         OpMemoryModel Logical GLSL450\n"
+                       "                         OpEntryPoint GLCompute %main \"main\"\n"
+                       "                         OpExecutionMode %main LocalSize 1 1 1\n"
+                       "                         OpSource GLSL 430\n"
+                       "                         OpDecorate %_arr_mat4v4f32_uint_8 ArrayStride 64\n"
+                       "                         OpMemberDecorate %S 0 ColMajor\n"
+                       "                         OpMemberDecorate %S 0 Offset 0\n"
+                       "                         OpMemberDecorate %S 0 MatrixStride 16\n"
+                       "                         OpMemberDecorate %Output 0 Offset 0\n"
+                       "                         OpDecorate %Output BufferBlock\n"
+                       "                         OpDecorate %dataOutput DescriptorSet 0\n"
+                       "                         OpDecorate %dataOutput Binding 0\n"
+                       "                  %f32 = OpTypeFloat 32\n"
+                       "                %v4f32 = OpTypeVector %f32 4\n"
+                       "            %mat4v4f32 = OpTypeMatrix %v4f32 4\n"
+                       "                 %uint = OpTypeInt 32 0\n"
+                       "               %uint_8 = OpConstant %uint 8\n"
+                       "%_arr_mat4v4f32_uint_8 = OpTypeArray %mat4v4f32 %uint_8\n"
+                       "                    %S = OpTypeStruct %_arr_mat4v4f32_uint_8\n"
+                       "               %Output = OpTypeStruct %S\n"
+                       "  %_ptr_Uniform_Output = OpTypePointer Uniform %Output\n"
+                       " %_ptr_Function_Output = OpTypePointer Function %Output\n"
+                       "           %dataOutput = OpVariable %_ptr_Uniform_Output Uniform\n"
+                       "              %c_f32_0 = OpConstant %f32 0\n"
+                       "              %c_f32_1 = OpConstant %f32 1\n"
+                       "                  %i32 = OpTypeInt 32 1\n"
+                       "              %c_i32_0 = OpConstant %i32 0\n"
+                       + getIdentityVectors(4, 4) +
+                       "                 %void = OpTypeVoid\n"
+                       "                    %3 = OpTypeFunction %void\n"
+                       "                 %main = OpFunction %void None %3\n"
+                       "                %entry = OpLabel\n"
+                       "         %nestedstruct = OpVariable %_ptr_Function_Output Function\n"
+                       + getNestedStructCompositeInserts(arraySize, useUndef) +
+                       "                         OpStore %dataOutput %tmp" + de::toString(arraySize * 4) + "\n"
+                       "                         OpReturn\n"
+                       "                         OpFunctionEnd\n";
+
+               spec.assembly           = shaderSource;
+               spec.numWorkGroups      = IVec3(1, 1, 1);
+
+               // Expect an array of identity matrix as output
+               for (deUint32 a = 0; a < arraySize; a++)
+                       for (deUint32 c = 0; c < 4; c++)
+                               for (deUint32 r = 0; r < 4; r++)
+                                       identityData.push_back(c == r ? 1.0f : 0.0f);
+
+               spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(identityData))));
+
+               group->addChild(new SpvAsmComputeShaderCase(testCtx, testName.c_str(), "Tests nested struct composite insert.", spec));
+       }
 }
 
 void addGraphicsNestedStructCompositeInsertTests (tcu::TestCaseGroup* group)
 {
-       map<string, string>     fragments;
-       RGBA                            defaultColors[4];
-       GraphicsResources       resources;
-
-       SpecConstants           noSpecConstants;
-       PushConstants           noPushConstants;
-       GraphicsInterfaces      noInterfaces;
-       vector<string>          noExtensions;
-       VulkanFeatures          vulkanFeatures  = VulkanFeatures();
-       vector<float>           identityData;
-       const deUint32          arraySize               = 8u;
-       const string            testName                = "nested_struct";
-
-       // Expect an array of identity matrix as output
-       for (deUint32 a = 0; a < arraySize; a++)
-               for (deUint32 c = 0; c < 4; c++)
-                       for (deUint32 r = 0; r < 4; r++)
-                               identityData.push_back(c == r ? 1.0f : 0.0f);
-       resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(identityData)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
-
-       getDefaultColors(defaultColors);
-
-       fragments["pre_main"]   =
-               "               %uint_8 = OpConstant %u32 8\n"
-               "            %mat4v4f32 = OpTypeMatrix %v4f32 4\n"
-               "%_arr_mat4v4f32_uint_8 = OpTypeArray %mat4v4f32 %uint_8\n"
-               "                    %S = OpTypeStruct %_arr_mat4v4f32_uint_8\n"
-               "               %Output = OpTypeStruct %S\n"
-               "  %_ptr_Uniform_Output = OpTypePointer Uniform %Output\n"
-               " %_ptr_Function_Output = OpTypePointer Function %Output\n"
-               "           %dataOutput = OpVariable %_ptr_Uniform_Output Uniform\n"
-               + getIdentityVectors(4, 4);
-
-       fragments["decoration"] =
-               "                         OpDecorate %_arr_mat4v4f32_uint_8 ArrayStride 64\n"
-               "                         OpMemberDecorate %S 0 ColMajor\n"
-               "                         OpMemberDecorate %S 0 Offset 0\n"
-               "                         OpMemberDecorate %S 0 MatrixStride 16\n"
-               "                         OpMemberDecorate %Output 0 Offset 0\n"
-               "                         OpDecorate %Output BufferBlock\n"
-               "                         OpDecorate %dataOutput DescriptorSet 0\n"
-               "                         OpDecorate %dataOutput Binding 0\n";
-
-       fragments["testfun"]    =
-               "            %test_code = OpFunction %v4f32 None %v4f32_v4f32_function\n"
-               "                %param = OpFunctionParameter %v4f32\n"
-               "                %entry = OpLabel\n"
-               "         %nestedstruct = OpVariable %_ptr_Function_Output Function\n"
-               "                 %tmp0 = OpLoad %Output %nestedstruct\n"
-               + getNestedStructCompositeInserts(arraySize) +
-               "                         OpStore %dataOutput %tmp" + de::toString(arraySize * 4) + "\n"
-               "                         OpReturnValue %param\n"
-               "                         OpFunctionEnd\n";
-
-       vulkanFeatures.coreFeatures.vertexPipelineStoresAndAtomics = DE_TRUE;
-       vulkanFeatures.coreFeatures.fragmentStoresAndAtomics = DE_FALSE;
-       createTestForStage(VK_SHADER_STAGE_VERTEX_BIT, (testName + "_vert").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
-                       noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
-
-       createTestForStage(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, (testName + "_tessc").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
-                       noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
-
-       createTestForStage(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, (testName + "_tesse").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
-                       noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
-
-       createTestForStage(VK_SHADER_STAGE_GEOMETRY_BIT, (testName + "_geom").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
-                       noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
-
-       vulkanFeatures.coreFeatures.vertexPipelineStoresAndAtomics = DE_FALSE;
-       vulkanFeatures.coreFeatures.fragmentStoresAndAtomics = DE_TRUE;
-       createTestForStage(VK_SHADER_STAGE_FRAGMENT_BIT, (testName + "_frag").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
-                       noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
+       for (bool useUndef : { true, false })
+       {
+               map<string, string>     fragments;
+               RGBA                            defaultColors[4];
+               GraphicsResources       resources;
+
+               SpecConstants           noSpecConstants;
+               PushConstants           noPushConstants;
+               GraphicsInterfaces      noInterfaces;
+               vector<string>          noExtensions;
+               VulkanFeatures          vulkanFeatures  = VulkanFeatures();
+               vector<float>           identityData;
+               const deUint32          arraySize               = 8u;
+               const string            testName                = string(useUndef ? "undef_" : "") + "nested_struct";
+
+               // Expect an array of identity matrix as output
+               for (deUint32 a = 0; a < arraySize; a++)
+                       for (deUint32 c = 0; c < 4; c++)
+                               for (deUint32 r = 0; r < 4; r++)
+                                       identityData.push_back(c == r ? 1.0f : 0.0f);
+               resources.outputs.push_back(Resource(BufferSp(new Float32Buffer(identityData)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
+
+               getDefaultColors(defaultColors);
+
+               fragments["pre_main"]   =
+                       "               %uint_8 = OpConstant %u32 8\n"
+                       "            %mat4v4f32 = OpTypeMatrix %v4f32 4\n"
+                       "%_arr_mat4v4f32_uint_8 = OpTypeArray %mat4v4f32 %uint_8\n"
+                       "                    %S = OpTypeStruct %_arr_mat4v4f32_uint_8\n"
+                       "               %Output = OpTypeStruct %S\n"
+                       "  %_ptr_Uniform_Output = OpTypePointer Uniform %Output\n"
+                       " %_ptr_Function_Output = OpTypePointer Function %Output\n"
+                       "           %dataOutput = OpVariable %_ptr_Uniform_Output Uniform\n"
+                       + getIdentityVectors(4, 4);
+
+               fragments["decoration"] =
+                       "                         OpDecorate %_arr_mat4v4f32_uint_8 ArrayStride 64\n"
+                       "                         OpMemberDecorate %S 0 ColMajor\n"
+                       "                         OpMemberDecorate %S 0 Offset 0\n"
+                       "                         OpMemberDecorate %S 0 MatrixStride 16\n"
+                       "                         OpMemberDecorate %Output 0 Offset 0\n"
+                       "                         OpDecorate %Output BufferBlock\n"
+                       "                         OpDecorate %dataOutput DescriptorSet 0\n"
+                       "                         OpDecorate %dataOutput Binding 0\n";
+
+               fragments["testfun"]    =
+                       "            %test_code = OpFunction %v4f32 None %v4f32_v4f32_function\n"
+                       "                %param = OpFunctionParameter %v4f32\n"
+                       "                %entry = OpLabel\n"
+                       "         %nestedstruct = OpVariable %_ptr_Function_Output Function\n"
+                       + getNestedStructCompositeInserts(arraySize, useUndef) +
+                       "                         OpStore %dataOutput %tmp" + de::toString(arraySize * 4) + "\n"
+                       "                         OpReturnValue %param\n"
+                       "                         OpFunctionEnd\n";
+
+               vulkanFeatures.coreFeatures.vertexPipelineStoresAndAtomics = DE_TRUE;
+               vulkanFeatures.coreFeatures.fragmentStoresAndAtomics = DE_FALSE;
+               createTestForStage(VK_SHADER_STAGE_VERTEX_BIT, (testName + "_vert").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
+                               noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
+
+               createTestForStage(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, (testName + "_tessc").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
+                               noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
+
+               createTestForStage(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, (testName + "_tesse").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
+                               noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
+
+               createTestForStage(VK_SHADER_STAGE_GEOMETRY_BIT, (testName + "_geom").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
+                               noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
+
+               vulkanFeatures.coreFeatures.vertexPipelineStoresAndAtomics = DE_FALSE;
+               vulkanFeatures.coreFeatures.fragmentStoresAndAtomics = DE_TRUE;
+               createTestForStage(VK_SHADER_STAGE_FRAGMENT_BIT, (testName + "_frag").c_str(), defaultColors, defaultColors, fragments, noSpecConstants,
+                               noPushConstants, resources, noInterfaces, noExtensions, vulkanFeatures, group);
+       }
 }
 
 } // anonymous
index 4075049..7b2216b 100644 (file)
@@ -315710,9 +315710,21 @@ dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.denorm_ind_all_fp16_flush_fp32_preserve_fp64_preserve
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.independence_settings.independence_settings
 dEQP-VK.spirv_assembly.instruction.compute.ubo_padding.mat2x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_vec4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.vec2
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.vec3
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.vec4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x2
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x3
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat2x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat3x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_mat4x4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat2x2
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat3x2
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat4x2
@@ -315722,6 +315734,7 @@ dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat4x3
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat2x4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat3x4
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.mat4x4
+dEQP-VK.spirv_assembly.instruction.compute.composite_insert.undef_nested_struct
 dEQP-VK.spirv_assembly.instruction.compute.composite_insert.nested_struct
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.float
 dEQP-VK.spirv_assembly.instruction.compute.variable_init.private.vec4
@@ -324650,6 +324663,21 @@ dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_geom
 dEQP-VK.spirv_assembly.instruction.graphics.ubo_padding.mat2x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_vec4_frag
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec2_vert
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec2_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec2_tesse
@@ -324665,6 +324693,51 @@ dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_geom
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.vec4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x2_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x3_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat2x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat3x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_mat4x4_frag
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat2x2_vert
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat2x2_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat2x2_tesse
@@ -324710,6 +324783,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_tesse
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_geom
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.mat4x4_frag
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_vert
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_tessc
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_tesse
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_geom
+dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.undef_nested_struct_frag
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.nested_struct_vert
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.nested_struct_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.composite_insert.nested_struct_tesse