* [Bug target/109502] [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
@ 2023-04-14 1:56 ` pinskia at gcc dot gnu.org
2023-04-14 2:03 ` [Bug tree-optimization/109502] " pinskia at gcc dot gnu.org
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-04-14 1:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |12.3
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
2023-04-14 1:56 ` [Bug target/109502] " pinskia at gcc dot gnu.org
@ 2023-04-14 2:03 ` pinskia at gcc dot gnu.org
2023-04-14 2:04 ` pinskia at gcc dot gnu.org
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-04-14 2:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|target |tree-optimization
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2023-04-14
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
SLP transforms:
g.0_1 = g;
_2 = g.0_1 == 0;
a_7 = (unsigned int) _2;
_3 = a_7 % 6;
_4 = _3 == 0;
_5 = (unsigned int) _4;
a_8 = _5 + a_7;
To:
g.0_1 = g;
_2 = g.0_1 == 0;
a_7 = (unsigned int) _2;
_3 = a_7 % 6;
_15 = {_3, g.0_1};
mask__4.4_16 = { 0, 0 } == _15;
vect__5.5_19 = VIEW_CONVERT_EXPR<vector(2) unsigned int>(mask__4.4_16);
_17 = BIT_FIELD_REF <mask__4.4_16, 32, 0>;
_18 = (bool) _17;
_4 = _3 == 0;
_5 = (unsigned int) _18;
_20 = .REDUC_PLUS (vect__5.5_19);
a_8 = _20;
Which is wrong. The if anything there is a missing - missing after the
reduc_plus (or before) when it translates the bools comparisons into vector
comparisons.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
2023-04-14 1:56 ` [Bug target/109502] " pinskia at gcc dot gnu.org
2023-04-14 2:03 ` [Bug tree-optimization/109502] " pinskia at gcc dot gnu.org
@ 2023-04-14 2:04 ` pinskia at gcc dot gnu.org
2023-04-14 7:28 ` rguenth at gcc dot gnu.org
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-04-14 2:04 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #1)
> SLP transforms:
>
> g.0_1 = g;
> _2 = g.0_1 == 0;
> a_7 = (unsigned int) _2;
> _3 = a_7 % 6;
> _4 = _3 == 0;
> _5 = (unsigned int) _4;
> a_8 = _5 + a_7;
>
> To:
>
> g.0_1 = g;
> _2 = g.0_1 == 0;
> a_7 = (unsigned int) _2;
> _3 = a_7 % 6;
> _15 = {_3, g.0_1};
> mask__4.4_16 = { 0, 0 } == _15;
> vect__5.5_19 = VIEW_CONVERT_EXPR<vector(2) unsigned int>(mask__4.4_16);
> _17 = BIT_FIELD_REF <mask__4.4_16, 32, 0>;
> _18 = (bool) _17;
> _4 = _3 == 0;
> _5 = (unsigned int) _18;
> _20 = .REDUC_PLUS (vect__5.5_19);
> a_8 = _20;
>
If anything there is a missing, a negative after the
reduc_plus (or before) when it translates the bools comparisons into vector
comparisons.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (2 preceding siblings ...)
2023-04-14 2:04 ` pinskia at gcc dot gnu.org
@ 2023-04-14 7:28 ` rguenth at gcc dot gnu.org
2023-04-14 7:53 ` rguenth at gcc dot gnu.org
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-04-14 7:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #2)
> (In reply to Andrew Pinski from comment #1)
> > SLP transforms:
> >
> > g.0_1 = g;
> > _2 = g.0_1 == 0;
> > a_7 = (unsigned int) _2;
> > _3 = a_7 % 6;
> > _4 = _3 == 0;
> > _5 = (unsigned int) _4;
> > a_8 = _5 + a_7;
> >
> > To:
> >
> > g.0_1 = g;
> > _2 = g.0_1 == 0;
> > a_7 = (unsigned int) _2;
> > _3 = a_7 % 6;
> > _15 = {_3, g.0_1};
> > mask__4.4_16 = { 0, 0 } == _15;
> > vect__5.5_19 = VIEW_CONVERT_EXPR<vector(2) unsigned int>(mask__4.4_16);
> > _17 = BIT_FIELD_REF <mask__4.4_16, 32, 0>;
> > _18 = (bool) _17;
> > _4 = _3 == 0;
> > _5 = (unsigned int) _18;
> > _20 = .REDUC_PLUS (vect__5.5_19);
> > a_8 = _20;
> >
>
> If anything there is a missing, a negative after the
> reduc_plus (or before) when it translates the bools comparisons into vector
> comparisons.
Indeed. Usually this is the failure of bool pattern detection.
unsigned foo (unsigned *p)
{
unsigned tem1 = p[0] == 0;
unsigned tem2 = p[1] == 0;
unsigned tem3 = p[2] == 0;
unsigned tem4 = p[3] == 0;
return tem1 + tem2 + tem3 + tem4;
}
doesn't reproduce it - we have put in defences "after the fact" to work
around this for some cases:
t.c:7:29: note: ==> examining statement: tem4_16 = (unsigned int) _8;
t.c:7:29: note: vect_is_simple_use: operand _7 == 0, type of def: internal
t.c:7:29: missed: type conversion to/from bit-precision unsupported.
t.c:7:29: note: vect_is_simple_use: operand _7 == 0, type of def: internal
t.c:7:29: missed: mixed mask and nonmask vector types
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (3 preceding siblings ...)
2023-04-14 7:28 ` rguenth at gcc dot gnu.org
@ 2023-04-14 7:53 ` rguenth at gcc dot gnu.org
2023-04-14 9:46 ` cvs-commit at gcc dot gnu.org
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-04-14 7:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
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
Status|NEW |ASSIGNED
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Simple omission.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (4 preceding siblings ...)
2023-04-14 7:53 ` rguenth at gcc dot gnu.org
@ 2023-04-14 9:46 ` cvs-commit at gcc dot gnu.org
2023-04-14 9:46 ` [Bug tree-optimization/109502] [12 " rguenth at gcc dot gnu.org
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-14 9:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
--- Comment #5 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:bf24f2db2841b97bc5e86bf9294d61eef32f83b3
commit r13-7180-gbf24f2db2841b97bc5e86bf9294d61eef32f83b3
Author: Richard Biener <rguenther@suse.de>
Date: Fri Apr 14 09:55:27 2023 +0200
tree-optimization/109502 - vector conversion between mask and non-mask
The following fixes a check that should have rejected vectorizing
a conversion between a mask and non-mask type. Those should be
done via pattern statements.
PR tree-optimization/109502
* tree-vect-stmts.cc (vectorizable_assignment): Fix
check for conversion between mask and non-mask types.
* gcc.dg/vect/pr109502.c: New testcase.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (5 preceding siblings ...)
2023-04-14 9:46 ` cvs-commit at gcc dot gnu.org
@ 2023-04-14 9:46 ` rguenth at gcc dot gnu.org
2023-04-17 9:15 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-04-14 9:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[12/13 Regression] wrong |[12 Regression] wrong code
|code with -O |with -O -ftree-vectorize
|-ftree-vectorize |-fvect-cost-model=unlimited
|-fvect-cost-model=unlimited |on aarch64
|on aarch64 |
Priority|P3 |P2
Known to fail|13.0 |
Known to work| |13.0
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Should be fixed on trunk. Is probably latent on older branches as well.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [12 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (6 preceding siblings ...)
2023-04-14 9:46 ` [Bug tree-optimization/109502] [12 " rguenth at gcc dot gnu.org
@ 2023-04-17 9:15 ` cvs-commit at gcc dot gnu.org
2023-04-17 9:21 ` [Bug tree-optimization/109502] [11 " rguenth at gcc dot gnu.org
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-17 9:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
--- Comment #7 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:08605396d164c57eb3c80051001b86b96da0405c
commit r12-9414-g08605396d164c57eb3c80051001b86b96da0405c
Author: Richard Biener <rguenther@suse.de>
Date: Fri Apr 14 09:55:27 2023 +0200
tree-optimization/109502 - vector conversion between mask and non-mask
The following fixes a check that should have rejected vectorizing
a conversion between a mask and non-mask type. Those should be
done via pattern statements.
PR tree-optimization/109502
* tree-vect-stmts.cc (vectorizable_assignment): Fix
check for conversion between mask and non-mask types.
* gcc.dg/vect/pr109502.c: New testcase.
(cherry picked from commit bf24f2db2841b97bc5e86bf9294d61eef32f83b3)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [11 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (7 preceding siblings ...)
2023-04-17 9:15 ` cvs-commit at gcc dot gnu.org
@ 2023-04-17 9:21 ` rguenth at gcc dot gnu.org
2023-05-02 12:03 ` cvs-commit at gcc dot gnu.org
2023-05-02 12:06 ` rguenth at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-04-17 9:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|12.3 |11.4
Known to work| |12.2.1
Summary|[12 Regression] wrong code |[11 Regression] wrong code
|with -O -ftree-vectorize |with -O -ftree-vectorize
|-fvect-cost-model=unlimited |-fvect-cost-model=unlimited
|on aarch64 |on aarch64
Known to fail|12.2.1 |12.2.0
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Also picks to 11.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [11 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (8 preceding siblings ...)
2023-04-17 9:21 ` [Bug tree-optimization/109502] [11 " rguenth at gcc dot gnu.org
@ 2023-05-02 12:03 ` cvs-commit at gcc dot gnu.org
2023-05-02 12:06 ` rguenth at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-05-02 12:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
--- Comment #9 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:7fc59677f7a9a2bff75e0002fef303a41a9ebe9d
commit r11-10677-g7fc59677f7a9a2bff75e0002fef303a41a9ebe9d
Author: Richard Biener <rguenther@suse.de>
Date: Fri Apr 14 09:55:27 2023 +0200
tree-optimization/109502 - vector conversion between mask and non-mask
The following fixes a check that should have rejected vectorizing
a conversion between a mask and non-mask type. Those should be
done via pattern statements.
PR tree-optimization/109502
* tree-vect-stmts.c (vectorizable_assignment): Fix
check for conversion between mask and non-mask types.
* gcc.dg/vect/pr109502.c: New testcase.
(cherry picked from commit bf24f2db2841b97bc5e86bf9294d61eef32f83b3)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug tree-optimization/109502] [11 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64
2023-04-13 16:05 [Bug target/109502] New: [12/13 Regression] wrong code with -O -ftree-vectorize -fvect-cost-model=unlimited on aarch64 zsojka at seznam dot cz
` (9 preceding siblings ...)
2023-05-02 12:03 ` cvs-commit at gcc dot gnu.org
@ 2023-05-02 12:06 ` rguenth at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-05-02 12:06 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109502
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
Known to fail| |11.3.0
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 12+ messages in thread