A couple of FP-related fixes (prompted by Adam having trouble

running SPEC FP codes).

arch/alpha/isa_desc:
    Don't warn about non-standard trapping modes more than
    once per static instruction.  (Had the flag to suppress
    these but forgot to check it!)
build/SConstruct:
    Add USE_SSE2 option to enable compiling w/SSE2 (important
    for getting IEEE-compliant FP on x86).

--HG--
extra : convert_revision : eac69efb28cce7b48035480d8b7cb004782969f4
This commit is contained in:
Steve Reinhardt 2005-11-09 09:52:07 -05:00
parent 902e27e692
commit e701cf48d9
2 changed files with 8 additions and 2 deletions

View file

@ -712,7 +712,7 @@ def template FloatingPointExecute {{
Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
Trace::InstRecord *traceData) const Trace::InstRecord *traceData) const
{ {
if (trappingMode != Imprecise) { if (trappingMode != Imprecise && !warnedOnTrapping) {
warn("%s: non-standard trapping mode not supported", warn("%s: non-standard trapping mode not supported",
generateDisassembly(0, NULL)); generateDisassembly(0, NULL));
warnedOnTrapping = true; warnedOnTrapping = true;
@ -755,7 +755,7 @@ def template FPFixedRoundingExecute {{
Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
Trace::InstRecord *traceData) const Trace::InstRecord *traceData) const
{ {
if (trappingMode != Imprecise) { if (trappingMode != Imprecise && !warnedOnTrapping) {
warn("%s: non-standard trapping mode not supported", warn("%s: non-standard trapping mode not supported",
generateDisassembly(0, NULL)); generateDisassembly(0, NULL));
warnedOnTrapping = true; warnedOnTrapping = true;

View file

@ -233,6 +233,9 @@ sticky_opts.AddOptions(
BoolOption('SS_COMPATIBLE_FP', BoolOption('SS_COMPATIBLE_FP',
'Make floating-point results compatible with SimpleScalar', 'Make floating-point results compatible with SimpleScalar',
False), False),
BoolOption('USE_SSE2',
'Compile for SSE2 (-msse2) to get IEEE FP on x86 hosts',
False),
BoolOption('STATS_BINNING', 'Bin statistics by CPU mode', have_mysql), BoolOption('STATS_BINNING', 'Bin statistics by CPU mode', have_mysql),
BoolOption('USE_MYSQL', 'Use MySQL for stats output', have_mysql), BoolOption('USE_MYSQL', 'Use MySQL for stats output', have_mysql),
BoolOption('USE_FENV', 'Use <fenv.h> IEEE mode control', have_fenv), BoolOption('USE_FENV', 'Use <fenv.h> IEEE mode control', have_fenv),
@ -376,6 +379,9 @@ for build_dir in build_dirs:
env['CC'] = env['BATCH_CMD'] + ' ' + env['CC'] env['CC'] = env['BATCH_CMD'] + ' ' + env['CC']
env['CXX'] = env['BATCH_CMD'] + ' ' + env['CXX'] env['CXX'] = env['BATCH_CMD'] + ' ' + env['CXX']
if env['USE_SSE2']:
env.Append(CCFLAGS='-msse2')
# The m5/SConscript file sets up the build rules in 'env' according # The m5/SConscript file sets up the build rules in 'env' according
# to the configured options. It returns a list of environments, # to the configured options. It returns a list of environments,
# one for each variant build (debug, opt, etc.) # one for each variant build (debug, opt, etc.)