summaryrefslogtreecommitdiff
path: root/gcc/config/ns32k/ns32k.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-16 17:46:33 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-07-16 17:46:33 +0000
commitee92ab068263c20421f3b3b131a02673eeb66394 (patch)
treef60acf9138da7523b7e4dd25eeabcaa082026b6b /gcc/config/ns32k/ns32k.h
parent9fd73f310177bb1a205a61e48eb1da2ef461455c (diff)
downloadgcc-ee92ab068263c20421f3b3b131a02673eeb66394.tar.gz
* doc/invoke.texi (NS32K Options): Document -mieee-compare option
* config/ns32k/ns32k.md (addsi3, *frame_addr, *stack_addr): merge into addsi3 using register class "x" and "y". * config/ns32k/ns32k.md (*madddf, *maddsf, *msubdf, *msubsf): "earlyclobber" constraint modifier for some alternative. * config/ns32k/ns32k.md (tstdf, tstsf, cmpdf, cmpsf, blt, ble) (*ble, *blt): Flag to indicate bCOND and sCOND should check for unordered. config/ns32k/ns32k.h (CC_UNORD): define corresponding mask. * config/ns32k/ns32k.h (TARGET_IEEE_COMPARE, MASK_IEEE_COMPARE) (TARGET_SWITCHES): Add -mieee-compare option. (OVERRIDE_OPTIONS): 32332 is a subset of 32532. Don't use IEEE_COMPARE -funsafe-math-optimizations. (TARGET_SWITCHES): Fix description of bitfield option. * config/ns32k/netbsd.h (TARGET_DEFAULT): Add -mieee-compare option. Remove 32332 flag. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55489 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/ns32k/ns32k.h')
-rw-r--r--gcc/config/ns32k/ns32k.h38
1 files changed, 27 insertions, 11 deletions
diff --git a/gcc/config/ns32k/ns32k.h b/gcc/config/ns32k/ns32k.h
index f75f60d9cd0..21abff08430 100644
--- a/gcc/config/ns32k/ns32k.h
+++ b/gcc/config/ns32k/ns32k.h
@@ -82,6 +82,7 @@ Boston, MA 02111-1307, USA. */
extern int target_flags;
+/* Masks for target_flags */
#define MASK_32081 1
#define MASK_RTD 2
#define MASK_REGPARM 4
@@ -93,6 +94,7 @@ extern int target_flags;
#define MASK_32381 256
#define MASK_MULT_ADD 512
#define MASK_SRC 1024
+#define MASK_IEEE_COMPARE 2048
/* Macros used in the machine description to test the flags. */
@@ -121,17 +123,19 @@ extern int target_flags;
/* Ok to use the static base register (and presume it's 0) */
#define TARGET_SB ((target_flags & MASK_NO_SB) == 0)
+
#define TARGET_HIMEM (target_flags & MASK_HIMEM)
/* Compile using bitfield insns. */
#define TARGET_BITFIELD ((target_flags & MASK_NO_BITFIELD) == 0)
+#define TARGET_IEEE_FP (target_flags & MASK_IEEE_COMPARE)
+
/* Macro to define tables used to set the flags.
This is a list in braces of pairs in braces,
each pair being { "NAME", VALUE }
where VALUE is the bits to set or minus the bits to clear.
An empty string NAME is used to identify the default VALUE. */
-
#define TARGET_SWITCHES \
{ { "32081", MASK_32081, N_("Use hardware fp")}, \
{ "soft-float", -(MASK_32081|MASK_32381), \
@@ -148,17 +152,21 @@ extern int target_flags;
N_("Register sb is zero. Use for absolute addressing")}, \
{ "nosb", MASK_NO_SB, N_("Do not use register sb")}, \
{ "bitfield", -MASK_NO_BITFIELD, \
+ N_("Use bit-field instructions")}, \
+ { "nobitfield", MASK_NO_BITFIELD, \
N_("Do not use bit-field instructions")}, \
- { "nobitfield", MASK_NO_BITFIELD, N_("Use bit-field instructions")},\
{ "himem", MASK_HIMEM, N_("Generate code for high memory")}, \
{ "nohimem", -MASK_HIMEM, N_("Generate code for low memory")}, \
{ "32381", MASK_32381, N_("32381 fpu")}, \
{ "mult-add", MASK_MULT_ADD, \
N_("Use multiply-accumulate fp instructions")}, \
{ "nomult-add", -MASK_MULT_ADD, \
- N_("Do not use multiply-accumulate fp instructions") }, \
+ N_("Do not use multiply-accumulate fp instructions") }, \
{ "src", MASK_SRC, N_("\"Small register classes\" kludge")}, \
{ "nosrc", -MASK_SRC, N_("No \"Small register classes\" kludge")}, \
+ { "ieee-compare", MASK_IEEE_COMPARE, N_("Use IEEE math for fp comparisons")}, \
+ { "noieee-compare", -MASK_IEEE_COMPARE, \
+ N_("Do not use IEEE math for fp comparisons")}, \
{ "", TARGET_DEFAULT, 0}}
/* TARGET_DEFAULT is defined in encore.h, pc532.h, etc. */
@@ -166,14 +174,18 @@ extern int target_flags;
/* When we are generating PIC, the sb is used as a pointer
to the GOT. 32381 is a superset of 32081 */
-#define OVERRIDE_OPTIONS \
-{ \
- if (flag_pic || TARGET_HIMEM) \
- target_flags |= MASK_NO_SB; \
- if (TARGET_32381) \
- target_flags |= MASK_32081; \
- else \
- target_flags &= ~MASK_MULT_ADD; \
+#define OVERRIDE_OPTIONS \
+{ \
+ if (target_flags & MASK_32532) \
+ target_flags |= MASK_32332; \
+ if (flag_pic || TARGET_HIMEM) \
+ target_flags |= MASK_NO_SB; \
+ if (TARGET_32381) \
+ target_flags |= MASK_32081; \
+ else \
+ target_flags &= ~MASK_MULT_ADD; \
+ if (flag_unsafe_math_optimizations) \
+ target_flags &= ~MASK_IEEE_COMPARE; \
}
/* Zero or more C statements that may conditionally modify two
@@ -1180,6 +1192,10 @@ __transfer_from_trampoline () \
is complemented in the F bit. */
#define CC_Z_IN_NOT_F 010000
+/* This bit means that the L bit indicates unordered (IEEE) comparison.
+ */
+#define CC_UNORD 020000
+
/* Store in cc_status the expressions
that the condition codes will describe
after execution of an instruction whose pattern is EXP.