mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Ocloc: Add -s to options string for non-spirv input with -g option passed
Automatically add "-s" (source path) option if -g flag is present. This applies only to non-spirv input. - Due to conflict, do not automatically append source path when CMC compiler is used. Related-To: NEO-7285 Signed-off-by: Kacper Nowak kacper.nowak@intel.com
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
ccdb5aaa2a
commit
963930925a
@ -1243,6 +1243,123 @@ TEST_F(OfflineCompilerTests, givenDebugOptionThenInternalOptionShouldContainKern
|
||||
EXPECT_TRUE(hasSubstr(internalOptions, "-cl-kernel-debug-enable"));
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, givenDebugOptionAndNonSpirvInputThenOptionsShouldContainDashSOptionAppendedAutomatically) {
|
||||
auto mockOfflineCompiler = std::unique_ptr<MockOfflineCompiler>(new MockOfflineCompiler());
|
||||
mockOfflineCompiler->uniqueHelper->callBaseFileExists = false;
|
||||
mockOfflineCompiler->uniqueHelper->callBaseLoadDataFromFile = false;
|
||||
mockOfflineCompiler->uniqueHelper->filesMap["some_input.cl"] = "";
|
||||
|
||||
std::vector<std::string> argv = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-options",
|
||||
"-g",
|
||||
"-file",
|
||||
"some_input.cl",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
|
||||
mockOfflineCompiler->initialize(argv.size(), argv);
|
||||
const auto &options = mockOfflineCompiler->options;
|
||||
std::string appendedOption{"-s \"some_input.cl\""};
|
||||
EXPECT_TRUE(hasSubstr(options, appendedOption));
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, givenDebugOptionAndNonSpirvInputWhenFilenameIsSeparatedWithSpacesThenAppendedSourcePathIsSetCorrectly) {
|
||||
auto mockOfflineCompiler = std::unique_ptr<MockOfflineCompiler>(new MockOfflineCompiler());
|
||||
mockOfflineCompiler->uniqueHelper->callBaseFileExists = false;
|
||||
mockOfflineCompiler->uniqueHelper->callBaseLoadDataFromFile = false;
|
||||
mockOfflineCompiler->uniqueHelper->filesMap["filename with spaces.cl"] = "";
|
||||
|
||||
std::vector<std::string> argv = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-options",
|
||||
"-g",
|
||||
"-file",
|
||||
"filename with spaces.cl",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
|
||||
const auto result = mockOfflineCompiler->initialize(argv.size(), argv);
|
||||
EXPECT_EQ(OclocErrorCode::SUCCESS, result);
|
||||
const auto &options = mockOfflineCompiler->options;
|
||||
std::string appendedOption{"-s \"filename with spaces.cl\""};
|
||||
EXPECT_TRUE(hasSubstr(options, appendedOption));
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, givenDebugOptionAndSpirvInputThenDoNotAppendDashSOptionAutomatically) {
|
||||
auto mockOfflineCompiler = std::unique_ptr<MockOfflineCompiler>(new MockOfflineCompiler());
|
||||
mockOfflineCompiler->uniqueHelper->callBaseFileExists = false;
|
||||
mockOfflineCompiler->uniqueHelper->callBaseLoadDataFromFile = false;
|
||||
mockOfflineCompiler->uniqueHelper->filesMap["some_input.spirv"] = "";
|
||||
|
||||
std::vector<std::string> argvSpirvInput = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-spirv_input",
|
||||
"-options",
|
||||
"-g",
|
||||
"-file",
|
||||
"some_input.spirv",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
|
||||
mockOfflineCompiler->initialize(argvSpirvInput.size(), argvSpirvInput);
|
||||
const auto &options = mockOfflineCompiler->options;
|
||||
std::string notAppendedOption{"-s \"some_input.spirv\""};
|
||||
EXPECT_FALSE(hasSubstr(options, notAppendedOption));
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, givenDebugOptionWhenCompilerIsCMCThenDoNotAppendDashSOptionAutomatically) {
|
||||
auto mockOfflineCompiler = std::unique_ptr<MockOfflineCompiler>(new MockOfflineCompiler());
|
||||
mockOfflineCompiler->uniqueHelper->callBaseFileExists = false;
|
||||
mockOfflineCompiler->uniqueHelper->callBaseLoadDataFromFile = false;
|
||||
mockOfflineCompiler->uniqueHelper->filesMap["some_input.cl"] = "";
|
||||
|
||||
std::vector<std::string> argvSpirvInput = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-options",
|
||||
"-g cmc",
|
||||
"-file",
|
||||
"some_input.cl",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
|
||||
mockOfflineCompiler->initialize(argvSpirvInput.size(), argvSpirvInput);
|
||||
const auto &options = mockOfflineCompiler->options;
|
||||
std::string notAppendedOption{"-s \"some_input.spirv\""};
|
||||
EXPECT_FALSE(hasSubstr(options, notAppendedOption));
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, givenDebugOptionAndDashSOptionPassedManuallyThenDoNotAppendDashSOptionAutomatically) {
|
||||
auto mockOfflineCompiler = std::unique_ptr<MockOfflineCompiler>(new MockOfflineCompiler());
|
||||
mockOfflineCompiler->uniqueHelper->callBaseFileExists = false;
|
||||
mockOfflineCompiler->uniqueHelper->callBaseLoadDataFromFile = false;
|
||||
mockOfflineCompiler->uniqueHelper->filesMap["some_input.cl"] = "";
|
||||
std::vector<std::string> argvDashSPassed = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-options",
|
||||
"-g -s \"mockPath/some_input.cl\"",
|
||||
"-file",
|
||||
"some_input.cl",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
|
||||
mockOfflineCompiler->initialize(argvDashSPassed.size(), argvDashSPassed);
|
||||
const auto &options = mockOfflineCompiler->options;
|
||||
std::string appendedOption{"-s"};
|
||||
auto occurrences = 0u;
|
||||
size_t pos = 0u;
|
||||
while ((pos = options.find(appendedOption, pos)) != std::string::npos) {
|
||||
occurrences++;
|
||||
pos++;
|
||||
}
|
||||
EXPECT_EQ(1u, occurrences);
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, givenDashGInBiggerOptionStringWhenInitializingThenInternalOptionsShouldNotContainKernelDebugEnable) {
|
||||
|
||||
std::vector<std::string> argv = {
|
||||
|
Reference in New Issue
Block a user