[RFC - ARM] - Fix PR43440 - Fix Neon inline asm register aliasing issues.
Ramana Radhakrishnan
ramana.gcc@googlemail.com
Sat Mar 20 13:07:00 GMT 2010
Hi,
This is a bug that has come up a couple of times in the past few months
and is one of the issues with writing inline assembler for Neon as
described in the audit trail.
This patch has the unhappy side effect of clobbering s0, s1 and s2
if s3 is used because that's the only way we can indicate that q0 is
clobbered by the write to s0. Unless we generate the modes for the
register in the RTL clobber list or figure out a different way of
representing this aliasing in the backend both of which I think are
slightly invasive for stage4, we'll probably have to live with this. If
anyone can think of a better and less invasive way of doing this, I'm all
ears.
I've added a testcase for this and will run this through a full
regression test on arm-eabi for cortex-a8. With some other simple
testcases that I've tried that exercises quite a bit of the code,
I haven't seen any issues show up.
Comments if any are welcome.
Cheers
Ramana
* config/arm/arm.c (TARGET_MD_ASM_CLOBBERS): Define.
(arm_get_clobbers_for_sregs): Likewise.
(arm_get_clobbers_for_dregs): Likewise.
(arm_get_clobbers_for_qregs): Likewise.
(arm_md_asm_clobbers): Likewise.
* gcc.target/arm/pr43440.c: New testcase.
--
Ramana Radhakrishnan
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pr43440-patch.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20100320/a0cfa395/attachment.txt>
More information about the Gcc-patches
mailing list