Ping.
https://gcc.gnu.org/ml/gcc-patches/2015-11/msg00686.html

Thanks,
Kyrill

On 06/11/15 17:05, Kyrill Tkachov wrote:
Hi all,

This patch introduces support for the smmul, smmla and smmls instructions that 
appear in armv6 architecture levels
and higher. To quote the SMMUL description from the ARMARM:
"Signed Most Significant Word Multiply multiplies two signed 32-bit values, 
extracts the most significant 32 bits of
the result, and writes those bits to the destination register."

The smmla and smmls are the multiply-accumulate and multiply-subtract 
extensions of that multiply.
There also exists an smmulr variant that rounds the result rather than 
truncating it.
However, when I tried adding patterns for those forms I got an LRA ICE that I 
was not able to figure out.
I'll try to find a testcase for that, but in the meantime there's no reason to 
not have patterns for the
non-rounding variants.

Bootstrapped and tested on arm-none-linux-gnueabihf.
I've seen this trigger in quite a few places in SPEC2006 where it always made 
the code better.

Ok for trunk?

Thanks,
Kyrill

2015-11-06  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

    PR target/49526
    * config/arm/arm.md (*mulsidi3si_v6): New pattern.
    (*mulsidi3siaddsi_v6): Likewise.
    (*mulsidi3sisubsi_v6): Likewise.
    * config/arm/predicates.md (subreg_highpart_operator):
    New predicate.

2015-11-06  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

    PR target/49526
    * gcc.target/arm/pr49526_1.c: New test.
    * gcc.target/arm/pr49526_2.c: Likewise.
    * gcc.target/arm/pr49526_3.c: Likewise.

Reply via email to