Message ID | 55715776.30707@linaro.org |
---|---|
State | New |
Headers | show |
Hi Kugan, On 05/06/15 09:01, Kugan wrote: > Hi All, > > After my patch for cprop is committed > (https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=224048), > neon-reload-class.c is failing in arm mode. But this is kind of expected > behaviour so I looked at the original patch related to > neon-reload-class.c, which is: > https://gcc.gnu.org/ml/gcc-patches/2011-04/msg01968.html > > As I understand, it was added to make sure that these constants are not > created as constant pool. from that point of view it looks like we > should remove the check for movw/movt. > > I also checked the asm generated before the constant split for arm > (https://gcc.gnu.org/viewcvs?rev=223235&root=gcc&view=rev) just to be > sure that this is not due to the earlier patch. Reason for this is that > the constant generation has changed compared to what was shown in > https://gcc.gnu.org/ml/gcc-patches/2011-04/msg01968.html. > > > I am also attaching the three versions of the neon-reload-class.s. > > 1. neon-reload-class_before_arm_split.s - before r223235 > 2. neon-reload-class_before_cprop.s - before r224048 > 3. neon-reload-class_new.s - after 224048 > > Is this OK for trunk? I see that the new code is better and it is indeed still not loading the immediates from memory, which is what the test tests for. So as long as scanning for \\.d?word is enough to catch the presence of a constant pool this should be ok. Kyrill > > Thanks, > Kugan > > gcc/testsuite/ChangeLog: > > 2015-06-05 Kugan Vivekanandarajah <kuganv@linaro.org> > > * gcc.target/arm/neon-reload-class.c: Remove movw and movt. > >
diff --git a/gcc/testsuite/gcc.target/arm/neon-reload-class.c b/gcc/testsuite/gcc.target/arm/neon-reload-class.c index c63aa04..48950f7 100644 --- a/gcc/testsuite/gcc.target/arm/neon-reload-class.c +++ b/gcc/testsuite/gcc.target/arm/neon-reload-class.c @@ -15,4 +15,4 @@ _op_blend_p_caa_dp(unsigned *s, unsigned* e, unsigned *d, unsigned c) { /* These constants should be emitted as immediates rather than loaded from memory. */ -/* { dg-final { scan-assembler-not "(\\.d?word|mov(w|t))" } } */ +/* { dg-final { scan-assembler-not "(\\.d?word)" } } */