[AArch64] Rewrite aarch64_simd_valid_immediate
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / vect-movi.c
blob311d3dafaec73e76591abc96df50827e5bd6b94c
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\]+\.\[42\]s, 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\]+\.\[42\]s, 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\]+\.\[42\]s, 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\]+\.\[42\]s, 0xab, msl 16" } } */
44 for (i = 0; i < N; i++)
45 a[i] = 0xff540000;
48 static void
49 movi_float_lsl24 (float * a)
51 int i;
53 /* { dg-final { scan-assembler {\tmovi\tv[0-9]+\.[42]s, 0x43, lsl 24\n} } } */
54 for (i = 0; i < N; i++)
55 a[i] = 128.0;
58 int
59 main (void)
61 int a[N] = { 0 };
62 float b[N] = { 0 };
63 int i;
65 #define CHECK_ARRAY(a, val) \
66 for (i = 0; i < N; i++) \
67 if (a[i] != val) \
68 abort ();
70 movi_msl8 (a);
71 CHECK_ARRAY (a, 0xabff);
73 movi_msl16 (a);
74 CHECK_ARRAY (a, 0xabffff);
76 mvni_msl8 (a);
77 CHECK_ARRAY (a, 0xffff5400);
79 mvni_msl16 (a);
80 CHECK_ARRAY (a, 0xff540000);
82 movi_float_lsl24 (b);
83 CHECK_ARRAY (b, 128.0);
85 return 0;