[Bug target/95254] aarch64: gcc generate inefficient code with fixed sve vector length

2020-06-05 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95254

rsandifo at gcc dot gnu.org  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 CC||rsandifo at gcc dot gnu.org
 Status|UNCONFIRMED |RESOLVED

--- Comment #3 from rsandifo at gcc dot gnu.org  
---
Fixed.

[Bug target/95254] aarch64: gcc generate inefficient code with fixed sve vector length

2020-06-05 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95254

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Richard Sandiford :

https://gcc.gnu.org/g:9a182ef9ee011935d827ab5c6c9a7cd8e22257d8

commit r11-966-g9a182ef9ee011935d827ab5c6c9a7cd8e22257d8
Author: Fei Yang 
Date:   Fri Jun 5 10:34:59 2020 +0100

expand: Simplify removing subregs when expanding a copy [PR95254]

In rtl expand, if we have a copy that matches one of the following
patterns:
  (set (subreg:M1 (reg:M2 ...)) (subreg:M1 (reg:M2 ...)))
  (set (subreg:M1 (reg:M2 ...)) (mem:M1 ADDR))
  (set (mem:M1 ADDR) (subreg:M1 (reg:M2 ...)))
  (set (subreg:M1 (reg:M2 ...)) (constant C))
where mode M1 is equal in size to M2, try to detect whether the mode change
involves an implicit round trip through memory.  If so, see if we can avoid
that by removing the subregs and doing the move in mode M2 instead.

2020-06-05  Felix Yang  

gcc/
PR target/95254
* expr.c (emit_move_insn): Check src and dest of the copy to see
if one or both of them are subregs, try to remove the subregs when
innermode and outermode are equal in size and the mode change
involves
an implicit round trip through memory.

gcc/testsuite/
PR target/95254
* gcc.target/aarch64/pr95254.c: New test.
* gcc.target/i386/pr67609.c: Check "movq\t%xmm0" instead of
"movdqa".

[Bug target/95254] aarch64: gcc generate inefficient code with fixed sve vector length

2020-06-04 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95254

--- Comment #1 from CVS Commits  ---
The master branch has been updated by hongtao Liu :

https://gcc.gnu.org/g:43088bb4dadd3d14b6b594c5f9363fe879f3d7f7

commit r11-928-g43088bb4dadd3d14b6b594c5f9363fe879f3d7f7
Author: liuhongt 
Date:   Fri May 29 13:38:49 2020 +0800

Fix zero-masking for vcvtps2ph when dest operand is memory.

When dest is memory, zero-masking is not valid, only merging-masking is
available,

2020-06-24  Hongtao Liu  

gcc/ChangeLog:
PR target/95254
* config/i386/sse.md (*vcvtps2ph_store):
Refine from *vcvtps2ph_store.
(vcvtps2ph256): Refine constraint from vm to v.
(avx512f_vcvtps2ph512): Ditto.
(*vcvtps2ph256): New define_insn.
(*avx512f_vcvtps2ph512): Ditto.
* config/i386/subst.md (merge_mask): New define_subst.
(merge_mask_name): New define_subst_attr.
(merge_mask_operand3): Ditto.

gcc/testsuite/ChangeLog:
* gcc.target/i386/avx512f-vcvtps2ph-pr95254.c: New test.
* gcc.target/i386/avx512vl-vcvtps2ph-pr95254.c: Ditto.