ok for google branches. David
On Fri, Dec 16, 2011 at 7:54 PM, Sriraman Tallam <tmsri...@google.com> wrote: > Add new target builtins __builtin_cpu_is_intel_corei7 and > __builtin_cpu_is_amdfam10. > > * config/i386/i386-cpuinfo.c (__processor_model): Add new members > __cpu_is_intel_corei7 and __cpu_is_amdfam10. > (get_amd_cpu): Set __cpu_is_amdfam10. > (get_intel_cpu): Set __cpu_is_intel_corei7. > > > * gcc/config/i386/i386.c > (IX86_BUILTIN_CPU_IS_INTEL_COREI7): New enum value. > (IX86_BUILTIN_CPU_IS_AMDFAM10): New enum value. > (fold_builtin_cpu): Fold the new builtins. > (ix86_init_platform_type_builtins): Make new buitins > __builtin_cpu_is_intel_corei7 and > __builtin_cpu_is_amdfam10. > * testsuite/gcc.target/i386/builtin_target.c (fn1): > Call the new builtins. > > Index: libgcc/config/i386/i386-cpuinfo.c > =================================================================== > --- libgcc/config/i386/i386-cpuinfo.c (revision 182428) > +++ libgcc/config/i386/i386-cpuinfo.c (working copy) > @@ -55,9 +55,11 @@ struct __processor_model > /* CPU type. */ > unsigned int __cpu_is_intel_atom : 1; > unsigned int __cpu_is_intel_core2 : 1; > + unsigned int __cpu_is_intel_corei7 : 1; > unsigned int __cpu_is_intel_corei7_nehalem : 1; > unsigned int __cpu_is_intel_corei7_westmere : 1; > unsigned int __cpu_is_intel_corei7_sandybridge : 1; > + unsigned int __cpu_is_amdfam10 : 1; > unsigned int __cpu_is_amdfam10_barcelona : 1; > unsigned int __cpu_is_amdfam10_shanghai : 1; > unsigned int __cpu_is_amdfam10_istanbul : 1; > @@ -74,12 +76,15 @@ get_amd_cpu (unsigned int family, unsigned int mod > switch (model) > { > case 0x2: > + __cpu_model.__cpu_is_amdfam10 = 1; > __cpu_model.__cpu_is_amdfam10_barcelona = 1; > break; > case 0x4: > + __cpu_model.__cpu_is_amdfam10 = 1; > __cpu_model.__cpu_is_amdfam10_shanghai = 1; > break; > case 0x8: > + __cpu_model.__cpu_is_amdfam10 = 1; > __cpu_model.__cpu_is_amdfam10_istanbul = 1; > break; > default: > @@ -117,16 +122,19 @@ get_intel_cpu (unsigned int family, unsigned int m > case 0x1f: > case 0x2e: > /* Nehalem. */ > + __cpu_model.__cpu_is_intel_corei7 = 1; > __cpu_model.__cpu_is_intel_corei7_nehalem = 1; > break; > case 0x25: > case 0x2c: > case 0x2f: > /* Westmere. */ > + __cpu_model.__cpu_is_intel_corei7 = 1; > __cpu_model.__cpu_is_intel_corei7_westmere = 1; > break; > case 0x2a: > /* Sandy Bridge. */ > + __cpu_model.__cpu_is_intel_corei7 = 1; > __cpu_model.__cpu_is_intel_corei7_sandybridge = 1; > break; > case 0x17: > Index: gcc/testsuite/gcc.target/i386/builtin_target.c > =================================================================== > --- gcc/testsuite/gcc.target/i386/builtin_target.c (revision 182428) > +++ gcc/testsuite/gcc.target/i386/builtin_target.c (working copy) > @@ -31,12 +31,16 @@ fn1 () > return -1; > if (__builtin_cpu_is_intel_core2 () < 0) > return -1; > + if (__builtin_cpu_is_intel_corei7 () < 0) > + return -1; > if (__builtin_cpu_is_intel_corei7_nehalem () < 0) > return -1; > if (__builtin_cpu_is_intel_corei7_westmere () < 0) > return -1; > if (__builtin_cpu_is_intel_corei7_sandybridge () < 0) > return -1; > + if (__builtin_cpu_is_amdfam10 () < 0) > + return -1; > if (__builtin_cpu_is_amdfam10_barcelona () < 0) > return -1; > if (__builtin_cpu_is_amdfam10_shanghai () < 0) > Index: gcc/config/i386/i386.c > =================================================================== > --- gcc/config/i386/i386.c (revision 182428) > +++ gcc/config/i386/i386.c (working copy) > @@ -24500,9 +24500,11 @@ enum ix86_builtins > IX86_BUILTIN_CPU_IS_INTEL, > IX86_BUILTIN_CPU_IS_INTEL_ATOM, > IX86_BUILTIN_CPU_IS_INTEL_CORE2, > + IX86_BUILTIN_CPU_IS_INTEL_COREI7, > IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM, > IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE, > IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE, > + IX86_BUILTIN_CPU_IS_AMDFAM10, > IX86_BUILTIN_CPU_IS_AMDFAM10_BARCELONA, > IX86_BUILTIN_CPU_IS_AMDFAM10_SHANGHAI, > IX86_BUILTIN_CPU_IS_AMDFAM10_ISTANBUL, > @@ -25981,9 +25983,11 @@ fold_builtin_cpu (enum ix86_builtins fn_code) > M_INTEL, > M_INTEL_ATOM, > M_INTEL_CORE2, > + M_INTEL_COREI7, > M_INTEL_COREI7_NEHALEM, > M_INTEL_COREI7_WESTMERE, > M_INTEL_COREI7_SANDYBRIDGE, > + M_AMDFAM10, > M_AMDFAM10_BARCELONA, > M_AMDFAM10_SHANGHAI, > M_AMDFAM10_ISTANBUL, > @@ -26068,6 +26072,11 @@ fold_builtin_cpu (enum ix86_builtins fn_code) > field = get_field_from_struct (__processor_model_type, M_INTEL_CORE2); > which_struct = __cpu_model_var; > break; > + case IX86_BUILTIN_CPU_IS_INTEL_COREI7: > + field = get_field_from_struct (__processor_model_type, > + M_INTEL_COREI7); > + which_struct = __cpu_model_var; > + break; > case IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM: > field = get_field_from_struct (__processor_model_type, > M_INTEL_COREI7_NEHALEM); > @@ -26083,6 +26092,11 @@ fold_builtin_cpu (enum ix86_builtins fn_code) > M_INTEL_COREI7_SANDYBRIDGE); > which_struct = __cpu_model_var; > break; > + case IX86_BUILTIN_CPU_IS_AMDFAM10: > + field = get_field_from_struct (__processor_model_type, > + M_AMDFAM10); > + which_struct = __cpu_model_var; > + break; > case IX86_BUILTIN_CPU_IS_AMDFAM10_BARCELONA: > field = get_field_from_struct (__processor_model_type, > M_AMDFAM10_BARCELONA); > @@ -26171,12 +26185,16 @@ ix86_init_platform_type_builtins (void) > IX86_BUILTIN_CPU_IS_INTEL_CORE2, 1); > make_platform_builtin ("__builtin_cpu_is_intel", > IX86_BUILTIN_CPU_IS_INTEL, 1); > + make_platform_builtin ("__builtin_cpu_is_intel_corei7", > + IX86_BUILTIN_CPU_IS_INTEL_COREI7, 1); > make_platform_builtin ("__builtin_cpu_is_intel_corei7_nehalem", > IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM, 1); > make_platform_builtin ("__builtin_cpu_is_intel_corei7_westmere", > IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE, 1); > make_platform_builtin ("__builtin_cpu_is_intel_corei7_sandybridge", > IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE, 1); > + make_platform_builtin ("__builtin_cpu_is_amdfam10", > + IX86_BUILTIN_CPU_IS_AMDFAM10, 1); > make_platform_builtin ("__builtin_cpu_is_amdfam10_barcelona", > IX86_BUILTIN_CPU_IS_AMDFAM10_BARCELONA, 1); > make_platform_builtin ("__builtin_cpu_is_amdfam10_shanghai", > @@ -27761,9 +27779,11 @@ ix86_expand_builtin (tree exp, rtx target, rtx sub > case IX86_BUILTIN_CPU_IS_INTEL: > case IX86_BUILTIN_CPU_IS_INTEL_ATOM: > case IX86_BUILTIN_CPU_IS_INTEL_CORE2: > + case IX86_BUILTIN_CPU_IS_INTEL_COREI7: > case IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM: > case IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE: > case IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE: > + case IX86_BUILTIN_CPU_IS_AMDFAM10: > case IX86_BUILTIN_CPU_IS_AMDFAM10_BARCELONA: > case IX86_BUILTIN_CPU_IS_AMDFAM10_SHANGHAI: > case IX86_BUILTIN_CPU_IS_AMDFAM10_ISTANBUL: > > -- > This patch is available for review at http://codereview.appspot.com/5495075