mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Add ze-opt-level support
Related-To: LOCI-2315 Signed-off-by: Young Jin Yoon <young.jin.yoon@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
3625344d37
commit
4ba64d2530
@ -35,6 +35,7 @@ namespace L0 {
|
||||
|
||||
namespace BuildOptions {
|
||||
NEO::ConstStringRef optDisable = "-ze-opt-disable";
|
||||
NEO::ConstStringRef optLevel = "-ze-opt-level";
|
||||
NEO::ConstStringRef greaterThan4GbRequired = "-ze-opt-greater-than-4GB-buffer-required";
|
||||
NEO::ConstStringRef hasBufferOffsetArg = "-ze-intel-has-buffer-offset-arg";
|
||||
NEO::ConstStringRef debugKernelEnable = "-ze-kernel-debug-enable";
|
||||
@ -422,6 +423,7 @@ void ModuleImp::createBuildOptions(const char *pBuildFlags, std::string &apiOpti
|
||||
|
||||
apiOptions = pBuildFlags;
|
||||
moveBuildOption(apiOptions, apiOptions, NEO::CompilerOptions::optDisable, BuildOptions::optDisable);
|
||||
moveBuildOption(apiOptions, apiOptions, NEO::CompilerOptions::optLevel, BuildOptions::optLevel);
|
||||
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::greaterThan4gbBuffersRequired, BuildOptions::greaterThan4GbRequired);
|
||||
moveBuildOption(internalBuildOptions, apiOptions, NEO::CompilerOptions::allowZebin, NEO::CompilerOptions::allowZebin);
|
||||
|
||||
@ -698,13 +700,25 @@ ze_result_t ModuleImp::performDynamicLink(uint32_t numModules,
|
||||
}
|
||||
|
||||
bool moveBuildOption(std::string &dstOptionsSet, std::string &srcOptionSet, NEO::ConstStringRef dstOptionName, NEO::ConstStringRef srcOptionName) {
|
||||
const char optDelim = ' ';
|
||||
const char valDelim = '=';
|
||||
|
||||
auto optInSrcPos = srcOptionSet.find(srcOptionName.begin());
|
||||
if (std::string::npos == optInSrcPos) {
|
||||
return false;
|
||||
}
|
||||
|
||||
srcOptionSet.erase(optInSrcPos, srcOptionName.length());
|
||||
NEO::CompilerOptions::concatenateAppend(dstOptionsSet, dstOptionName);
|
||||
std::string dstOptionStr(dstOptionName);
|
||||
auto optInSrcEndPos = srcOptionSet.find(optDelim, optInSrcPos);
|
||||
if (srcOptionName == BuildOptions::optLevel) {
|
||||
auto valInSrcPos = srcOptionSet.find(valDelim, optInSrcPos);
|
||||
if (std::string::npos == valInSrcPos) {
|
||||
return false;
|
||||
}
|
||||
dstOptionStr += srcOptionSet.substr(valInSrcPos + 1, optInSrcEndPos);
|
||||
}
|
||||
srcOptionSet.erase(optInSrcPos, (optInSrcEndPos - optInSrcPos));
|
||||
NEO::CompilerOptions::concatenateAppend(dstOptionsSet, dstOptionStr);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@ namespace L0 {
|
||||
|
||||
namespace BuildOptions {
|
||||
extern NEO::ConstStringRef optDisable;
|
||||
extern NEO::ConstStringRef optLevel;
|
||||
extern NEO::ConstStringRef greaterThan4GbRequired;
|
||||
extern NEO::ConstStringRef hasBufferOffsetArg;
|
||||
extern NEO::ConstStringRef debugKernelEnable;
|
||||
|
@ -1230,6 +1230,27 @@ TEST(BuildOptions, givenSrcOptionNameInSrcNamesWhenMovingBuildOptionsThenOptionI
|
||||
EXPECT_EQ(std::string::npos, srcNames.find(NEO::CompilerOptions::optDisable.str()));
|
||||
}
|
||||
|
||||
TEST(BuildOptions, givenSrcOptLevelInSrcNamesWhenMovingBuildOptionsThenOptionIsRemovedFromSrcNamesAndTranslatedOptionsStoredInDstNames) {
|
||||
std::string srcNames = NEO::CompilerOptions::concatenate(NEO::CompilerOptions::fastRelaxedMath, BuildOptions::optLevel);
|
||||
srcNames += "=2";
|
||||
std::string dstNames;
|
||||
|
||||
auto result = moveBuildOption(dstNames, srcNames, NEO::CompilerOptions::optLevel, BuildOptions::optLevel);
|
||||
EXPECT_TRUE(result);
|
||||
|
||||
EXPECT_EQ(NEO::CompilerOptions::optLevel.str() + std::string("2"), dstNames);
|
||||
EXPECT_EQ(std::string::npos, srcNames.find(BuildOptions::optLevel.str()));
|
||||
EXPECT_EQ(std::string::npos, srcNames.find(std::string("=2")));
|
||||
}
|
||||
|
||||
TEST(BuildOptions, givenSrcOptLevelWithoutLevelIntegerInSrcNamesWhenMovingBuildOptionsThenFalseIsReturned) {
|
||||
std::string srcNames = NEO::CompilerOptions::concatenate(NEO::CompilerOptions::fastRelaxedMath, BuildOptions::optLevel);
|
||||
std::string dstNames;
|
||||
|
||||
auto result = moveBuildOption(dstNames, srcNames, NEO::CompilerOptions::optLevel, BuildOptions::optLevel);
|
||||
EXPECT_FALSE(result);
|
||||
}
|
||||
|
||||
TEST_F(ModuleTest, givenInternalOptionsWhenBindlessEnabledThenBindlesOptionsPassed) {
|
||||
DebugManagerStateRestore restorer;
|
||||
DebugManager.flags.UseBindlessMode.set(1);
|
||||
|
@ -32,6 +32,7 @@ static constexpr ConstStringRef forceEmuInt32DivRem = "-cl-intel-force-emu-int32
|
||||
static constexpr ConstStringRef forceEmuInt32DivRemSP = "-cl-intel-force-emu-sp-int32divrem";
|
||||
static constexpr ConstStringRef allowZebin = "-allow-zebin";
|
||||
static constexpr ConstStringRef enableImageSupport = "-D__IMAGE_SUPPORT__=1";
|
||||
static constexpr ConstStringRef optLevel = "-ze-opt-level=O";
|
||||
|
||||
constexpr size_t nullterminateSize = 1U;
|
||||
constexpr size_t spaceSeparatorSize = 1U;
|
||||
|
Reference in New Issue
Block a user