aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/s390/s390.h
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2007-03-19 08:48:36 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2007-03-19 08:48:36 +0000
commit85dae55a9a920bec8242338a8ec024b9f44b63c3 (patch)
tree5f5877f6c3bb4b4247aae8602a68280e2725d562 /gcc/config/s390/s390.h
parent3443392a8a5ec38a0e1c58689c166e025226b802 (diff)
downloadgcc-85dae55a9a920bec8242338a8ec024b9f44b63c3.zip
gcc-85dae55a9a920bec8242338a8ec024b9f44b63c3.tar.gz
gcc-85dae55a9a920bec8242338a8ec024b9f44b63c3.tar.bz2
s390.md (UNSPEC_COPYSIGN): New constant.
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com> * config/s390/s390.md (UNSPEC_COPYSIGN): New constant. (op_type attribute): RRF instruction type added. (fT0): New mode attribute. ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc", "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added. * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction no secondary memory is needed when moving DFmode values between GPRs and FPRs. From-SVN: r123056
Diffstat (limited to 'gcc/config/s390/s390.h')
-rw-r--r--gcc/config/s390/s390.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index ba7a036..fc36baf 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -51,7 +51,8 @@ enum processor_flags
PF_IEEE_FLOAT = 1,
PF_ZARCH = 2,
PF_LONG_DISPLACEMENT = 4,
- PF_EXTIMM = 8
+ PF_EXTIMM = 8,
+ PF_DFP = 16
};
extern enum processor_type s390_tune;
@@ -68,11 +69,15 @@ extern enum processor_flags s390_arch_flags;
(s390_arch_flags & PF_LONG_DISPLACEMENT)
#define TARGET_CPU_EXTIMM \
(s390_arch_flags & PF_EXTIMM)
+#define TARGET_CPU_DFP \
+ (s390_arch_flags & PF_DFP)
#define TARGET_LONG_DISPLACEMENT \
(TARGET_ZARCH && TARGET_CPU_LONG_DISPLACEMENT)
#define TARGET_EXTIMM \
(TARGET_ZARCH && TARGET_CPU_EXTIMM)
+#define TARGET_DFP \
+ (TARGET_ZARCH && TARGET_CPU_DFP)
/* Run-time target specification. */
@@ -103,9 +108,9 @@ extern enum processor_flags s390_arch_flags;
#define TARGET_IEEE_FLOAT 1
#ifdef DEFAULT_TARGET_64BIT
-#define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH | MASK_HARD_FLOAT)
+#define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH)
#else
-#define TARGET_DEFAULT MASK_HARD_FLOAT
+#define TARGET_DEFAULT 0
#endif
/* Support for configure-time defaults. */
@@ -471,7 +476,9 @@ extern const enum reg_class regclass_map[FIRST_PSEUDO_REGISTER];
/* We need secondary memory to move data between GPRs and FPRs. */
#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \
- ((CLASS1) != (CLASS2) && ((CLASS1) == FP_REGS || (CLASS2) == FP_REGS))
+ ((CLASS1) != (CLASS2) \
+ && ((CLASS1) == FP_REGS || (CLASS2) == FP_REGS) \
+ && (!TARGET_DFP || GET_MODE_SIZE (MODE) != 8))
/* Get_secondary_mem widens its argument to BITS_PER_WORD which loses on 64bit
because the movsi and movsf patterns don't handle r/f moves. */