mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-26 08:49:02 +00:00
Make wimpy factor argument parsing logic common (#155)
This commit is contained in:
committed by
Kévin Petit
parent
8d209840be
commit
c1cd117265
@@ -127,3 +127,27 @@ int parseCustomParam (int argc, const char *argv[], const char *ignore)
|
|||||||
}
|
}
|
||||||
return argc;
|
return argc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_power_of_two(int number)
|
||||||
|
{
|
||||||
|
return number && !(number & (number - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void parseWimpyReductionFactor(const char *&arg, int &wimpyReductionFactor)
|
||||||
|
{
|
||||||
|
const char *arg_temp = strchr(&arg[1], ']');
|
||||||
|
if (arg_temp != 0)
|
||||||
|
{
|
||||||
|
int new_factor = atoi(&arg[1]);
|
||||||
|
arg = arg_temp; // Advance until ']'
|
||||||
|
if (is_power_of_two(new_factor))
|
||||||
|
{
|
||||||
|
log_info("\n Wimpy reduction factor changed from %d to %d \n", wimpyReductionFactor, new_factor);
|
||||||
|
wimpyReductionFactor = new_factor;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log_info("\n WARNING: Incorrect wimpy reduction factor %d, must be power of 2. The default value will be used.\n", new_factor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
#ifndef _parseParameters_h
|
#ifndef _parseParameters_h
|
||||||
#define _parseParameters_h
|
#define _parseParameters_h
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
extern bool gOfflineCompiler;
|
extern bool gOfflineCompiler;
|
||||||
@@ -34,4 +35,6 @@ extern OfflineCompilerOutputType gOfflineCompilerOutputType;
|
|||||||
|
|
||||||
extern int parseCustomParam (int argc, const char *argv[], const char *ignore = 0 );
|
extern int parseCustomParam (int argc, const char *argv[], const char *ignore = 0 );
|
||||||
|
|
||||||
|
extern void parseWimpyReductionFactor(const char *&arg, int &wimpyReductionFactor);
|
||||||
|
|
||||||
#endif // _parseParameters_h
|
#endif // _parseParameters_h
|
||||||
|
|||||||
@@ -441,25 +441,7 @@ static int ParseArgs( int argc, const char **argv )
|
|||||||
gWimpyMode ^= 1;
|
gWimpyMode ^= 1;
|
||||||
break;
|
break;
|
||||||
case '[':
|
case '[':
|
||||||
// wimpy reduction factor can be set with the option -[2^n]
|
parseWimpyReductionFactor(arg, gWimpyReductionFactor);
|
||||||
// Default factor is 128, and n practically can be from 1 to 12
|
|
||||||
{
|
|
||||||
const char *arg_temp = strchr(&arg[1], ']');
|
|
||||||
if (arg_temp != 0)
|
|
||||||
{
|
|
||||||
int new_factor = atoi(&arg[1]);
|
|
||||||
arg = arg_temp; // Advance until ']'
|
|
||||||
if (new_factor && !(new_factor & (new_factor - 1)))
|
|
||||||
{
|
|
||||||
vlog(" WimpyReduction factor changed from %d to %d \n", gWimpyReductionFactor, new_factor);
|
|
||||||
gWimpyReductionFactor = new_factor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vlog(" Error in WimpyReduction factor, must be power of 2 \n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'z':
|
case 'z':
|
||||||
gForceFTZ ^= 1;
|
gForceFTZ ^= 1;
|
||||||
|
|||||||
@@ -251,25 +251,7 @@ static int ParseArgs( int argc, const char **argv )
|
|||||||
gWimpyMode = true;
|
gWimpyMode = true;
|
||||||
break;
|
break;
|
||||||
case '[':
|
case '[':
|
||||||
// wimpy reduction factor can be set with the option -[2^n]
|
parseWimpyReductionFactor( arg, gWimpyReductionFactor);
|
||||||
// Default factor is 512, and n practically can be from 1 to 12
|
|
||||||
{
|
|
||||||
const char *arg_temp = strchr(&arg[1], ']');
|
|
||||||
if (arg_temp != 0)
|
|
||||||
{
|
|
||||||
int new_factor = atoi(&arg[1]);
|
|
||||||
arg = arg_temp; // Advance until ']'
|
|
||||||
if (new_factor && !(new_factor & (new_factor - 1)))
|
|
||||||
{
|
|
||||||
vlog(" WimpyReduction factor changed from %d to %d \n", gWimpyReductionFactor, new_factor);
|
|
||||||
gWimpyReductionFactor = new_factor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vlog(" Error in WimpyReduction factor, must be power of 2 \n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
vlog_error( " <-- unknown flag: %c (0x%2.2x)\n)", *arg, *arg );
|
vlog_error( " <-- unknown flag: %c (0x%2.2x)\n)", *arg, *arg );
|
||||||
|
|||||||
@@ -1039,24 +1039,7 @@ static int ParseArgs( int argc, const char **argv )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case '[':
|
case '[':
|
||||||
// wimpy reduction factor can be set with the option -[2^n]
|
parseWimpyReductionFactor(arg, gWimpyReductionFactor);
|
||||||
// Default factor is 32, and n practically can be from 1 to 10
|
|
||||||
{
|
|
||||||
const char *arg_temp = strchr(&arg[1], ']');
|
|
||||||
if( arg_temp != 0)
|
|
||||||
{
|
|
||||||
int new_factor = atoi(&arg[1]);
|
|
||||||
arg=arg_temp; // Advance until ']'
|
|
||||||
if(new_factor && !(new_factor & (new_factor - 1)))
|
|
||||||
{
|
|
||||||
vlog( " WimpyReduction factor changed from %d to %d \n",gWimpyReductionFactor, new_factor);
|
|
||||||
gWimpyReductionFactor = new_factor;
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
vlog( " Error in WimpyReduction factor %d, must be power of 2 \n",gWimpyReductionFactor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'z':
|
case 'z':
|
||||||
|
|||||||
@@ -605,25 +605,7 @@ int main(int argc, char* argv[])
|
|||||||
s_wimpy_mode = true;
|
s_wimpy_mode = true;
|
||||||
break;
|
break;
|
||||||
case '[':
|
case '[':
|
||||||
// wimpy reduction factor can be set with the option -[2^n]
|
parseWimpyReductionFactor(arg, s_wimpy_reduction_factor);
|
||||||
// Default factor is 256, and n practically can be from 1 to 12
|
|
||||||
{
|
|
||||||
const char *arg_temp = strchr(&arg[1], ']');
|
|
||||||
if (arg_temp != 0)
|
|
||||||
{
|
|
||||||
int new_factor = atoi(&arg[1]);
|
|
||||||
arg = arg_temp; // Advance until ']'
|
|
||||||
if (new_factor && !(new_factor & (new_factor - 1)))
|
|
||||||
{
|
|
||||||
vlog(" WimpyReduction factor changed from %d to %d \n", s_wimpy_reduction_factor, new_factor);
|
|
||||||
s_wimpy_reduction_factor = new_factor;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vlog(" Error in WimpyReduction factor must be power of 2 \n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user