]> git.ipfire.org Git - thirdparty/gcc.git/commit
s390: Implement isfinite and isnormal optabs
authorStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Fri, 24 Jan 2025 11:53:44 +0000 (12:53 +0100)
committerStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Fri, 24 Jan 2025 11:53:44 +0000 (12:53 +0100)
commitb00bd29286345cc90afc61dcb16d1fa44976dae6
tree297785f30b1fe4c5f5e7bf80f290efd1b3a25108
parentdc1e1b38ce60cd1da781c7dcd97a36add5482a00
s390: Implement isfinite and isnormal optabs

Merge new optabs with the existing implementations for signbit and
isinf.

gcc/ChangeLog:

* config/s390/s390.h (S390_TDC_POSITIVE_ZERO): Remove.
(S390_TDC_NEGATIVE_ZERO): Remove.
(S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): Remove.
(S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): Remove.
(S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): Remove.
(S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): Remove.
(S390_TDC_POSITIVE_INFINITY): Remove.
(S390_TDC_NEGATIVE_INFINITY): Remove.
(S390_TDC_POSITIVE_QUIET_NAN): Remove.
(S390_TDC_NEGATIVE_QUIET_NAN): Remove.
(S390_TDC_POSITIVE_SIGNALING_NAN): Remove.
(S390_TDC_NEGATIVE_SIGNALING_NAN): Remove.
(S390_TDC_POSITIVE_DENORMALIZED_DFP_NUMBER): Remove.
(S390_TDC_NEGATIVE_DENORMALIZED_DFP_NUMBER): Remove.
(S390_TDC_POSITIVE_NORMALIZED_DFP_NUMBER): Remove.
(S390_TDC_NEGATIVE_NORMALIZED_DFP_NUMBER): Remove.
(S390_TDC_SIGNBIT_SET): Remove.
(S390_TDC_INFINITY): Remove.
* config/s390/s390.md (signbit<mode>2<tf_fpr>): Merge this one
(isinf<mode>2<tf_fpr>): and this one into
(<TDC_CLASS:tdc_insn><mode>2<tf_fpr>): new expander.
(isnormal<mode>2<tf_fpr>): New BFP expander.
(isnormal<mode>2): New DFP expander.
* config/s390/vector.md (signbittf2_vr): Merge this one
(isinftf2_vr): and this one into
(<tdc_insn>tf2_vr): new expander.
(signbittf2): Merge this one
(isinftf2): and this one into
(<tdc_insn>tf2): new expander.

gcc/testsuite/ChangeLog:

* gcc.target/s390/isfinite-isinf-isnormal-signbit-1.c: New test.
* gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c: New test.
* gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c: New test.
* gcc.target/s390/isfinite-isinf-isnormal-signbit.h: New test.
gcc/config/s390/s390.h
gcc/config/s390/s390.md
gcc/config/s390/vector.md
gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit.h [new file with mode: 0644]