2014-04-15 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / vect-movi.c
blob59a0bd5cc54045e2c0641f591b7ea2a7adf46076
1 /* { dg-do run } */
2 /* { dg-options "-O3 --save-temps -fno-inline" } */
4 extern void abort (void);
6 #define N 16
8 static void
9 movi_msl8 (int *__restrict a)
11 int i;
13 /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.4s, 0xab, msl 8" } } */
14 for (i = 0; i < N; i++)
15 a[i] = 0xabff;
18 static void
19 movi_msl16 (int *__restrict a)
21 int i;
23 /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\.4s, 0xab, msl 16" } } */
24 for (i = 0; i < N; i++)
25 a[i] = 0xabffff;
28 static void
29 mvni_msl8 (int *__restrict a)
31 int i;
33 /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.4s, 0xab, msl 8" } } */
34 for (i = 0; i < N; i++)
35 a[i] = 0xffff5400;
38 static void
39 mvni_msl16 (int *__restrict a)
41 int i;
43 /* { dg-final { scan-assembler "mvni\\tv\[0-9\]+\.4s, 0xab, msl 16" } } */
44 for (i = 0; i < N; i++)
45 a[i] = 0xff540000;
48 int
49 main (void)
51 int a[N] = { 0 };
52 int i;
54 #define CHECK_ARRAY(a, val) \
55 for (i = 0; i < N; i++) \
56 if (a[i] != val) \
57 abort ();
59 movi_msl8 (a);
60 CHECK_ARRAY (a, 0xabff);
62 movi_msl16 (a);
63 CHECK_ARRAY (a, 0xabffff);
65 mvni_msl8 (a);
66 CHECK_ARRAY (a, 0xffff5400);
68 mvni_msl16 (a);
69 CHECK_ARRAY (a, 0xff540000);
71 return 0;
74 /* { dg-final { cleanup-saved-temps } } */