summaryrefslogtreecommitdiff
path: root/gcc/config/s390
diff options
context:
space:
mode:
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-13 17:01:01 +0000
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-13 17:01:01 +0000
commitc8c701f704d853d89a6df9099dd3453d7e2a1f92 (patch)
treef44d3aa4d62f0be4f0a2a55651dd3005a909107d /gcc/config/s390
parentee46e78f6af580650133dc9d38ba4d6ef379965d (diff)
downloadgcc-c8c701f704d853d89a6df9099dd3453d7e2a1f92.tar.gz
2003-10-13 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md ("*fmadddf4", "*fmsubdf4", "*fmaddsf4", "*fmsubsf4"): Insns are now dependent on TARGET_FUSED_MADD instead of flag_unsafe_math_optimizations. * config/s390/s390.h ("MASK_NO_FUSED_MADD", "TARGET_NO_FUSED_MADD", "TARGET_FUSED_MADD", "TARGET_SWITCHES"): Introduced new target flags fused-madd and no-fused-madd. * doc/invoke.texi: Documented the new options fused-madd and no-fused-madd for S/390. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72433 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390')
-rw-r--r--gcc/config/s390/s390.h39
-rw-r--r--gcc/config/s390/s390.md8
2 files changed, 26 insertions, 21 deletions
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index b3953703223..0a605505dfa 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -95,6 +95,7 @@ extern int target_flags;
#define MASK_ZARCH 0x20
#define MASK_MVCLE 0x40
#define MASK_TPF 0x80
+#define MASK_NO_FUSED_MADD 0x100
#define TARGET_HARD_FLOAT (target_flags & MASK_HARD_FLOAT)
#define TARGET_SOFT_FLOAT (!(target_flags & MASK_HARD_FLOAT))
@@ -105,6 +106,8 @@ extern int target_flags;
#define TARGET_ZARCH (target_flags & MASK_ZARCH)
#define TARGET_MVCLE (target_flags & MASK_MVCLE)
#define TARGET_TPF (target_flags & MASK_TPF)
+#define TARGET_NO_FUSED_MADD (target_flags & MASK_NO_FUSED_MADD)
+#define TARGET_FUSED_MADD (! TARGET_NO_FUSED_MADD)
/* ??? Once this actually works, it could be made a runtime option. */
#define TARGET_IBM_FLOAT 0
@@ -116,23 +119,25 @@ extern int target_flags;
#define TARGET_DEFAULT 0x3
#endif
-#define TARGET_SWITCHES \
-{ { "hard-float", 1, N_("Use hardware fp")}, \
- { "soft-float", -1, N_("Don't use hardware fp")}, \
- { "backchain", 2, N_("Set backchain")}, \
- { "no-backchain", -2, N_("Don't set backchain (faster, but debug harder")}, \
- { "small-exec", 4, N_("Use bras for executable < 64k")}, \
- { "no-small-exec",-4, N_("Don't use bras")}, \
- { "debug", 8, N_("Additional debug prints")}, \
- { "no-debug", -8, N_("Don't print additional debug prints")}, \
- { "64", 16, N_("64 bit ABI")}, \
- { "31", -16, N_("31 bit ABI")}, \
- { "zarch", 32, N_("z/Architecture")}, \
- { "esa", -32, N_("ESA/390 architecture")}, \
- { "mvcle", 64, N_("mvcle use")}, \
- { "no-mvcle", -64, N_("mvc&ex")}, \
- { "tpf", 128, N_("enable tpf OS code")}, \
- { "no-tpf", -128, N_("disable tpf OS code")}, \
+#define TARGET_SWITCHES \
+{ { "hard-float", 1, N_("Use hardware fp")}, \
+ { "soft-float", -1, N_("Don't use hardware fp")}, \
+ { "backchain", 2, N_("Set backchain")}, \
+ { "no-backchain", -2, N_("Don't set backchain (faster, but debug harder")},\
+ { "small-exec", 4, N_("Use bras for executable < 64k")}, \
+ { "no-small-exec", -4, N_("Don't use bras")}, \
+ { "debug", 8, N_("Additional debug prints")}, \
+ { "no-debug", -8, N_("Don't print additional debug prints")}, \
+ { "64", 16, N_("64 bit ABI")}, \
+ { "31", -16, N_("31 bit ABI")}, \
+ { "zarch", 32, N_("z/Architecture")}, \
+ { "esa", -32, N_("ESA/390 architecture")}, \
+ { "mvcle", 64, N_("mvcle use")}, \
+ { "no-mvcle", -64, N_("mvc&ex")}, \
+ { "tpf", 128, N_("enable tpf OS code")}, \
+ { "no-tpf", -128, N_("disable tpf OS code")}, \
+ { "no-fused-madd", 256, N_("disable fused multiply/add instructions")},\
+ { "fused-madd", -256, N_("enable fused multiply/add instructions")}, \
{ "", TARGET_DEFAULT, 0 } }
#define TARGET_OPTIONS \
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index fd92e1b4a18..aa568f85af3 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -4190,7 +4190,7 @@
(plus:DF (mult:DF (match_operand:DF 1 "register_operand" "%f,f")
(match_operand:DF 2 "nonimmediate_operand" "f,R"))
(match_operand:DF 3 "register_operand" "0,0")))]
- "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
+ "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && TARGET_FUSED_MADD"
"@
madbr\t%0,%1,%2
madb\t%0,%1,%2"
@@ -4202,7 +4202,7 @@
(minus:DF (mult:DF (match_operand:DF 1 "register_operand" "f,f")
(match_operand:DF 2 "nonimmediate_operand" "f,R"))
(match_operand:DF 3 "register_operand" "0,0")))]
- "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
+ "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && TARGET_FUSED_MADD"
"@
msdbr\t%0,%1,%2
msdb\t%0,%1,%2"
@@ -4251,7 +4251,7 @@
(plus:SF (mult:SF (match_operand:SF 1 "register_operand" "%f,f")
(match_operand:SF 2 "nonimmediate_operand" "f,R"))
(match_operand:SF 3 "register_operand" "0,0")))]
- "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
+ "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && TARGET_FUSED_MADD"
"@
maebr\t%0,%1,%2
maeb\t%0,%1,%2"
@@ -4263,7 +4263,7 @@
(minus:SF (mult:SF (match_operand:SF 1 "register_operand" "f,f")
(match_operand:SF 2 "nonimmediate_operand" "f,R"))
(match_operand:SF 3 "register_operand" "0,0")))]
- "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && flag_unsafe_math_optimizations"
+ "TARGET_HARD_FLOAT && TARGET_IEEE_FLOAT && TARGET_FUSED_MADD"
"@
msebr\t%0,%1,%2
mseb\t%0,%1,%2"