[Bug tree-optimization/89386] Generation of vectorized MULHRS (Multiply High with Round and Scale) instruction

2020-05-19 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89386

Uroš Bizjak  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED
   Target Milestone|--- |10.0

--- Comment #3 from Uroš Bizjak  ---
Fixed also for x86 targets.

[Bug tree-optimization/89386] Generation of vectorized MULHRS (Multiply High with Round and Scale) instruction

2019-09-12 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89386

--- Comment #2 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Sep 12 19:18:25 2019
New Revision: 275689

URL: https://gcc.gnu.org/viewcvs?rev=275689&root=gcc&view=rev
Log:
PR tree-optimization/89386
* config/i386/sse.md (smulhrs3): New expander.
(smulhrsv4hi3): Ditto.

testsuite/ChangeLog:

PR tree-optimization/89386
* gcc.target/i386/pr89386.c: New test.
* gcc.target/i386/pr89386-1.c: Ditto.


Added:
trunk/gcc/testsuite/gcc.target/i386/pr89386-1.c
trunk/gcc/testsuite/gcc.target/i386/pr89386.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/sse.md
trunk/gcc/testsuite/ChangeLog

[Bug tree-optimization/89386] Generation of vectorized MULHRS (Multiply High with Round and Scale) instruction

2019-09-12 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89386

--- Comment #1 from rsandifo at gcc dot gnu.org  
---
Author: rsandifo
Date: Thu Sep 12 09:59:58 2019
New Revision: 275682

URL: https://gcc.gnu.org/viewcvs?rev=275682&root=gcc&view=rev
Log:
Vectorise multiply high with scaling operations (PR 89386)

2019-09-12  Yuliang Wang  

gcc/
PR tree-optimization/89386
* config/aarch64/aarch64-sve2.md (mull)
(shrnb, shrnt): New SVE2 patterns.
(mulhs3): New pattern for MULHRS.
* config/aarch64/iterators.md (UNSPEC_SMULLB, UNSPEC_SMULLT)
(UNSPEC_UMULLB, UNSPEC_UMULLT, UNSPEC_SHRNB, UNSPEC_SHRNT)
(UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SMULHS, UNSPEC_SMULHRS)
UNSPEC_UMULHS, UNSPEC_UMULHRS): New unspecs.
(MULLBT, SHRNB, SHRNT, MULHRS): New int iterators.
(su, r): Handle the unspecs above.
(bt): New int attribute.
* internal-fn.def (IFN_MULHS, IFN_MULHRS): New internal functions.
* internal-fn.c (first_commutative_argument): Commutativity info for
above.
* optabs.def (smulhs_optab, smulhrs_optab, umulhs_optab)
(umulhrs_optab): New optabs.
* doc/md.texi (smulhs$var{m3}, umulhs$var{m3})
(smulhrs$var{m3}, umulhrs$var{m3}): Documentation for the above.
* tree-vect-patterns.c (vect_recog_mulhs_pattern): New pattern
function.
(vect_vect_recog_func_ptrs): Add it.
* testsuite/gcc.target/aarch64/sve2/mulhrs_1.c: New test.
* testsuite/gcc.dg/vect/vect-mulhrs-1.c: As above.
* testsuite/gcc.dg/vect/vect-mulhrs-2.c: As above.
* testsuite/gcc.dg/vect/vect-mulhrs-3.c: As above.
* testsuite/gcc.dg/vect/vect-mulhrs-4.c: As above.
* doc/sourcebuild.texi (vect_mulhrs_hi): Document new target selector.
* testsuite/lib/target-supports.exp
(check_effective_target_vect_mulhrs_hi): Return true for AArch64
with SVE2.

Added:
trunk/gcc/testsuite/gcc.dg/vect/vect-mulhrs-1.c
trunk/gcc/testsuite/gcc.dg/vect/vect-mulhrs-2.c
trunk/gcc/testsuite/gcc.dg/vect/vect-mulhrs-3.c
trunk/gcc/testsuite/gcc.dg/vect/vect-mulhrs-4.c
trunk/gcc/testsuite/gcc.target/aarch64/sve2/mulhrs_1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/aarch64/aarch64-sve2.md
trunk/gcc/config/aarch64/iterators.md
trunk/gcc/doc/md.texi
trunk/gcc/doc/sourcebuild.texi
trunk/gcc/internal-fn.c
trunk/gcc/internal-fn.def
trunk/gcc/optabs.def
trunk/gcc/testsuite/lib/target-supports.exp
trunk/gcc/tree-vect-patterns.c