* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
@ 2007-01-31 12:57 ` rguenth at gcc dot gnu dot org
2007-02-01 0:28 ` rth at gcc dot gnu dot org
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-01-31 12:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from rguenth at gcc dot gnu dot org 2007-01-31 12:57 -------
Confirmed.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2007-01-31 12:57:28
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
2007-01-31 12:57 ` [Bug target/30652] " rguenth at gcc dot gnu dot org
@ 2007-02-01 0:28 ` rth at gcc dot gnu dot org
2007-02-01 8:16 ` ubizjak at gmail dot com
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: rth at gcc dot gnu dot org @ 2007-02-01 0:28 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rth at gcc dot gnu dot org 2007-02-01 00:28 -------
The generic implementation, including for SSE, is
isgreater (abs(f), FLT_MAX)
For isfinite, use islessequal instead. For isnan, one can use
isunordered(f, f)
For isnormal, it'd be
isgreaterequal(abs(f), FLT_MIN) & islessequal(abs(f), FLT_MAX)
which is less likely to be friendly to inline.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
2007-01-31 12:57 ` [Bug target/30652] " rguenth at gcc dot gnu dot org
2007-02-01 0:28 ` rth at gcc dot gnu dot org
@ 2007-02-01 8:16 ` ubizjak at gmail dot com
2007-06-13 15:57 ` ghazi at gcc dot gnu dot org
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ubizjak at gmail dot com @ 2007-02-01 8:16 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from ubizjak at gmail dot com 2007-02-01 08:16 -------
(In reply to comment #2)
> The generic implementation, including for SSE, is
I don't think we want to be too generic there. We should not implement proposed
transformations as part of fold_builtin_classify() [builtins.c] as this would
penalize soft-float targets too much. In this case, we would trade one call to
isinf() to calls to __unorddf2 and__ledf2 plus fabs() bit-manipulation. For
isnan(), we trade the call to isnan to the call to __unorddf2.
IMO, we still need optabs here...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (2 preceding siblings ...)
2007-02-01 8:16 ` ubizjak at gmail dot com
@ 2007-06-13 15:57 ` ghazi at gcc dot gnu dot org
2007-06-16 3:44 ` ghazi at gcc dot gnu dot org
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2007-06-13 15:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from ghazi at gcc dot gnu dot org 2007-06-13 15:57 -------
(In reply to comment #2)
> The generic implementation, including for SSE, is
> isgreater (abs(f), FLT_MAX)
> For isfinite, use islessequal instead. For isnan, one can use
> isunordered(f, f)
> For isnormal, it'd be
> isgreaterequal(abs(f), FLT_MIN) & islessequal(abs(f), FLT_MAX)
> which is less likely to be friendly to inline.
I'd like to do this, but how does one generate FLT_MAX et al. from the
middle-end?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (3 preceding siblings ...)
2007-06-13 15:57 ` ghazi at gcc dot gnu dot org
@ 2007-06-16 3:44 ` ghazi at gcc dot gnu dot org
2007-07-18 17:31 ` ghazi at gcc dot gnu dot org
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2007-06-16 3:44 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from ghazi at gcc dot gnu dot org 2007-06-16 03:44 -------
(In reply to comment #2)
> The generic implementation, including for SSE, is
> isgreater (abs(f), FLT_MAX)
> For isfinite, use islessequal instead. For isnan, one can use
> isunordered(f, f)
> For isnormal, it'd be
> isgreaterequal(abs(f), FLT_MIN) & islessequal(abs(f), FLT_MAX)
> which is less likely to be friendly to inline.
Generic isinf implementation here:
http://gcc.gnu.org/ml/gcc-patches/2007-06/msg01103.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (4 preceding siblings ...)
2007-06-16 3:44 ` ghazi at gcc dot gnu dot org
@ 2007-07-18 17:31 ` ghazi at gcc dot gnu dot org
2007-07-18 17:42 ` ghazi at gcc dot gnu dot org
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2007-07-18 17:31 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from ghazi at gcc dot gnu dot org 2007-07-18 17:30 -------
Subject: Bug 30652
Author: ghazi
Date: Wed Jul 18 17:30:38 2007
New Revision: 126724
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=126724
Log:
PR target/30652
PR middle-end/20558
* builtins.c (expand_builtin_interclass_mathfn): Provide a
generic fallback for isinf.
* c-cppbuiltin.c (builtin_define_float_constants): Move FP max
calculation code ...
* real.c (get_max_float): ... to here.
* real.h (get_max_float): New.
testsuite:
* gcc.dg/pr28796-1.c: Add more cases.
* gcc.dg/pr28796-2.c: Likewise.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/builtins.c
trunk/gcc/c-cppbuiltin.c
trunk/gcc/real.c
trunk/gcc/real.h
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/pr28796-1.c
trunk/gcc/testsuite/gcc.dg/pr28796-2.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (5 preceding siblings ...)
2007-07-18 17:31 ` ghazi at gcc dot gnu dot org
@ 2007-07-18 17:42 ` ghazi at gcc dot gnu dot org
2007-07-18 17:51 ` ghazi at gcc dot gnu dot org
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2007-07-18 17:42 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from ghazi at gcc dot gnu dot org 2007-07-18 17:42 -------
Subject: Bug 30652
Author: ghazi
Date: Wed Jul 18 17:42:12 2007
New Revision: 126725
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=126725
Log:
PR target/30652
* builtins.c (expand_builtin_interclass_mathfn): Allow for missing
optabs infrastructure. Provide generic implementation for
FINITE/ISFINITE.
(expand_builtin): Handle FINITE/ISFINITE.
(fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
(fold_builtin_1): Likewise.
* builtins.def (BUILT_IN_ISFINITE): New.
* doc/extend.texi: Document isfinite.
testsuite:
* gcc.dg/pr28796-1.c: Add more cases.
* gcc.dg/pr28796-2.c: Likewise.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/builtins.c
trunk/gcc/builtins.def
trunk/gcc/doc/extend.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/pr28796-1.c
trunk/gcc/testsuite/gcc.dg/pr28796-2.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (6 preceding siblings ...)
2007-07-18 17:42 ` ghazi at gcc dot gnu dot org
@ 2007-07-18 17:51 ` ghazi at gcc dot gnu dot org
2007-07-18 18:01 ` ghazi at gcc dot gnu dot org
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2007-07-18 17:51 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from ghazi at gcc dot gnu dot org 2007-07-18 17:51 -------
Subject: Bug 30652
Author: ghazi
Date: Wed Jul 18 17:51:13 2007
New Revision: 126726
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=126726
Log:
PR target/30652
* builtins.c (expand_builtin_interclass_mathfn): Provide a generic
transformation for builtin ISNORMAL.
(expand_builtin): Handle BUILT_IN_ISNORMAL.
* builtins.def (BUILT_IN_ISNORMAL): New.
* doc/extend.texi: Document isnormal.
testsuite:
* gcc.dg/pr28796-2.c: Add more cases.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/builtins.c
trunk/gcc/builtins.def
trunk/gcc/doc/extend.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/pr28796-2.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (7 preceding siblings ...)
2007-07-18 17:51 ` ghazi at gcc dot gnu dot org
@ 2007-07-18 18:01 ` ghazi at gcc dot gnu dot org
2008-03-14 16:46 ` rguenth at gcc dot gnu dot org
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2007-07-18 18:01 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from ghazi at gcc dot gnu dot org 2007-07-18 18:00 -------
Generic implementations for isinf, isfinite and isnormal installed on trunk.
Still possibly want optabs where it is profitable.
Also, isnan doesn't allow for optabs at the moment. Should convert it into
this system.
--
ghazi at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (8 preceding siblings ...)
2007-07-18 18:01 ` ghazi at gcc dot gnu dot org
@ 2008-03-14 16:46 ` rguenth at gcc dot gnu dot org
2008-06-07 4:03 ` ghazi at gcc dot gnu dot org
2009-11-22 17:58 ` ghazi at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-03-14 16:46 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from rguenth at gcc dot gnu dot org 2008-03-14 16:45 -------
Only partly fixed.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|4.3.0 |---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (9 preceding siblings ...)
2008-03-14 16:46 ` rguenth at gcc dot gnu dot org
@ 2008-06-07 4:03 ` ghazi at gcc dot gnu dot org
2009-11-22 17:58 ` ghazi at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2008-06-07 4:03 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from ghazi at gcc dot gnu dot org 2008-06-07 04:02 -------
What remains to be done for this PR?
The generic FP classification implementations are all done, including builtin
fpclassify(). Perhaps some optabs still need to be finished? Or can we close
this one?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/30652] SSE expansion is missing for isinf() and other fpclassify functions
2007-01-31 12:39 [Bug target/30652] New: SSE expansion is missing for isinf() and other fpclassify functions ubizjak at gmail dot com
` (10 preceding siblings ...)
2008-06-07 4:03 ` ghazi at gcc dot gnu dot org
@ 2009-11-22 17:58 ` ghazi at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: ghazi at gcc dot gnu dot org @ 2009-11-22 17:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #12 from ghazi at gcc dot gnu dot org 2009-11-22 17:58 -------
What remains to be done here?
--
ghazi at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |WAITING
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30652
^ permalink raw reply [flat|nested] 13+ messages in thread