diff options
author | Wolfgang Gellerich <gellerich@de.ibm.com> | 2008-01-22 10:03:03 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2008-01-22 10:03:03 +0000 |
commit | 0387c1429da4a44bfe71b587cce23bb76d283ab8 (patch) | |
tree | 11c74054b03e54a097715dcde596665606980ac5 | |
parent | fd1935d5e1d1db05547cbcf866e8afc26d1132f3 (diff) | |
download | gcc-0387c1429da4a44bfe71b587cce23bb76d283ab8.zip gcc-0387c1429da4a44bfe71b587cce23bb76d283ab8.tar.gz gcc-0387c1429da4a44bfe71b587cce23bb76d283ab8.tar.bz2 |
s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER): Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
2008-01-22 Wolfgang Gellerich <gellerich@de.ibm.com>
* config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
(S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
(S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
(S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
(S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
(S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
(S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
(S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
* config/s390/s390.md (FP_ALL): New mode iterator.
(_d): New mode attribute.
("*signbit<mode>2>"): Changed mode of first operand.
("isinf<mode>2"): Changed mode of first operand.
("*TDC_insn"): Adaptation for DFP modes.
From-SVN: r131714
-rw-r--r-- | gcc/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/config/s390/s390.h | 37 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 16 |
3 files changed, 53 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b241301..fe329df 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2008-01-22 Wolfgang Gellerich <gellerich@de.ibm.com> + + * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER): + Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER. + (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to + S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER. + (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to + S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER. + (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to + S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER. + (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant. + (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant. + (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant. + (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant. + * config/s390/s390.md (FP_ALL): New mode iterator. + (_d): New mode attribute. + ("*signbit<mode>2>"): Changed mode of first operand. + ("isinf<mode>2"): Changed mode of first operand. + ("*TDC_insn"): Adaptation for DFP modes. + 2008-01-22 Ben Elliston <bje@au.ibm.com> * tree.c (check_qualified_type): Improve function description. diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index 35cc947..3ce8498 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -142,22 +142,29 @@ extern enum processor_flags s390_arch_flags; #define CAN_DEBUG_WITHOUT_FP /* Constants needed to control the TEST DATA CLASS (TDC) instruction. */ -#define S390_TDC_POSITIVE_ZERO (1 << 11) -#define S390_TDC_NEGATIVE_ZERO (1 << 10) -#define S390_TDC_POSITIVE_NORMALIZED_NUMBER (1 << 9) -#define S390_TDC_NEGATIVE_NORMALIZED_NUMBER (1 << 8) -#define S390_TDC_POSITIVE_DENORMALIZED_NUMBER (1 << 7) -#define S390_TDC_NEGATIVE_DENORMALIZED_NUMBER (1 << 6) -#define S390_TDC_POSITIVE_INFINITY (1 << 5) -#define S390_TDC_NEGATIVE_INFINITY (1 << 4) -#define S390_TDC_POSITIVE_QUIET_NAN (1 << 3) -#define S390_TDC_NEGATIVE_QUIET_NAN (1 << 2) -#define S390_TDC_POSITIVE_SIGNALING_NAN (1 << 1) -#define S390_TDC_NEGATIVE_SIGNALING_NAN (1 << 0) - +#define S390_TDC_POSITIVE_ZERO (1 << 11) +#define S390_TDC_NEGATIVE_ZERO (1 << 10) +#define S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER (1 << 9) +#define S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER (1 << 8) +#define S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER (1 << 7) +#define S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER (1 << 6) +#define S390_TDC_POSITIVE_INFINITY (1 << 5) +#define S390_TDC_NEGATIVE_INFINITY (1 << 4) +#define S390_TDC_POSITIVE_QUIET_NAN (1 << 3) +#define S390_TDC_NEGATIVE_QUIET_NAN (1 << 2) +#define S390_TDC_POSITIVE_SIGNALING_NAN (1 << 1) +#define S390_TDC_NEGATIVE_SIGNALING_NAN (1 << 0) + +/* The following values are different for DFP. */ +#define S390_TDC_POSITIVE_DENORMALIZED_DFP_NUMBER (1 << 9) +#define S390_TDC_NEGATIVE_DENORMALIZED_DFP_NUMBER (1 << 8) +#define S390_TDC_POSITIVE_NORMALIZED_DFP_NUMBER (1 << 7) +#define S390_TDC_NEGATIVE_NORMALIZED_DFP_NUMBER (1 << 6) + +/* For signbit, the BFP-DFP-difference makes no difference. */ #define S390_TDC_SIGNBIT_SET (S390_TDC_NEGATIVE_ZERO \ - | S390_TDC_NEGATIVE_NORMALIZED_NUMBER \ - | S390_TDC_NEGATIVE_DENORMALIZED_NUMBER\ + | S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER \ + | S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER\ | S390_TDC_NEGATIVE_INFINITY \ | S390_TDC_NEGATIVE_QUIET_NAN \ | S390_TDC_NEGATIVE_SIGNALING_NAN ) diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 670ae13..5ffa728 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -251,6 +251,8 @@ ;; These mode iterators allow floating point patterns to be generated from the ;; same template. +(define_mode_iterator FP_ALL [TF DF SF (TD "TARGET_HARD_DFP") (DD "TARGET_HARD_DFP") + (SD "TARGET_HARD_DFP")]) (define_mode_iterator FP [TF DF SF (TD "TARGET_HARD_DFP") (DD "TARGET_HARD_DFP")]) (define_mode_iterator BFP [TF DF SF]) (define_mode_iterator DFP [TD DD]) @@ -346,6 +348,10 @@ ;; within instruction mnemonics. (define_mode_attr bt [(TF "b") (DF "b") (SF "b") (TD "t") (DD "t") (SD "t")]) +;; This attribute is used within instruction mnemonics. It evaluates to d for dfp +;; modes and to an empty string for bfp modes. +(define_mode_attr _d [(TF "") (DF "") (SF "") (TD "d") (DD "d") (SD "d")]) + ;; Although it is imprecise for z9-ec we handle all dfp instructions like ;; bfp regarding the pipeline description. (define_mode_attr bfp [(TF "tf") (DF "df") (SF "sf") @@ -2310,7 +2316,7 @@ (define_expand "signbit<mode>2" [(set (reg:CCZ CC_REGNUM) - (unspec:CCZ [(match_operand:BFP 1 "register_operand" "f") + (unspec:CCZ [(match_operand:FP_ALL 1 "register_operand" "f") (match_dup 2)] UNSPEC_TDC_INSN)) (set (match_operand:SI 0 "register_operand" "=d") @@ -2322,7 +2328,7 @@ (define_expand "isinf<mode>2" [(set (reg:CCZ CC_REGNUM) - (unspec:CCZ [(match_operand:BFP 1 "register_operand" "f") + (unspec:CCZ [(match_operand:FP_ALL 1 "register_operand" "f") (match_dup 2)] UNSPEC_TDC_INSN)) (set (match_operand:SI 0 "register_operand" "=d") @@ -2339,12 +2345,12 @@ ; (define_insn "*TDC_insn_<mode>" [(set (reg:CCZ CC_REGNUM) - (unspec:CCZ [(match_operand:BFP 0 "register_operand" "f") + (unspec:CCZ [(match_operand:FP_ALL 0 "register_operand" "f") (match_operand:SI 1 "const_int_operand")] UNSPEC_TDC_INSN))] "TARGET_HARD_FLOAT" - "tc<xde>b\t%0,%1" + "t<_d>c<xde><bt>\t%0,%1" [(set_attr "op_type" "RXE") - (set_attr "type" "fsimp<mode>")]) + (set_attr "type" "fsimp<bfp>")]) (define_insn_and_split "*ccz_to_int" [(set (match_operand:SI 0 "register_operand" "=d") |