This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tue, Jul 5, 2011 at 8:16 AM, Uros Bizjak <ubizjak@gmail.com> wrote: > On Tue, Jul 5, 2011 at 4:39 PM, H.J. Lu <hongjiu.lu@intel.com> wrote: > >> I'd like to start submitting a series of patches to enable x32: >> >> https://sites.google.com/site/x32abi/ >> >> The GCC x32 branch is very stable. There are no unexpected failures in >> C, C++, Fortran and Objective C testsuites. ?SPEC CPU 2K/2006 compile >> and run correctly at -O2 and -O3. >> >> More than 90% of changes are in x86 backend. ?I have submitted non-x86 >> backend patches. ?Most of them have been reviewed and checked in. ?Only >> 4 patches are pending for review/approval. >> >> This is the first x86 backend patch to support x32. ?By default, x32 is >> disabled and x32 run-time support isn't required. ?OK for trunk? > > Please strip out --enable-ia32 stuff, it complicates things ATM. ?I > assume that --enable-x32 applies only to 64bit targets, so this part Done. >> @@ -1232,7 +1232,17 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i >> ? ? ? ? ? ? ? ?if test x$enable_targets = xall; then >> ? ? ? ? ? ? ? ? ? ? ? ?tm_file="${tm_file} i386/x86-64.h i386/gnu-user64.h i386/linux64.h" >> ? ? ? ? ? ? ? ? ? ? ? ?tm_defines="${tm_defines} TARGET_BI_ARCH=1" >> - ? ? ? ? ? ? ? ? ? ? ? tmake_file="${tmake_file} i386/t-linux64" >> + ? ? ? ? ? ? ? ? ? ? ? case x${enable_x32}${enable_ia32} in >> + ? ? ? ? ? ? ? ? ? ? ? xyesyes) >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tmake_file="${tmake_file} i386/t-linux-x32" >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;; >> + ? ? ? ? ? ? ? ? ? ? ? xyesno) >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tmake_file="${tmake_file} i386/t-linux64-x32" >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;; >> + ? ? ? ? ? ? ? ? ? ? ? *) >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tmake_file="${tmake_file} i386/t-linux64" >> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;; >> + ? ? ? ? ? ? ? ? ? ? ? esac > > should be simplified to something: > > if (enable_x32) > ?tmake_file = "... i386/t-linux64-x32" > else > ?tmake_file = "... i386/t-linux64" Done. > > >> diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h >> index b069975..954f3b2 100644 >> --- a/gcc/config/i386/gnu-user64.h >> +++ b/gcc/config/i386/gnu-user64.h >> @@ -58,25 +58,31 @@ see the files COPYING3 and COPYING.RUNTIME respectively. ?If not, see >> >> ?#if TARGET_64BIT_DEFAULT >> ?#define SPEC_32 "m32" >> -#define SPEC_64 "!m32" >> +#define SPEC_64 "m32|mx32:;" >> +#define SPEC_X32 "mx32" >> ?#else >> -#define SPEC_32 "!m64" >> +#define SPEC_32 "m64|mx32:;" >> ?#define SPEC_64 "m64" >> +#define SPEC_X32 "mx32" >> ?#endif >> >> ?#undef ASM_SPEC >> -#define ASM_SPEC "%{" SPEC_32 ":--32} %{" SPEC_64 ":--64} \ >> +#define ASM_SPEC "%{" SPEC_32 ":--32} \ >> + %{" SPEC_64 ":--64} \ >> + %{" SPEC_X32 ":--x32} \ >> ?%{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" > > Are you sure that above is correct? AFAICS, you are enabling SPEC_64 > for m32 in case of TARGET_64BIT_DEFAULT. I have #define SPEC_64 "m32|mx32:;" There are ":;". This is similar to "if then else". SPEC_64 will be false if -m32 or -mx32 is used. >> ?/* SSE4.1 defines round instructions */ >> ?#define ? ? ? ?OPTION_MASK_ISA_ROUND ? OPTION_MASK_ISA_SSE4_1 >> @@ -517,8 +519,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); >> ?#define OPT_ARCH64 "!m32" >> ?#define OPT_ARCH32 "m32" >> ?#else >> -#define OPT_ARCH64 "m64" >> -#define OPT_ARCH32 "!m64" >> +#define OPT_ARCH64 "m64|mx32" >> +#define OPT_ARCH32 "m64|mx32:;" >> ?#endif > > Same here. > See above. Here is the updated patch. OK for trunk? Thanks. -- H.J. --- 2011-07-05 H.J. Lu <hongjiu.lu@intel.com> * config.gcc: Support --enable-x32 for x86 Linux targets. * configure.ac: Support --enable-x32. * configure: Regenerated. * config/i386/gnu-user64.h (SPEC_64): Support x32. (SPEC_32): Likewise. (ASM_SPEC): Likewise. (LINK_SPEC): Likewise. (TARGET_THREAD_SSP_OFFSET): Likewise. (TARGET_THREAD_SPLIT_STACK_OFFSET): Likewise. (SPEC_X32): New. * config/i386/i386.h (TARGET_X32): New. (TARGET_LP64): New. (LONG_TYPE_SIZE): Likewise. (POINTER_SIZE): Likewise. (POINTERS_EXTEND_UNSIGNED): Likewise. (OPT_ARCH64): Support x32. (OPT_ARCH32): Likewise. * config/i386/i386.opt (mx32): New. * config/i386/kfreebsd-gnu64.h (GNU_USER_LINK_EMULATIONX32): New. (GLIBC_DYNAMIC_LINKERX32): Likewise. * config/i386/linux64.h (GNU_USER_LINK_EMULATIONX32): Likewise. (GLIBC_DYNAMIC_LINKERX32): Likewise. * config/i386/t-linux-x32: New. * config/linux.h (UCLIBC_DYNAMIC_LINKERX32): New. (BIONIC_DYNAMIC_LINKERX32): Likewise. (GNU_USER_DYNAMIC_LINKERX32): Likewise. * doc/install.texi: Document --enable-x32. * doc/invoke.texi: Document -mx32.
Attachment:
gcc-x32-3.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |