[Bug tree-optimization/71307] [7 Regression] Code quality regression with lane extraction arm_neon.h intrinsics on aarch64

2016-11-29 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71307

--- Comment #4 from ktkachov at gcc dot gnu.org ---
Hmm, I distinctly remember it being a regression but when I try today with the
branches they all generate the bad code

[Bug tree-optimization/71307] [7 Regression] Code quality regression with lane extraction arm_neon.h intrinsics on aarch64

2016-11-29 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71307

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek  ---
Are you sure this is a regression?
At least with a cross-compiler (from x86_64-linux), I'm getting:
umovx0, v1.d[1]
fmovd0, x0
out of gcc 6.2.1 20161122 and 5.x as well.

[Bug tree-optimization/71307] [7 Regression] Code quality regression with lane extraction arm_neon.h intrinsics on aarch64

2016-06-25 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71307

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-06-26
 Ever confirmed|0   |1

--- Comment #2 from Andrew Pinski  ---
Confirmed.

[Bug tree-optimization/71307] [7 Regression] Code quality regression with lane extraction arm_neon.h intrinsics on aarch64

2016-05-27 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71307

--- Comment #1 from Richard Biener  ---
If the BIT_FIELD_REF covers the whole object then it should be simplified to
a VIEW_CONVERT.  There is "related" simplification in match.pd:

(simplify
 (BIT_FIELD_REF @0 @1 @2)
 (switch
  (if (TREE_CODE (TREE_TYPE (@0)) == COMPLEX_TYPE
   && tree_int_cst_equal (@1, TYPE_SIZE (TREE_TYPE (TREE_TYPE (@0)
   (switch
(if (integer_zerop (@2))
 (view_convert (realpart @0)))
(if (tree_int_cst_equal (@2, TYPE_SIZE (TREE_TYPE (TREE_TYPE (@0)
 (view_convert (imagpart @0)
  (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
   && INTEGRAL_TYPE_P (type)
   /* On GIMPLE this should only apply to register arguments.  */
   && (! GIMPLE || is_gimple_reg (@0))
   /* A bit-field-ref that referenced the full argument can be stripped. 
*/
   && ((compare_tree_int (@1, TYPE_PRECISION (TREE_TYPE (@0))) == 0
&& integer_zerop (@2))
...
   (convert @0

but restricted to integral types as we use convert and not view_convert.

Other than that, BIT_FIELD_REF expansion might simply miss a trick.

[Bug tree-optimization/71307] [7 Regression] Code quality regression with lane extraction arm_neon.h intrinsics on aarch64

2016-05-27 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71307

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||6.1.0
   Target Milestone|--- |7.0
  Known to fail||7.0