i386.h (MASK_64BIT): New constant.
authorJan Hubicka <jh@suse.cz>
Fri, 9 Mar 2001 16:40:43 +0000 (17:40 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 9 Mar 2001 16:40:43 +0000 (16:40 +0000)
* i386.h (MASK_64BIT): New constant.
(TARGET_64BIT): New macro.
(TARGET_OPTIONS): Add '64'/'32'
(TARGET_DEFAULT): Define.
* cygwin.h freebsd-aout.h i386-interix.h i386.h i386elf.h isc.h isccoff.h
netbsd.h next.h openbsd.h p sco.h sco5.h scodbx.h sequent.h unix.h win32.h
(TARGET_DEFAULT): Rename to TARGET_SUBTARGET_DEFAULT.

From-SVN: r40345

16 files changed:
gcc/ChangeLog
gcc/config/i386/cygwin.h
gcc/config/i386/freebsd-aout.h
gcc/config/i386/i386-interix.h
gcc/config/i386/i386.h
gcc/config/i386/i386elf.h
gcc/config/i386/isc.h
gcc/config/i386/netbsd.h
gcc/config/i386/next.h
gcc/config/i386/openbsd.h
gcc/config/i386/sco.h
gcc/config/i386/sco5.h
gcc/config/i386/scodbx.h
gcc/config/i386/sequent.h
gcc/config/i386/unix.h
gcc/config/i386/win32.h

index 6b17ad5d0801cceff6930bbfe7f7f4d0c7c89ab8..0d3a530b08b77be78ff52094de328978555a33bd 100644 (file)
@@ -1,3 +1,13 @@
+Fri Mar  9 17:38:08 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * i386.h (mask_64bit): New constant.
+       (target_64bit): New macro.
+       (target_options): Add '64'/'32'
+       (target_default): Define.
+       * cygwin.h freebsd-aout.h i386-interix.h i386.h i386elf.h isc.h
+       isccoff.h netbsd.h next.h openbsd.h p sco.h sco5.h scodbx.h sequent.h
+       unix.h win32.h (TARGET_DEFAULT): Rename to TARGET_SUBTARGET_DEFAULT.
+
 Thu Mar  8 23:36:56 2001  Jeffrey A Law  (law@cygnus.com)
 
        * config/pa/som.h (MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Disable.
index e2d765fa8610ee1ee4d4c246fda53f1bfa261c57..3dc30354bdee34b0ff2f798d3e91caab5a743f7c 100644 (file)
@@ -391,9 +391,9 @@ do {                                                        \
 
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    and returns float values in the 387 and needs stack probes */
-#undef TARGET_DEFAULT
+#undef TARGET_SUBTARGET_DEFAULT
 
-#define TARGET_DEFAULT \
+#define TARGET_SUBTARGET_DEFAULT \
    (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE) 
 
 /* This is how to output an assembler line
index ef63b1c9b2de09b62af4e53794e67b2ecd2902bd..0a86ac2a56e0e825ae4a6bba54e4e8794c5482a7 100644 (file)
@@ -30,8 +30,8 @@ Boston, MA 02111-1307, USA.  */
 #include "i386/gstabs.h"
 
 /* This goes away when the math-emulator is fixed */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT \
   (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
 
 #undef CPP_PREDEFINES
index f5e9ea58ec283ca4ad7fa9a0bcce16296bc3509c..aa452453e6ab6fc56c3f7ecd8b8e29a9ae1d0b78 100644 (file)
@@ -40,8 +40,8 @@ Boston, MA 02111-1307, USA.  */
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    and returns float values in the 387 and needs stack probes
    We also align doubles to 64-bits for MSVC default compatability */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT \
    (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE | \
     MASK_ALIGN_DOUBLE)
 
index 31c7a8e2ff6e8bee0a57bd1c38c3f3726260b9b3..9da78c72b2748a385e4610ffd830a4fba52f7e99 100644 (file)
@@ -119,6 +119,7 @@ extern int target_flags;
 #define MASK_SSE2              0x00040000      /* Support SSE2 regs/builtins */
 #define MASK_128BIT_LONG_DOUBLE 0x00080000     /* long double size is 128bit */
 #define MASK_MIX_SSE_I387      0x00100000      /* Mix SSE and i387 instructions */
+#define MASK_64BIT             0x00200000      /* Produce 64bit code */
 
 /* Temporary codegen switches */
 #define MASK_INTEL_SYNTAX      0x00000200
@@ -178,6 +179,9 @@ extern int target_flags;
 /* Debug FUNCTION_ARG macros */
 #define TARGET_DEBUG_ARG (target_flags & MASK_DEBUG_ARG)
 
+/* 64bit Sledgehammer mode */
+#define TARGET_64BIT (target_flags & MASK_64BIT)
+
 #define TARGET_386 (ix86_cpu == PROCESSOR_I386)
 #define TARGET_486 (ix86_cpu == PROCESSOR_I486)
 #define TARGET_PENTIUM (ix86_cpu == PROCESSOR_PENTIUM)
@@ -330,9 +334,19 @@ extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall;
     N_("sizeof(long double) is 16.") },                                              \
   { "96bit-long-double",       -MASK_128BIT_LONG_DOUBLE,                     \
     N_("sizeof(long double) is 12.") },                                              \
+  { "64",                      MASK_64BIT,                                   \
+    N_("Generate 64bit x86-64 code") },                                              \
+  { "32",                      -MASK_64BIT,                                  \
+    N_("Generate 32bit i386 code") },                                        \
   SUBTARGET_SWITCHES                                                         \
   { "", TARGET_DEFAULT, 0 }}
 
+#ifdef TARGET_64BIT_DEFAULT
+#define TARGET_DEFAULT (MASK_64BIT | TARGET_SUBTARGET_DEFAULT)
+#else
+#define TARGET_DEFAULT TARGET_SUBTARGET_DEFAULT
+#endif
+
 /* Which processor to schedule for. The cpu attribute defines a list that
    mirrors this list, so changes to i386.md must be made at the same time.  */
 
index d333551f2b83e3c2b313cab26cec46e4e9216387..904446aeee9ffb64b3dc6b3a43c4297a924c5cbe 100644 (file)
@@ -29,7 +29,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    and returns float values in the 387.  */
 
-#define TARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
 
 /* The ELF ABI for the i386 says that records and unions are returned
    in memory.  */
index 6c1c4c7271804ab25152b584b49a6f6d23dc8b79..c07aa066495d3c46a8f24a6cae96c7f588210af7 100644 (file)
@@ -58,8 +58,8 @@
    opcode.  fucomp is only used when generating IEEE compliant code.
    So don't make TARGET_IEEE_FP default for ISC. */
 
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
 
 /* The ISC 2.0.2 software FPU emulator apparently can't handle
    80-bit XFmode insns, so don't generate them.  */
index 51f656119564dc75063583b7aa7639fb88d4c6b5..3b5bf9c3e9d9ecc8d7941e21851d1919dcb1d05f 100644 (file)
@@ -10,8 +10,8 @@
 #include <netbsd.h>
 
 /* This goes away when the math-emulator is fixed */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT \
   (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
 
 #undef CPP_PREDEFINES
index a37429115fad95b3d5fabe000b81e0140e91f7a1..0638dffa1733d1c13d7a312862139abb0f148f1a 100644 (file)
@@ -23,8 +23,8 @@ Boston, MA 02111-1307, USA.  */
 
 /* By default, target has a 80387, with IEEE FP.  */
 
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT  (MASK_80387 | MASK_IEEE_FP)
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT  (MASK_80387 | MASK_IEEE_FP)
 
 /* Implicit library calls should use memcpy, not bcopy, etc.  */
 
index c8d0a65e29df21142257346a3587e23a87929225..b24a94cdc1999cac2d6f47c242634a298fa44a73 100644 (file)
@@ -31,8 +31,8 @@ Boston, MA 02111-1307, USA.  */
 #include <openbsd.h>
 
 /* This goes away when the math-emulator is fixed */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT \
   (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387)
 
 /* Run-time target specifications */
index f7c366e672a3791d218aabb8eb6745e267769d39..9a397ed8c1e1905394c3ba70fa8fc1a9ad666c70 100644 (file)
@@ -31,8 +31,8 @@ Boston, MA 02111-1307, USA.  */
    opcode.  fucomp is only used when generating IEEE compliant code.
    So don't make TARGET_IEEE_FP default for SCO. */
 
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
 
 /* Let's guess that the SCO software FPU emulator can't handle
    80-bit XFmode insns, so don't generate them.  */
index ae832b91f5f5167c3b71828b5ee5c238ee178aee..039b26a80fd564f2bc0fcfd6ee0ff104da271390 100644 (file)
@@ -708,8 +708,8 @@ dtors_section ()                                                    \
   && strcmp (STR, "Tdata") && strcmp (STR, "Ttext")                    \
   && strcmp (STR, "Tbss"))
 
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
 
 #undef HANDLE_SYSV_PRAGMA
 #define HANDLE_SYSV_PRAGMA 1
index 3804950c5f8978c2f0a801274fb5a767750fc5ab..17bbfe95f81d26f4ca73ef5aec9fd90e0b7f60ca 100644 (file)
@@ -31,8 +31,8 @@ Boston, MA 02111-1307, USA.  */
    opcode.  fucomp is only used when generating IEEE compliant code.
    So don't make TARGET_IEEE_FP default for SCO. */
 
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
 
 /* Use crt1.o as a startup file and crtn.o as a closing file.  */
 
index 09254b02057d10f97696d53b2aa544e0f63fbb8b..c8ba852a9a10e0fe6388034d292beec55b40662d 100644 (file)
@@ -28,8 +28,8 @@ Boston, MA 02111-1307, USA.  */
    because the assembler can't handle the fucom insn.
    Return float values in the 387.  */
 
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
+#undef TARGET_SUBTARGET_DEFAULT
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
 
 /* Specify predefined symbols in preprocessor.  */
 
index 939b7167da81e2ef018638c5765ef84185c0bcd7..508d4c89ecead6bb8db83532b62f6515766c27cc 100644 (file)
@@ -67,7 +67,7 @@ Boston, MA 02111-1307, USA.  */
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    and returns float values in the 387.  */
 
-#define TARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
+#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
 
 /* Floating-point return values come in the FP register.  */
 
index 519a1380cf797c143b118834ec74af04372d5530..36707f040fffa270b3d4720d87cc5628006342b7 100644 (file)
@@ -214,9 +214,9 @@ do {                                                                        \
 
 /* By default, target has a 80387, uses IEEE compatible arithmetic,
    and returns float values in the 387 and needs stack probes */
-#undef TARGET_DEFAULT
+#undef TARGET_SUBTARGET_DEFAULT
 
-#define TARGET_DEFAULT \
+#define TARGET_SUBTARGET_DEFAULT \
    (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE) 
 
 /* This is how to output an assembler line