Hi Yvan,
On 24/11/15 15:05, Yvan Roux wrote:
Hi Kyrill,
On 24 November 2015 at 14:31, Kyrill Tkachov <kyrylo.tkac...@arm.com> wrote:
Ping.
Thanks,
Kyrill
On 13/11/15 11:50, Kyrill Tkachov wrote:
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.
I agree, but would be interested to give a look at the LRA issue when
you have a testcase.
I've filed PR 68536 for the ICE I've been seeing. Any insight is, of course,
welcome.
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?
Patch looks good to me (but can't approved it), I just wonder if
adding a subreg_highpart_p predicate in emit-rtl.c would be useful,
looking at other usage of subreg_highpart_offset it doesn't seem to be
the case, but maybe for consistency with the existing
subreg_lowpart_p.
Perhaps, we can put it there if there's much scope for its reuse in other
parts of the compiler. I didn't put it there in the first place so as not to
extend the review scope of the patch to the midend...
Thanks for looking at this,
Kyrill
Cheers,
Yvan
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.