diff options
author | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-13 17:01:01 +0000 |
---|---|---|
committer | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-13 17:01:01 +0000 |
commit | c8c701f704d853d89a6df9099dd3453d7e2a1f92 (patch) | |
tree | f44d3aa4d62f0be4f0a2a55651dd3005a909107d /gcc/config/s390 | |
parent | ee46e78f6af580650133dc9d38ba4d6ef379965d (diff) | |
download | gcc-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.h | 39 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 8 |
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" |