diff --git a/test_conformance/compiler/main.cpp b/test_conformance/compiler/main.cpp index 20a62f26..e4c6ade7 100644 --- a/test_conformance/compiler/main.cpp +++ b/test_conformance/compiler/main.cpp @@ -13,10 +13,62 @@ // See the License for the specific language governing permissions and // limitations under the License. // +#include +#include + #include "harness/testHarness.h" +std::string spvBinariesPath = + (std::filesystem::path("compiler") / "spirv_bin").u8string(); +const std::string spvBinariesPathArg = "--spirv-binaries-path"; + +void printUsage() +{ + log_info("Reading SPIR-V files from default '%s' path.\n", + spvBinariesPath.c_str()); + log_info("In case you want to set other directory use '%s' argument.\n", + spvBinariesPathArg.c_str()); +} + int main(int argc, const char *argv[]) { + bool modifiedSpvBinariesPath = false; + bool listTests = false; + for (int i = 0; i < argc; ++i) + { + int argsRemoveNum = 0; + if (argv[i] == spvBinariesPathArg) + { + if (i + 1 == argc) + { + log_error("Missing value for '%s' argument.\n", + spvBinariesPathArg.c_str()); + return TEST_FAIL; + } + else + { + spvBinariesPath = std::string(argv[i + 1]); + argsRemoveNum += 2; + modifiedSpvBinariesPath = true; + } + } + + if (argsRemoveNum > 0) + { + for (int j = i; j < (argc - argsRemoveNum); ++j) + argv[j] = argv[j + argsRemoveNum]; + + argc -= argsRemoveNum; + --i; + } + listTests |= (argv[i] == std::string("--list") + || argv[i] == std::string("-list")); + } + if (modifiedSpvBinariesPath == false && !listTests) + { + printUsage(); + } + return runTestHarness(argc, argv, test_registry::getInstance().num_tests(), test_registry::getInstance().definitions(), false, 0); } diff --git a/test_conformance/compiler/test_unload_platform_compiler.cpp b/test_conformance/compiler/test_unload_platform_compiler.cpp index bb41f64d..521dea11 100644 --- a/test_conformance/compiler/test_unload_platform_compiler.cpp +++ b/test_conformance/compiler/test_unload_platform_compiler.cpp @@ -32,8 +32,6 @@ const std::string slash = "\\"; #else const std::string slash = "/"; #endif -std::string compilerSpvBinaries = "test_conformance" + slash + "compiler" - + slash + "spirv_bin" + slash + "write_kernel.spv"; const std::string spvExt = ".spv"; @@ -338,8 +336,8 @@ public: std::vector kernel_buffer; - std::string file_name = - compilerSpvBinaries + std::to_string(address_bits); + std::string file_name = spvBinariesPath + slash + "write_kernel.spv" + + std::to_string(address_bits); m_spirv_binary = readBinary(file_name.c_str()); m_spirv_size = m_spirv_binary.size(); } diff --git a/test_conformance/compiler/test_unload_platform_compiler_resources.hpp b/test_conformance/compiler/test_unload_platform_compiler_resources.hpp index a529c212..029cbf4b 100644 --- a/test_conformance/compiler/test_unload_platform_compiler_resources.hpp +++ b/test_conformance/compiler/test_unload_platform_compiler_resources.hpp @@ -1,4 +1,6 @@ -#include +#include + +extern std::string spvBinariesPath; static const char write_kernel_source[] = R"( kernel void write_kernel(global unsigned int *p) {