1fd4e5da5Sopenharmony_ci// Copyright (c) 2018 Google LLC. 2fd4e5da5Sopenharmony_ci// 3fd4e5da5Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4fd4e5da5Sopenharmony_ci// you may not use this file except in compliance with the License. 5fd4e5da5Sopenharmony_ci// You may obtain a copy of the License at 6fd4e5da5Sopenharmony_ci// 7fd4e5da5Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8fd4e5da5Sopenharmony_ci// 9fd4e5da5Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10fd4e5da5Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 11fd4e5da5Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fd4e5da5Sopenharmony_ci// See the License for the specific language governing permissions and 13fd4e5da5Sopenharmony_ci// limitations under the License. 14fd4e5da5Sopenharmony_ci 15fd4e5da5Sopenharmony_ci#include <string> 16fd4e5da5Sopenharmony_ci#include <tuple> 17fd4e5da5Sopenharmony_ci 18fd4e5da5Sopenharmony_ci#include "gmock/gmock.h" 19fd4e5da5Sopenharmony_ci#include "test/val/val_fixtures.h" 20fd4e5da5Sopenharmony_ci 21fd4e5da5Sopenharmony_cinamespace spvtools { 22fd4e5da5Sopenharmony_cinamespace val { 23fd4e5da5Sopenharmony_cinamespace { 24fd4e5da5Sopenharmony_ci 25fd4e5da5Sopenharmony_ciusing ::testing::HasSubstr; 26fd4e5da5Sopenharmony_ci 27fd4e5da5Sopenharmony_ciusing ValidateVersion = spvtest::ValidateBase< 28fd4e5da5Sopenharmony_ci std::tuple<spv_target_env, spv_target_env, std::string, bool>>; 29fd4e5da5Sopenharmony_ci 30fd4e5da5Sopenharmony_ciconst std::string vulkan_spirv = R"( 31fd4e5da5Sopenharmony_ciOpCapability Shader 32fd4e5da5Sopenharmony_ciOpMemoryModel Logical GLSL450 33fd4e5da5Sopenharmony_ciOpEntryPoint Fragment %func "func" 34fd4e5da5Sopenharmony_ciOpExecutionMode %func OriginUpperLeft 35fd4e5da5Sopenharmony_ci%void = OpTypeVoid 36fd4e5da5Sopenharmony_ci%functy = OpTypeFunction %void 37fd4e5da5Sopenharmony_ci%func = OpFunction %void None %functy 38fd4e5da5Sopenharmony_ci%1 = OpLabel 39fd4e5da5Sopenharmony_ciOpReturn 40fd4e5da5Sopenharmony_ciOpFunctionEnd 41fd4e5da5Sopenharmony_ci)"; 42fd4e5da5Sopenharmony_ci 43fd4e5da5Sopenharmony_ciconst std::string opencl_spirv = R"( 44fd4e5da5Sopenharmony_ciOpCapability Addresses 45fd4e5da5Sopenharmony_ciOpCapability Kernel 46fd4e5da5Sopenharmony_ciOpCapability Linkage 47fd4e5da5Sopenharmony_ciOpMemoryModel Physical32 OpenCL 48fd4e5da5Sopenharmony_ci)"; 49fd4e5da5Sopenharmony_ci 50fd4e5da5Sopenharmony_cistd::string version(spv_target_env env) { 51fd4e5da5Sopenharmony_ci switch (env) { 52fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_0: 53fd4e5da5Sopenharmony_ci case SPV_ENV_VULKAN_1_0: 54fd4e5da5Sopenharmony_ci case SPV_ENV_OPENGL_4_0: 55fd4e5da5Sopenharmony_ci case SPV_ENV_OPENGL_4_1: 56fd4e5da5Sopenharmony_ci case SPV_ENV_OPENGL_4_2: 57fd4e5da5Sopenharmony_ci case SPV_ENV_OPENGL_4_3: 58fd4e5da5Sopenharmony_ci case SPV_ENV_OPENGL_4_5: 59fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_1_2: 60fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_2_0: 61fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_EMBEDDED_2_0: 62fd4e5da5Sopenharmony_ci return "1.0"; 63fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_1: 64fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_2_1: 65fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_EMBEDDED_2_1: 66fd4e5da5Sopenharmony_ci return "1.1"; 67fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_2: 68fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_2_2: 69fd4e5da5Sopenharmony_ci case SPV_ENV_OPENCL_EMBEDDED_2_2: 70fd4e5da5Sopenharmony_ci return "1.2"; 71fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_3: 72fd4e5da5Sopenharmony_ci case SPV_ENV_VULKAN_1_1: 73fd4e5da5Sopenharmony_ci return "1.3"; 74fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_4: 75fd4e5da5Sopenharmony_ci case SPV_ENV_VULKAN_1_1_SPIRV_1_4: 76fd4e5da5Sopenharmony_ci return "1.4"; 77fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_5: 78fd4e5da5Sopenharmony_ci case SPV_ENV_VULKAN_1_2: 79fd4e5da5Sopenharmony_ci return "1.5"; 80fd4e5da5Sopenharmony_ci case SPV_ENV_UNIVERSAL_1_6: 81fd4e5da5Sopenharmony_ci case SPV_ENV_VULKAN_1_3: 82fd4e5da5Sopenharmony_ci return "1.6"; 83fd4e5da5Sopenharmony_ci default: 84fd4e5da5Sopenharmony_ci return "0"; 85fd4e5da5Sopenharmony_ci } 86fd4e5da5Sopenharmony_ci} 87fd4e5da5Sopenharmony_ci 88fd4e5da5Sopenharmony_ciTEST_P(ValidateVersion, version) { 89fd4e5da5Sopenharmony_ci CompileSuccessfully(std::get<2>(GetParam()), std::get<0>(GetParam())); 90fd4e5da5Sopenharmony_ci spv_result_t res = ValidateInstructions(std::get<1>(GetParam())); 91fd4e5da5Sopenharmony_ci if (std::get<3>(GetParam())) { 92fd4e5da5Sopenharmony_ci ASSERT_EQ(SPV_SUCCESS, res); 93fd4e5da5Sopenharmony_ci } else { 94fd4e5da5Sopenharmony_ci ASSERT_EQ(SPV_ERROR_WRONG_VERSION, res); 95fd4e5da5Sopenharmony_ci 96fd4e5da5Sopenharmony_ci std::string msg = "Invalid SPIR-V binary version "; 97fd4e5da5Sopenharmony_ci msg += version(std::get<0>(GetParam())); 98fd4e5da5Sopenharmony_ci msg += " for target environment "; 99fd4e5da5Sopenharmony_ci msg += spvTargetEnvDescription(std::get<1>(GetParam())); 100fd4e5da5Sopenharmony_ci EXPECT_THAT(getDiagnosticString(), HasSubstr(msg)); 101fd4e5da5Sopenharmony_ci } 102fd4e5da5Sopenharmony_ci} 103fd4e5da5Sopenharmony_ci 104fd4e5da5Sopenharmony_ci// clang-format off 105fd4e5da5Sopenharmony_ciINSTANTIATE_TEST_SUITE_P(Universal, ValidateVersion, 106fd4e5da5Sopenharmony_ci ::testing::Values( 107fd4e5da5Sopenharmony_ci // Binary version, Target environment 108fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, true), 109fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, true), 110fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, true), 111fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, true), 112fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 113fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 114fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 115fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_VULKAN_1_0, vulkan_spirv, true), 116fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_VULKAN_1_1, vulkan_spirv, true), 117fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_VULKAN_1_1_SPIRV_1_4,vulkan_spirv, true), 118fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 119fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 120fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_OPENGL_4_0, vulkan_spirv, true), 121fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_OPENGL_4_1, vulkan_spirv, true), 122fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_OPENGL_4_2, vulkan_spirv, true), 123fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_OPENGL_4_3, vulkan_spirv, true), 124fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_OPENGL_4_5, vulkan_spirv, true), 125fd4e5da5Sopenharmony_ci 126fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 127fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, true), 128fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, true), 129fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, true), 130fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 131fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 132fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 133fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 134fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_VULKAN_1_1, vulkan_spirv, true), 135fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 136fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 137fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 138fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 139fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 140fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 141fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 142fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_1, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 143fd4e5da5Sopenharmony_ci 144fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 145fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 146fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, true), 147fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, true), 148fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 149fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 150fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 151fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 152fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_VULKAN_1_1, vulkan_spirv, true), 153fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 154fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 155fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 156fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 157fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 158fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 159fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 160fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_2, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 161fd4e5da5Sopenharmony_ci 162fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 163fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 164fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 165fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, true), 166fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 167fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 168fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 169fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 170fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_VULKAN_1_1, vulkan_spirv, true), 171fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 172fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 173fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 174fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 175fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 176fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 177fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 178fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_3, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 179fd4e5da5Sopenharmony_ci 180fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 181fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 182fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 183fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, false), 184fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 185fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 186fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 187fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 188fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_VULKAN_1_1, vulkan_spirv, false), 189fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 190fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 191fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 192fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 193fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 194fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 195fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 196fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_4, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 197fd4e5da5Sopenharmony_ci 198fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 199fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 200fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 201fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, false), 202fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, false), 203fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 204fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 205fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 206fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_VULKAN_1_1, vulkan_spirv, false), 207fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, false), 208fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 209fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 210fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 211fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 212fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 213fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 214fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_5, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 215fd4e5da5Sopenharmony_ci 216fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 217fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 218fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 219fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, false), 220fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, false), 221fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, false), 222fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 223fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 224fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_VULKAN_1_1, vulkan_spirv, false), 225fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, false), 226fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_VULKAN_1_2, vulkan_spirv, false), 227fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 228fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 229fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 230fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 231fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 232fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_UNIVERSAL_1_6, SPV_ENV_OPENGL_4_5, vulkan_spirv, false) 233fd4e5da5Sopenharmony_ci ) 234fd4e5da5Sopenharmony_ci); 235fd4e5da5Sopenharmony_ci 236fd4e5da5Sopenharmony_ciINSTANTIATE_TEST_SUITE_P(Vulkan, ValidateVersion, 237fd4e5da5Sopenharmony_ci ::testing::Values( 238fd4e5da5Sopenharmony_ci // Binary version, Target environment 239fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, true), 240fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, true), 241fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, true), 242fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, true), 243fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 244fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 245fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 246fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_VULKAN_1_0, vulkan_spirv, true), 247fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_VULKAN_1_1, vulkan_spirv, true), 248fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 249fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 250fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 251fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_OPENGL_4_0, vulkan_spirv, true), 252fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_OPENGL_4_1, vulkan_spirv, true), 253fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_OPENGL_4_2, vulkan_spirv, true), 254fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_OPENGL_4_3, vulkan_spirv, true), 255fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_0, SPV_ENV_OPENGL_4_5, vulkan_spirv, true), 256fd4e5da5Sopenharmony_ci 257fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 258fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 259fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 260fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, true), 261fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 262fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 263fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 264fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 265fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_VULKAN_1_1, vulkan_spirv, true), 266fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 267fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 268fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 269fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 270fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 271fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 272fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 273fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 274fd4e5da5Sopenharmony_ci 275fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 276fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 277fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 278fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, false), 279fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, true), 280fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 281fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 282fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 283fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_VULKAN_1_1, vulkan_spirv, false), 284fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, true), 285fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 286fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 287fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 288fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 289fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 290fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 291fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_1_SPIRV_1_4, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 292fd4e5da5Sopenharmony_ci 293fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 294fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 295fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 296fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, false), 297fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, false), 298fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, true), 299fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 300fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 301fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_VULKAN_1_1, vulkan_spirv, false), 302fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, false), 303fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_VULKAN_1_2, vulkan_spirv, true), 304fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 305fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 306fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 307fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 308fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 309fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_2, SPV_ENV_OPENGL_4_5, vulkan_spirv, false), 310fd4e5da5Sopenharmony_ci 311fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_0, vulkan_spirv, false), 312fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_1, vulkan_spirv, false), 313fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_2, vulkan_spirv, false), 314fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_3, vulkan_spirv, false), 315fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_4, vulkan_spirv, false), 316fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_5, vulkan_spirv, false), 317fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_UNIVERSAL_1_6, vulkan_spirv, true), 318fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_VULKAN_1_0, vulkan_spirv, false), 319fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_VULKAN_1_1, vulkan_spirv, false), 320fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_VULKAN_1_1_SPIRV_1_4, vulkan_spirv, false), 321fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_VULKAN_1_2, vulkan_spirv, false), 322fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_VULKAN_1_3, vulkan_spirv, true), 323fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_OPENGL_4_0, vulkan_spirv, false), 324fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_OPENGL_4_1, vulkan_spirv, false), 325fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_OPENGL_4_2, vulkan_spirv, false), 326fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_OPENGL_4_3, vulkan_spirv, false), 327fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_VULKAN_1_3, SPV_ENV_OPENGL_4_5, vulkan_spirv, false) 328fd4e5da5Sopenharmony_ci ) 329fd4e5da5Sopenharmony_ci); 330fd4e5da5Sopenharmony_ci 331fd4e5da5Sopenharmony_ciINSTANTIATE_TEST_SUITE_P(OpenCL, ValidateVersion, 332fd4e5da5Sopenharmony_ci ::testing::Values( 333fd4e5da5Sopenharmony_ci // Binary version, Target environment 334fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, true), 335fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, true), 336fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 337fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 338fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_4, opencl_spirv, true), 339fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_5, opencl_spirv, true), 340fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_UNIVERSAL_1_6, opencl_spirv, true), 341fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_2_0, opencl_spirv, true), 342fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_2_1, opencl_spirv, true), 343fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 344fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, true), 345fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, true), 346fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 347fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_0, SPV_ENV_OPENCL_1_2, opencl_spirv, true), 348fd4e5da5Sopenharmony_ci 349fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, true), 350fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, true), 351fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 352fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 353fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_4, opencl_spirv, true), 354fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_5, opencl_spirv, true), 355fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_UNIVERSAL_1_6, opencl_spirv, true), 356fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_2_0, opencl_spirv, true), 357fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_2_1, opencl_spirv, true), 358fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 359fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, true), 360fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, true), 361fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 362fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_1_2, opencl_spirv, true), 363fd4e5da5Sopenharmony_ci 364fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, false), 365fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, false), 366fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 367fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 368fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_4, opencl_spirv, true), 369fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_5, opencl_spirv, true), 370fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_UNIVERSAL_1_6, opencl_spirv, true), 371fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_2_0, opencl_spirv, false), 372fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_2_1, opencl_spirv, false), 373fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 374fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, false), 375fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, false), 376fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 377fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_2_2, SPV_ENV_OPENCL_1_2, opencl_spirv, false), 378fd4e5da5Sopenharmony_ci 379fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, true), 380fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, true), 381fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 382fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 383fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_4, opencl_spirv, true), 384fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_5, opencl_spirv, true), 385fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_UNIVERSAL_1_6, opencl_spirv, true), 386fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_2_0, opencl_spirv, true), 387fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_2_1, opencl_spirv, true), 388fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 389fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, true), 390fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, true), 391fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 392fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_1_2, opencl_spirv, true) 393fd4e5da5Sopenharmony_ci ) 394fd4e5da5Sopenharmony_ci); 395fd4e5da5Sopenharmony_ci 396fd4e5da5Sopenharmony_ciINSTANTIATE_TEST_SUITE_P(OpenCLEmbedded, ValidateVersion, 397fd4e5da5Sopenharmony_ci ::testing::Values( 398fd4e5da5Sopenharmony_ci // Binary version, Target environment 399fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, true), 400fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, true), 401fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 402fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 403fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_2_0, opencl_spirv, true), 404fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_2_1, opencl_spirv, true), 405fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 406fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, true), 407fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, true), 408fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 409fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_0, SPV_ENV_OPENCL_1_2, opencl_spirv, true), 410fd4e5da5Sopenharmony_ci 411fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, true), 412fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, true), 413fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 414fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 415fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_2_0, opencl_spirv, true), 416fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_2_1, opencl_spirv, true), 417fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 418fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, true), 419fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, true), 420fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 421fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_1, SPV_ENV_OPENCL_1_2, opencl_spirv, true), 422fd4e5da5Sopenharmony_ci 423fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_UNIVERSAL_1_0, opencl_spirv, false), 424fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_UNIVERSAL_1_1, opencl_spirv, false), 425fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_UNIVERSAL_1_2, opencl_spirv, true), 426fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_UNIVERSAL_1_3, opencl_spirv, true), 427fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_2_0, opencl_spirv, false), 428fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_2_1, opencl_spirv, false), 429fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_2_2, opencl_spirv, true), 430fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_EMBEDDED_2_0, opencl_spirv, false), 431fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_EMBEDDED_2_1, opencl_spirv, false), 432fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_EMBEDDED_2_2, opencl_spirv, true), 433fd4e5da5Sopenharmony_ci std::make_tuple(SPV_ENV_OPENCL_EMBEDDED_2_2, SPV_ENV_OPENCL_1_2, opencl_spirv, false) 434fd4e5da5Sopenharmony_ci ) 435fd4e5da5Sopenharmony_ci); 436fd4e5da5Sopenharmony_ci// clang-format on 437fd4e5da5Sopenharmony_ci 438fd4e5da5Sopenharmony_ci} // namespace 439fd4e5da5Sopenharmony_ci} // namespace val 440fd4e5da5Sopenharmony_ci} // namespace spvtools 441