From b5d222f6cb2d33147f3d447003adc6ab33bcac0d Mon Sep 17 00:00:00 2001 From: Fabian Zwolinski Date: Mon, 9 Aug 2021 13:41:12 +0200 Subject: [PATCH] Add query option description to help Related-To: NEO-6031 Signed-off-by: Fabian Zwolinski --- .../offline_compiler/offline_compiler_tests.cpp | 14 ++++++++++++++ shared/offline_compiler/source/ocloc_api.cpp | 6 +++++- .../offline_compiler/source/offline_compiler.cpp | 6 ++++++ shared/offline_compiler/source/offline_compiler.h | 12 ++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp index 8dc0954a05..0376e563ca 100644 --- a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp +++ b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp @@ -247,6 +247,20 @@ TEST_F(MultiCommandTests, GivenOutputFileListFlagWhenBuildingMultiCommandThenSuc delete pMultiCommand; } +TEST_F(OfflineCompilerTests, GivenHelpOptionOnQueryThenSuccessIsReturned) { + std::vector argv = { + "ocloc", + "query", + "--help"}; + + testing::internal::CaptureStdout(); + int retVal = OfflineCompiler::query(argv.size(), argv, oclocArgHelperWithoutInput.get()); + std::string output = testing::internal::GetCapturedStdout(); + + EXPECT_STREQ(OfflineCompiler::queryHelp.data(), output.c_str()); + EXPECT_EQ(OfflineCompiler::ErrorCode::SUCCESS, retVal); +} + TEST_F(OfflineCompilerTests, GivenArgsWhenQueryIsCalledThenSuccessIsReturned) { std::vector argv = { "ocloc", diff --git a/shared/offline_compiler/source/ocloc_api.cpp b/shared/offline_compiler/source/ocloc_api.cpp index ca86fb6d20..e5b4a53cb5 100644 --- a/shared/offline_compiler/source/ocloc_api.cpp +++ b/shared/offline_compiler/source/ocloc_api.cpp @@ -39,7 +39,8 @@ Commands: disasm Disassembles Intel Compute GPU device binary. asm Assembles Intel Compute GPU device binary. multi Compiles multiple files using a config file. - validate Validates Intel Compute GPU device binary + validate Validates Intel Compute GPU device binary. + query Extracts versioning info. Default command (when none provided) is 'compile'. @@ -55,6 +56,9 @@ Examples: Validate Intel Compute GPU device binary ocloc validate -file source_file_Gen9core.bin + + Extract driver version + ocloc query OCL_DRIVER_VERSION )==="; extern "C" { diff --git a/shared/offline_compiler/source/offline_compiler.cpp b/shared/offline_compiler/source/offline_compiler.cpp index 8fa2122d65..406258d64b 100644 --- a/shared/offline_compiler/source/offline_compiler.cpp +++ b/shared/offline_compiler/source/offline_compiler.cpp @@ -106,6 +106,10 @@ OfflineCompiler *OfflineCompiler::create(size_t numArgs, const std::vectorprintf(OfflineCompiler::queryHelp.data()); +} + int OfflineCompiler::query(size_t numArgs, const std::vector &allArgs, OclocArgHelper *helper) { if (allArgs.size() != 3) { helper->printf("Error: Invalid command line. Expected ocloc query "); @@ -121,6 +125,8 @@ int OfflineCompiler::query(size_t numArgs, const std::vector &allAr } else if (Queries::queryOCLDriverVersion == arg) { auto driverVersion = NEO::getOclDriverVersion(); helper->saveOutput(Queries::queryOCLDriverVersion.data(), driverVersion.c_str(), driverVersion.size() + 1); + } else if ("--help" == arg) { + printQueryHelp(helper); } else { helper->printf("Error: Invalid command line. Uknown argument %s.", arg.c_str()); retVal = INVALID_COMMAND_LINE; diff --git a/shared/offline_compiler/source/offline_compiler.h b/shared/offline_compiler/source/offline_compiler.h index f7f5e540ab..cc4ccd7f63 100644 --- a/shared/offline_compiler/source/offline_compiler.h +++ b/shared/offline_compiler/source/offline_compiler.h @@ -51,6 +51,18 @@ class OfflineCompiler { std::string &getBuildLog(); void printUsage(); + static constexpr ConstStringRef queryHelp = + "Depending on will generate file\n" + "(with a name adequate to )\n" + "containing either driver version or NEO revision hash.\n\n" + "Usage: ocloc query \n\n" + "Supported query options:\n" + " OCL_DRIVER_VERSION ; returns driver version\n" + " NEO_REVISION ; returns NEO revision hash\n\n" + "Examples:\n" + " Extract driver version\n" + " ocloc query OCL_DRIVER_VERSION\n"; + OfflineCompiler &operator=(const OfflineCompiler &) = delete; OfflineCompiler(const OfflineCompiler &) = delete; MOCKABLE_VIRTUAL ~OfflineCompiler();