* [Bug target/105965] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
@ 2022-06-14 8:23 ` crazylht at gmail dot com
2022-06-14 8:40 ` [Bug target/105965] [10/11/12/13 Regression] " rguenth at gcc dot gnu.org
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: crazylht at gmail dot com @ 2022-06-14 8:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Hongtao.liu <crazylht at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |crazylht at gmail dot com
--- Comment #1 from Hongtao.liu <crazylht at gmail dot com> ---
It looks like a regression since GCC9
typedef float v1sf __attribute__((vector_size(4)));
v1sf
foo43 (v1sf a, v1sf b, v1sf c)
{
return a * b + c;
}
gcc9 also don't generate vfmaddXXXss.
pushq %rbp
movq %rdi, %rax
movq %rsp, %rbp
andq $-32, %rsp
vmovss 24(%rbp), %xmm0
vmulss 16(%rbp), %xmm0, %xmm0
vaddss 32(%rbp), %xmm0, %xmm0
vmovss %xmm0, -64(%rsp)
movl -64(%rsp), %edx
movl %edx, (%rdi)
leave
ret
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug target/105965] [10/11/12/13 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
2022-06-14 8:23 ` [Bug target/105965] " crazylht at gmail dot com
@ 2022-06-14 8:40 ` rguenth at gcc dot gnu.org
2022-06-14 10:53 ` cvs-commit at gcc dot gnu.org
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-06-14 8:40 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Target Milestone|--- |10.4
Priority|P3 |P2
Status|UNCONFIRMED |ASSIGNED
Summary|x86: single-element vectors |[10/11/12/13 Regression]
|don't have scalar FMA insns |x86: single-element vectors
|used anymore |don't have scalar FMA insns
| |used anymore
Last reconfirmed| |2022-06-14
Ever confirmed|0 |1
Keywords| |missed-optimization
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
The widen-mul pass now sees
<bb 2> [local count: 1073741824]:
_8 = VIEW_CONVERT_EXPR<float>(a_3(D));
_9 = VIEW_CONVERT_EXPR<float>(b_4(D));
_10 = _8 * _9;
_1 = {_10};
_11 = VIEW_CONVERT_EXPR<float>(_1);
_12 = VIEW_CONVERT_EXPR<float>(c_5(D));
_13 = _11 + _12;
BIT_FIELD_REF <<retval>, 32, 0> = _13;
return <retval>;
which confuses it. The above is the result from vector lowering which
presumably
sees that V1SFmode isn't supported. In GCC 8 the above is instead
<bb 2> [local count: 1073741825]:
_8 = BIT_FIELD_REF <a_3(D), 32, 0>;
_9 = BIT_FIELD_REF <b_4(D), 32, 0>;
_10 = _8 * _9;
_11 = BIT_FIELD_REF <c_5(D), 32, 0>;
_12 = _10 + _11;
_2 = {_12};
<retval> = _2;
that means we are at least missing a match.pd pattern to simplify
_1 = {_10};
_11 = VIEW_CONVERT_EXPR<float>(_1);
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug target/105965] [10/11/12/13 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
2022-06-14 8:23 ` [Bug target/105965] " crazylht at gmail dot com
2022-06-14 8:40 ` [Bug target/105965] [10/11/12/13 Regression] " rguenth at gcc dot gnu.org
@ 2022-06-14 10:53 ` cvs-commit at gcc dot gnu.org
2022-06-14 10:53 ` [Bug target/105965] [10/11/12 " rguenth at gcc dot gnu.org
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-06-14 10:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:90467f0ad649d0817f9e034596a0fb85605b55af
commit r13-1085-g90467f0ad649d0817f9e034596a0fb85605b55af
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jun 14 10:59:49 2022 +0200
middle-end/105965 - add missing v_c_e <{ el }> simplification
When we got the simplification of bit-field-ref to view-convert
we lost the ability to detect FMAs since we cannot look through
_1 = {_10};
_11 = VIEW_CONVERT_EXPR<float>(_1);
the following amends the (view_convert CONSTRUCTOR) pattern
to handle this case.
2022-06-14 Richard Biener <rguenther@suse.de>
PR middle-end/105965
* match.pd (view_convert CONSTRUCTOR): Handle single-element
CTOR case.
* gcc.target/i386/pr105965.c: New testcase.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug target/105965] [10/11/12 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (2 preceding siblings ...)
2022-06-14 10:53 ` cvs-commit at gcc dot gnu.org
@ 2022-06-14 10:53 ` rguenth at gcc dot gnu.org
2022-06-21 1:52 ` [Bug tree-optimization/105965] " pinskia at gcc dot gnu.org
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-06-14 10:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[10/11/12/13 Regression] |[10/11/12 Regression] x86:
|x86: single-element vectors |single-element vectors
|don't have scalar FMA insns |don't have scalar FMA insns
|used anymore |used anymore
Known to work| |13.0
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed on trunk sofar.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/105965] [10/11/12 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (3 preceding siblings ...)
2022-06-14 10:53 ` [Bug target/105965] [10/11/12 " rguenth at gcc dot gnu.org
@ 2022-06-21 1:52 ` pinskia at gcc dot gnu.org
2022-06-21 6:59 ` rguenther at suse dot de
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-06-21 1:52 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|target |tree-optimization
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=101540
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #2)
> that means we are at least missing a match.pd pattern to simplify
>
> _1 = {_10};
> _11 = VIEW_CONVERT_EXPR<float>(_1);
I had an alternative patch which I had submitted in November:
https://gcc.gnu.org/pipermail/gcc-patches/2021-November/585597.html
I never followed up and such. Sorry about that.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/105965] [10/11/12 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (4 preceding siblings ...)
2022-06-21 1:52 ` [Bug tree-optimization/105965] " pinskia at gcc dot gnu.org
@ 2022-06-21 6:59 ` rguenther at suse dot de
2022-06-28 10:49 ` jakub at gcc dot gnu.org
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenther at suse dot de @ 2022-06-21 6:59 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 21 Jun 2022, pinskia at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
>
> Andrew Pinski <pinskia at gcc dot gnu.org> changed:
>
> What |Removed |Added
> ----------------------------------------------------------------------------
> Component|target |tree-optimization
> See Also| |https://gcc.gnu.org/bugzill
> | |a/show_bug.cgi?id=101540
>
> --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
> (In reply to Richard Biener from comment #2)
> > that means we are at least missing a match.pd pattern to simplify
> >
> > _1 = {_10};
> > _11 = VIEW_CONVERT_EXPR<float>(_1);
>
> I had an alternative patch which I had submitted in November:
> https://gcc.gnu.org/pipermail/gcc-patches/2021-November/585597.html
>
> I never followed up and such. Sorry about that.
Hmm, that's actually the opposite case where we want a vector type.
But sure, when we replace _1 = {_10} with _1 = V_C_E <..> (_10); then
the V_C_E series should fold away (hopefully ;))
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/105965] [10/11/12 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (5 preceding siblings ...)
2022-06-21 6:59 ` rguenther at suse dot de
@ 2022-06-28 10:49 ` jakub at gcc dot gnu.org
2022-07-19 11:38 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-06-28 10:49 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|10.4 |10.5
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 10.4 is being released, retargeting bugs to GCC 10.5.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/105965] [10/11/12 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (6 preceding siblings ...)
2022-06-28 10:49 ` jakub at gcc dot gnu.org
@ 2022-07-19 11:38 ` cvs-commit at gcc dot gnu.org
2022-07-19 11:39 ` [Bug tree-optimization/105965] [10/11 " rguenth at gcc dot gnu.org
2023-07-07 10:43 ` [Bug tree-optimization/105965] [11 " rguenth at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-07-19 11:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:1fe7321a6ce0dcb05763c8f1850a066824516342
commit r12-8578-g1fe7321a6ce0dcb05763c8f1850a066824516342
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jun 14 10:59:49 2022 +0200
middle-end/105965 - add missing v_c_e <{ el }> simplification
When we got the simplification of bit-field-ref to view-convert
we lost the ability to detect FMAs since we cannot look through
_1 = {_10};
_11 = VIEW_CONVERT_EXPR<float>(_1);
the following amends the (view_convert CONSTRUCTOR) pattern
to handle this case.
2022-06-14 Richard Biener <rguenther@suse.de>
PR middle-end/105965
* match.pd (view_convert CONSTRUCTOR): Handle single-element
CTOR case.
* gcc.target/i386/pr105965.c: New testcase.
(cherry picked from commit 90467f0ad649d0817f9e034596a0fb85605b55af)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/105965] [10/11 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (7 preceding siblings ...)
2022-07-19 11:38 ` cvs-commit at gcc dot gnu.org
@ 2022-07-19 11:39 ` rguenth at gcc dot gnu.org
2023-07-07 10:43 ` [Bug tree-optimization/105965] [11 " rguenth at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-07-19 11:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[10/11/12 Regression] x86: |[10/11 Regression] x86:
|single-element vectors |single-element vectors
|don't have scalar FMA insns |don't have scalar FMA insns
|used anymore |used anymore
Known to work| |12.1.1
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed on the GCC 12 branch as well. I'm not considering to backport further to
the more mature branches.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug tree-optimization/105965] [11 Regression] x86: single-element vectors don't have scalar FMA insns used anymore
2022-06-14 6:31 [Bug target/105965] New: x86: single-element vectors don't have scalar FMA insns used anymore jbeulich at suse dot com
` (8 preceding siblings ...)
2022-07-19 11:39 ` [Bug tree-optimization/105965] [10/11 " rguenth at gcc dot gnu.org
@ 2023-07-07 10:43 ` rguenth at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-07-07 10:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105965
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|10.5 |11.5
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 10 branch is being closed.
^ permalink raw reply [flat|nested] 11+ messages in thread