> > 2013-08-07 Xinliang David Li <davi...@google.com> > > > > * config/i386/i386.h: Adjust macro definition. > > * config/i386/i386.opt: Define two new options. > > * config/i386/x86-tune.def: Add arch selector field in macros. > > * config/i386/i386.h: include x86-tune.def. > > * config/i386/i386.c (ix86_option_override_internal): > > Refactor the code. > > (parse_mtune_ctrl_str): New function. > > (set_ix86_tune_features): New function. > > (ix86_function_specific_restore): Call the new helper function. OK. > +/* Helper function to set ix86_tune_features. IX86_TUNE is the > + processor type. */ > + > +static void > +set_ix86_tune_features (enum processor_type ix86_tune, bool dump) > +{ > + unsigned int ix86_tune_mask = 1u << ix86_tune; > + int i; > + > + for (i = 0; i < X86_TUNE_LAST; ++i) > + { > + if (ix86_tune_no_default) > + ix86_tune_features[i] = 0; > + else > + ix86_tune_features[i] = !!(initial_ix86_tune_features[i] & > ix86_tune_mask); Perhaps != 0? > Index: doc/invoke.texi > =================================================================== > --- doc/invoke.texi (revision 201645) > +++ doc/invoke.texi (working copy) > @@ -637,6 +637,7 @@ Objective-C and Objective-C++ Dialects}. > > @emph{i386 and x86-64 Options} > @gccoptlist{-mtune=@var{cpu-type} -march=@var{cpu-type} @gol > +-mtune-ctrl=@var{feature-list} -mdump-tune-features -mno-default @gol > -mfpmath=@var{unit} @gol > -masm=@var{dialect} -mno-fancy-math-387 @gol > -mno-fp-ret-in-387 -msoft-float @gol > @@ -14429,6 +14430,24 @@ supported architecture, using the approp > the file containing the CPU detection code should be compiled without > these options. > > +@item -mdump-tune-features > +@opindex mdump-tune-features > +This option instructs GCC to dump the names of the x86 performance > +tuning features and default settings. The names can be used in > +@option{-mtune-ctrl=@var{feature-list}}. > + > +@item -mtune-ctrl=@var{feature-list} > +@opindex mtune-ctrl=@var{feature-list} > +This option is used to do fine grain control of x86 code generation features. > +@var{feature-list} is a comma separated list of @var{feature} names. See also > +@option{-mdump-tune-features}. When specified, the @var{feature} will be > turned > +on if it is not preceded with @code{^}, otherwise, it will be turned off. > + > +@item -mno-default > +@opindex mno-default > +This option instructs GCC to turn off all tunable features. See also > +@option{-mtune-ctrl=@var{feature-list}} and @option{-mdump-tune-features}.
Perhaps we shall at least explicitely document that this is intended for devleopment only and may lead to ICEs. Honza > + > @item -mcld > @opindex mcld > This option instructs GCC to emit a @code{cld} instruction in the prologue