RE: [PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-20 Thread Ian Bolton
> From: Marcus Shawcroft [mailto:marcus.shawcr...@gmail.com]
> Sent: 19 May 2014 11:45
> To: Ian Bolton
> Cc: gcc-patches
> Subject: Re: [PATCH, AArch64] Fix macro in vdup_lane_2 test case
> 
> On 8 May 2014 18:41, Ian Bolton  wrote:
> 
> > gcc/testsuite
> > * gcc.target/aarch64/vdup_lane_2.c (force_simd): Emit an
> > actual instruction to move into the allocated register.
> 
> This macro is attempting to force a value to a particular class of
> register, we don't need or want the mov instruction at all.  Isn't
> something like this sufficient:
> 
> #define force_simd(V1)   asm volatile (""   \
>   : "+w"(V1)\
>   : \
>   : /* No clobbers */)
> 
> ?
> 
> /Marcus

Thanks for the review, Marcus.  I did not think of that and it
looks sane, but your suggested approach leads to some of the dup
instructions being optimised away.  Ordinarily, that would be great
but these test cases are trying to force the dups to occur.

Cheers,
Ian










Re: [PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-19 Thread Marcus Shawcroft
On 8 May 2014 18:41, Ian Bolton  wrote:

> gcc/testsuite
> * gcc.target/aarch64/vdup_lane_2.c (force_simd): Emit an
> actual instruction to move into the allocated register.

This macro is attempting to force a value to a particular class of
register, we don't need or want the mov instruction at all.  Isn't
something like this sufficient:

#define force_simd(V1)   asm volatile (""   \
  : "+w"(V1)\
  : \
  : /* No clobbers */)

?

/Marcus


RE: [PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-16 Thread Ian Bolton
Ping.  This may well be classed as "obvious", but that's not
obvious to me, so I request a review.  Many thanks.

> -Original Message-
> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
> ow...@gcc.gnu.org] On Behalf Of Ian Bolton
> Sent: 08 May 2014 18:42
> To: gcc-patches
> Subject: [PATCH, AArch64] Fix macro in vdup_lane_2 test case
> 
> This patch fixes a defective macro definition, based on correct
> definition in similar testcases.  The test currently passes
> through luck rather than correctness.
> 
> OK for commit?
> 
> Cheers,
> Ian
> 
> 
> 2014-05-08  Ian Bolton  
> 
> gcc/testsuite
>   * gcc.target/aarch64/vdup_lane_2.c (force_simd): Emit an
>   actual instruction to move into the allocated register.





[PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-08 Thread Ian Bolton
This patch fixes a defective macro definition, based on correct
definition in similar testcases.  The test currently passes
through luck rather than correctness.

OK for commit?

Cheers,
Ian


2014-05-08  Ian Bolton  

gcc/testsuite
* gcc.target/aarch64/vdup_lane_2.c (force_simd): Emit an
actual instruction to move into the allocated register.diff --git a/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c 
b/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
index 7c04e75..2072c79 100644
--- a/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
@@ -4,10 +4,11 @@
 
 #include 
 
-#define force_simd(V1)   asm volatile (""  \
-  : "=w"(V1)   \
-  : "w"(V1)\
-  : /* No clobbers */)
+/* Used to force a variable to a SIMD register.  */
+#define force_simd(V1)   asm volatile ("orr %0.16b, %1.16b, %1.16b"\
+  : "=w"(V1)   \
+  : "w"(V1)\
+  : /* No clobbers */);
 
 extern void abort (void);