Merge vk-gl-cts/master into vk-gl-cts/vulkan-cts-next-dev
authorAlexander Galazin <alexander.galazin@arm.com>
Wed, 3 Oct 2018 07:19:37 +0000 (09:19 +0200)
committerAlexander Galazin <alexander.galazin@arm.com>
Wed, 3 Oct 2018 07:19:37 +0000 (09:19 +0200)
Change-Id: I5eea945d0e0016bc92d34c9610a8865b1d97ed86

1  2 
android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
external/vulkancts/mustpass/1.1.3/vk-default-no-waivers.txt
external/vulkancts/mustpass/1.1.3/vk-default.txt

Simple merge
@@@ -17130,53 -9886,166 +17435,213 @@@ tcu::TestCaseGroup* createOpNameTests (
        return testGroup.release();
  }
  
 +tcu::TestCaseGroup* createFloat16Tests (tcu::TestContext& testCtx)
 +{
 +      de::MovePtr<tcu::TestCaseGroup>         testGroup                       (new tcu::TestCaseGroup(testCtx, "float16", "Float 16 tests"));
 +
 +      testGroup->addChild(createOpConstantFloat16Tests(testCtx));
 +      testGroup->addChild(createFloat16LogicalSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16FuncSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createDerivativeTests<256, 1>(testCtx));
 +      testGroup->addChild(createDerivativeTests<256, 2>(testCtx));
 +      testGroup->addChild(createDerivativeTests<256, 4>(testCtx));
 +      testGroup->addChild(createFloat16VectorExtractSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16VectorInsertSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16VectorShuffleSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16CompositeConstructSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16CompositeInsertExtractSet<GraphicsResources>(testCtx, "OpCompositeExtract"));
 +      testGroup->addChild(createFloat16CompositeInsertExtractSet<GraphicsResources>(testCtx, "OpCompositeInsert"));
 +      testGroup->addChild(createFloat16ArithmeticSet<GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<1, GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<2, GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<3, GraphicsResources>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<4, GraphicsResources>(testCtx));
 +
 +      return testGroup.release();
 +}
 +
 +tcu::TestCaseGroup* createFloat16Group (tcu::TestContext& testCtx)
 +{
 +      de::MovePtr<tcu::TestCaseGroup>         testGroup                       (new tcu::TestCaseGroup(testCtx, "float16", "Float 16 tests"));
 +
 +      testGroup->addChild(createFloat16OpConstantCompositeGroup(testCtx));
 +      testGroup->addChild(createFloat16LogicalSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16FuncSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16VectorExtractSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16VectorInsertSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16VectorShuffleSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16CompositeConstructSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16CompositeInsertExtractSet<ComputeShaderSpec>(testCtx, "OpCompositeExtract"));
 +      testGroup->addChild(createFloat16CompositeInsertExtractSet<ComputeShaderSpec>(testCtx, "OpCompositeInsert"));
 +      testGroup->addChild(createFloat16ArithmeticSet<ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<1, ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<2, ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<3, ComputeShaderSpec>(testCtx));
 +      testGroup->addChild(createFloat16ArithmeticSet<4, ComputeShaderSpec>(testCtx));
 +
 +      return testGroup.release();
 +}
 +
+ tcu::TestCaseGroup* createOpNameAbuseTests (tcu::TestContext& testCtx)
+ {
+       de::MovePtr<tcu::TestCaseGroup> abuseGroup(new tcu::TestCaseGroup(testCtx, "opname_abuse", "OpName abuse tests"));
+       vector<CaseParameter>                   abuseCases;
+       RGBA                                                    defaultColors[4];
+       map<string, string>                             opNameFragments;
+       getOpNameAbuseCases(abuseCases);
+       getDefaultColors(defaultColors);
+       opNameFragments["testfun"] =
+               "%test_code  = OpFunction %v4f32 None %v4f32_v4f32_function\n"
+               "%param1     = OpFunctionParameter %v4f32\n"
+               "%label_func = OpLabel\n"
+               "%a          = OpVectorExtractDynamic %f32 %param1 %c_i32_0\n"
+               "%b          = OpFAdd %f32 %a %a\n"
+               "%c          = OpFSub %f32 %b %a\n"
+               "%ret        = OpVectorInsertDynamic %v4f32 %param1 %c %c_i32_0\n"
+               "OpReturnValue %ret\n"
+               "OpFunctionEnd\n";
+       for (unsigned int i = 0; i < abuseCases.size(); i++)
+       {
+               string casename;
+               casename = string("main") + abuseCases[i].name;
+               opNameFragments["debug"] =
+                       "OpName %BP_main \"" + abuseCases[i].param + "\"";
+               createTestsForAllStages(casename, defaultColors, defaultColors, opNameFragments, abuseGroup.get());
+       }
+       for (unsigned int i = 0; i < abuseCases.size(); i++)
+       {
+               string casename;
+               casename = string("b") + abuseCases[i].name;
+               opNameFragments["debug"] =
+                       "OpName %b \"" + abuseCases[i].param + "\"";
+               createTestsForAllStages(casename, defaultColors, defaultColors, opNameFragments, abuseGroup.get());
+       }
+       {
+               opNameFragments["debug"] =
+                       "OpName %test_code \"name1\"\n"
+                       "OpName %param1    \"name2\"\n"
+                       "OpName %a         \"name3\"\n"
+                       "OpName %b         \"name4\"\n"
+                       "OpName %c         \"name5\"\n"
+                       "OpName %ret       \"name6\"\n";
+               createTestsForAllStages("everything_named", defaultColors, defaultColors, opNameFragments, abuseGroup.get());
+       }
+       {
+               opNameFragments["debug"] =
+                       "OpName %test_code \"the_same\"\n"
+                       "OpName %param1    \"the_same\"\n"
+                       "OpName %a         \"the_same\"\n"
+                       "OpName %b         \"the_same\"\n"
+                       "OpName %c         \"the_same\"\n"
+                       "OpName %ret       \"the_same\"\n";
+               createTestsForAllStages("everything_named_the_same", defaultColors, defaultColors, opNameFragments, abuseGroup.get());
+       }
+       {
+               opNameFragments["debug"] =
+                       "OpName %BP_main \"to_be\"\n"
+                       "OpName %BP_main \"or_not\"\n"
+                       "OpName %BP_main \"to_be\"\n";
+               createTestsForAllStages("main_has_multiple_names", defaultColors, defaultColors, opNameFragments, abuseGroup.get());
+       }
+       {
+               opNameFragments["debug"] =
+                       "OpName %b \"to_be\"\n"
+                       "OpName %b \"or_not\"\n"
+                       "OpName %b \"to_be\"\n";
+               createTestsForAllStages("b_has_multiple_names", defaultColors, defaultColors, opNameFragments, abuseGroup.get());
+       }
+       return abuseGroup.release();
+ }
+ tcu::TestCaseGroup* createOpMemberNameAbuseTests (tcu::TestContext& testCtx)
+ {
+       de::MovePtr<tcu::TestCaseGroup> abuseGroup(new tcu::TestCaseGroup(testCtx, "opmembername_abuse", "OpName abuse tests"));
+       vector<CaseParameter>                   abuseCases;
+       RGBA                                                    defaultColors[4];
+       map<string, string>                             opMemberNameFragments;
+       getOpNameAbuseCases(abuseCases);
+       getDefaultColors(defaultColors);
+       opMemberNameFragments["pre_main"] =
+               "%f3str = OpTypeStruct %f32 %f32 %f32\n";
+       opMemberNameFragments["testfun"] =
+               "%test_code  = OpFunction %v4f32 None %v4f32_v4f32_function\n"
+               "%param1     = OpFunctionParameter %v4f32\n"
+               "%label_func = OpLabel\n"
+               "%a          = OpVectorExtractDynamic %f32 %param1 %c_i32_0\n"
+               "%b          = OpFAdd %f32 %a %a\n"
+               "%c          = OpFSub %f32 %b %a\n"
+               "%cstr       = OpCompositeConstruct %f3str %c %c %c\n"
+               "%d          = OpCompositeExtract %f32 %cstr 0\n"
+               "%ret        = OpVectorInsertDynamic %v4f32 %param1 %d %c_i32_0\n"
+               "OpReturnValue %ret\n"
+               "OpFunctionEnd\n";
+       for (unsigned int i = 0; i < abuseCases.size(); i++)
+       {
+               string casename;
+               casename = string("f3str_x") + abuseCases[i].name;
+               opMemberNameFragments["debug"] =
+                       "OpMemberName %f3str 0 \"" + abuseCases[i].param + "\"";
+               createTestsForAllStages(casename, defaultColors, defaultColors, opMemberNameFragments, abuseGroup.get());
+       }
+       {
+               opMemberNameFragments["debug"] =
+                       "OpMemberName %f3str 0 \"name1\"\n"
+                       "OpMemberName %f3str 1 \"name2\"\n"
+                       "OpMemberName %f3str 2 \"name3\"\n";
+               createTestsForAllStages("everything_named", defaultColors, defaultColors, opMemberNameFragments, abuseGroup.get());
+       }
+       {
+               opMemberNameFragments["debug"] =
+                       "OpMemberName %f3str 0 \"the_same\"\n"
+                       "OpMemberName %f3str 1 \"the_same\"\n"
+                       "OpMemberName %f3str 2 \"the_same\"\n";
+               createTestsForAllStages("everything_named_the_same", defaultColors, defaultColors, opMemberNameFragments, abuseGroup.get());
+       }
+       {
+               opMemberNameFragments["debug"] =
+                       "OpMemberName %f3str 0 \"to_be\"\n"
+                       "OpMemberName %f3str 1 \"or_not\"\n"
+                       "OpMemberName %f3str 0 \"to_be\"\n"
+                       "OpMemberName %f3str 2 \"makes_no\"\n"
+                       "OpMemberName %f3str 0 \"difference\"\n"
+                       "OpMemberName %f3str 0 \"to_me\"\n";
+               createTestsForAllStages("f3str_x_has_multiple_names", defaultColors, defaultColors, opMemberNameFragments, abuseGroup.get());
+       }
+       return abuseGroup.release();
+ }
  tcu::TestCaseGroup* createInstructionTests (tcu::TestContext& testCtx)
  {
        const bool testComputePipeline = true;
        computeTests->addChild(createVariablePointersComputeGroup(testCtx));
        computeTests->addChild(createImageSamplerComputeGroup(testCtx));
        computeTests->addChild(createOpNameGroup(testCtx));
+       computeTests->addChild(createOpMemberNameGroup(testCtx));
        computeTests->addChild(createPointerParameterComputeGroup(testCtx));
 +      computeTests->addChild(createFloat16Group(testCtx));
 +
        graphicsTests->addChild(createCrossStageInterfaceTests(testCtx));
        graphicsTests->addChild(createSpivVersionCheckTests(testCtx, !testComputePipeline));
        graphicsTests->addChild(createOpNopTests(testCtx));