[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Bug 113126 depends on bug 113344, which changed state. Bug 113344 Summary: [14 regression] gcc.dg/pr15784-1.c fails after r14-7139-g897b95a12b7fe5 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113344 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Hongtao Liu changed: What|Removed |Added CC||liuhongt at gcc dot gnu.org --- Comment #6 from Hongtao Liu --- > as I thought with AVX512VL we can handle this, but for V2SFmode we get > V2SImode as mask_mode. And changing the test to V4SF/V4DFmode reveals > that we don't use float-extend (I'd have to trace vector lowering and > forwprop). There might be an opportunity to improve what we do > for convertvector. Yes, it's https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107432 > > But it fixes the testcase.
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Richard Biener changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #5 from Richard Biener --- Fixed.
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 --- Comment #4 from GCC Commits --- The master branch has been updated by Richard Biener : https://gcc.gnu.org/g:897b95a12b7fe549ec2cb8ef3a3f0e4fbabf9737 commit r14-7139-g897b95a12b7fe549ec2cb8ef3a3f0e4fbabf9737 Author: Richard Biener Date: Thu Jan 11 12:02:43 2024 +0100 tree-optimization/113126 - vector extension compare optimization The following makes sure the resulting boolean type is the same when eliding a float extension. PR tree-optimization/113126 * match.pd ((double)float CMP (double)float -> float CMP float): Make sure the boolean type is the same. * fold-const.cc (fold_binary_loc): Likewise. * gcc.dg/torture/pr113126.c: New testcase.
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Richard Biener changed: What|Removed |Added CC||crazylht at gmail dot com --- Comment #3 from Richard Biener --- diff --git a/gcc/match.pd b/gcc/match.pd index 876a9d1c06e..abbd03742f9 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -6792,11 +6792,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) && exact_real_truncate (TYPE_MODE (double_type_node), )) type1 = double_type_node; } - tree newtype -= (element_precision (TREE_TYPE (@00)) > element_precision (type1) - ? TREE_TYPE (@00) : type1); + tree newtype += (element_precision (TREE_TYPE (@00)) > element_precision (type1) + ? TREE_TYPE (@00) : type1); } - (if (element_precision (TREE_TYPE (@0)) > element_precision (newtype)) + (if (element_precision (TREE_TYPE (@0)) > element_precision (newtype) + && is_truth_type_for (newtype, type)) (cmp (convert:newtype @00) (convert:newtype @10 as I thought with AVX512VL we can handle this, but for V2SFmode we get V2SImode as mask_mode. And changing the test to V4SF/V4DFmode reveals that we don't use float-extend (I'd have to trace vector lowering and forwprop). There might be an opportunity to improve what we do for convertvector. But it fixes the testcase.
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Richard Biener changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Status|NEW |ASSIGNED Priority|P3 |P1 --- Comment #2 from Richard Biener --- Mine.
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2023-12-24 Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski --- 13: h_6 = (G) f.0_1; _2 = h_6 <= h_6; _3 = VEC_COND_EXPR <_2, { -1, -1 }, { 0, 0 }>; _4 = VIEW_CONVERT_EXPR(_3); 14: _2 = f.0_1 <= f.0_1; _3 = VEC_COND_EXPR <_2, { -1, -1 }, { 0, 0 }>; _4 = VIEW_CONVERT_EXPR(_3); Funny it was introduced accident by r14-2040-g6b32400e19a702 which is there to fix a TYPE_PRECISION issue. The result of `vector(2) float` is `vector(2) ` but match messes up here ... Which means the patterns here are only valid for scalar conversions and not vector based conversions or they need to add an conversion between the resulting `vector boolean` types ...
[Bug tree-optimization/113126] [14 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:325 at -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113126 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |14.0 CC||pinskia at gcc dot gnu.org