diff mbox

[AArch64,Testsuite] Check for expected MOVI vectorization.

Message ID 54B0027C.7080605@arm.com
State New
Headers show

Commit Message

Tejas Belagod Jan. 9, 2015, 4:31 p.m. UTC
Hi,

This change:

+2014-12-05 Martin Jambor mjambor@suse.cz
+

     PR ipa/64192
         ipa-prop.c (ipa_compute_jump_functions_for_edge): Convert alignment
     from bits to bytes after checking they are byte-aligned.
     +

causes this regression on AArch64.

FAIL: gcc.target/aarch64/vect-movi.c scan-assembler movi\\tv[0-9]+.4s, 
0xab, msl 16
FAIL: gcc.target/aarch64/vect-movi.c scan-assembler movi\\tv[0-9]+.4s, 
0xab, msl 8
FAIL: gcc.target/aarch64/vect-movi.c scan-assembler mvni\\tv[0-9]+.4s, 
0xab, msl 16
FAIL: gcc.target/aarch64/vect-movi.c scan-assembler mvni\\tv[0-9]+.4s, 
0xab, msl 8

It causes AArch64 vector cost model to vectorize the loops in the test 
case with a VF = 2 on A53/default and VF = 4 for A57.

A53/default:
movi v0.2s, 0xab, msl 8
str d0, [x0]
str d0, [x0, 8]
str d0, [x0, 16]
str d0, [x0, 24]
str d0, [x0, 32]
str d0, [x0, 40]
str d0, [x0, 48]
str d0, [x0, 56]

vs. A57

     movi v0.4s, 0xab, msl 8
     str q0, [x0]
     str q0, [x0, 16]
     str q0, [x0, 32]
     str q0, [x0, 48]


But the test case isn't checking for a per-core optimized code, just 
whether we vectorize for MOVI or not. So, this patch improves reg exp to 
make sure the compiler vectorizes the code for either vectorization factor.

OK for trunk?

Thanks,
Tejas.

Changelog:

gcc/testsuite:

	* gcc.target/aarch64/vect-movi.c: Check for vectorization for
	64-bit and 128-bit.

Comments

Marcus Shawcroft Jan. 13, 2015, 10:44 a.m. UTC | #1
On 9 January 2015 at 16:31, Tejas Belagod <tejas.belagod@arm.com> wrote:

> gcc/testsuite:
>
>         * gcc.target/aarch64/vect-movi.c: Check for vectorization for
>         64-bit and 128-bit.

OK /Marcus
diff mbox

Patch

diff --git a/gcc/testsuite/gcc.target/aarch64/vect-movi.c b/gcc/testsuite/gcc.target/aarch64/vect-movi.c
index 59a0bd5..d28a71d 100644
--- a/gcc/testsuite/gcc.target/aarch64/vect-movi.c
+++ b/gcc/testsuite/gcc.target/aarch64/vect-movi.c
@@ -10,7 +10,7 @@  movi_msl8 (int *__restrict a)
 {
   int i;
 
-  /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.4s, 0xab, msl 8" } } */
+  /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.\[42\]s, 0xab, msl 8" } } */
   for (i = 0; i < N; i++)
     a[i] = 0xabff;
 }
@@ -20,7 +20,7 @@  movi_msl16 (int *__restrict a)
 {
   int i;
 
-  /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.4s, 0xab, msl 16" } } */
+  /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.\[42\]s, 0xab, msl 16" } } */
   for (i = 0; i < N; i++)
     a[i] = 0xabffff;
 }
@@ -30,7 +30,7 @@  mvni_msl8 (int *__restrict a)
 {
   int i;
 
-  /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.4s, 0xab, msl 8" } } */
+  /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.\[42\]s, 0xab, msl 8" } } */
   for (i = 0; i < N; i++)
     a[i] = 0xffff5400;
 }
@@ -40,7 +40,7 @@  mvni_msl16 (int *__restrict a)
 {
   int i;
 
-  /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.4s, 0xab, msl 16" } } */
+  /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.\[42\]s, 0xab, msl 16" } } */
   for (i = 0; i < N; i++)
     a[i] = 0xff540000;
 }