Daily bump.
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / advsimd-intrinsics / vmlXl_high.inc
blob7c9ee26b142669c48d27aca6bd11988e948cf52d
1 #define FNNAME1(NAME) exec_ ## NAME
2 #define FNNAME(NAME) FNNAME1(NAME)
4 void FNNAME (INSN_NAME) (void)
6   /* vector_res = OP(vector, vector3, vector4),
7      then store the result.  */
8 #define TEST_VMLXL_HIGH1(INSN, T1, T2, W1, W2, N1, N2)                         \
9   VECT_VAR(vector_res, T1, W1, N1) =                                           \
10     INSN##_##T2##W2(VECT_VAR(vector, T1, W1, N1),                              \
11                     VECT_VAR(vector3, T1, W2, N2),                             \
12                     VECT_VAR(vector4, T1, W2, N2));                            \
13   vst1q_##T2##W1(VECT_VAR(result, T1, W1, N1), VECT_VAR(vector_res, T1, W1, N1))
15 #define TEST_VMLXL_HIGH(INSN, T1, T2, W1, W2, N1, N2)                          \
16   TEST_VMLXL_HIGH1(INSN, T1, T2, W1, W2, N1, N2)
18   DECL_VARIABLE(vector, int, 16, 8);
19   DECL_VARIABLE(vector3, int, 8, 16);
20   DECL_VARIABLE(vector4, int, 8, 16);
21   DECL_VARIABLE(vector_res, int, 16, 8);
23   DECL_VARIABLE(vector, int, 32, 4);
24   DECL_VARIABLE(vector3, int, 16, 8);
25   DECL_VARIABLE(vector4, int, 16, 8);
26   DECL_VARIABLE(vector_res, int, 32, 4);
28   DECL_VARIABLE(vector, int, 64, 2);
29   DECL_VARIABLE(vector3, int, 32, 4);
30   DECL_VARIABLE(vector4, int, 32, 4);
31   DECL_VARIABLE(vector_res, int, 64, 2);
33   DECL_VARIABLE(vector, uint, 16, 8);
34   DECL_VARIABLE(vector3, uint, 8, 16);
35   DECL_VARIABLE(vector4, uint, 8, 16);
36   DECL_VARIABLE(vector_res, uint, 16, 8);
38   DECL_VARIABLE(vector, uint, 32, 4);
39   DECL_VARIABLE(vector3, uint, 16, 8);
40   DECL_VARIABLE(vector4, uint, 16, 8);
41   DECL_VARIABLE(vector_res, uint, 32, 4);
43   DECL_VARIABLE(vector, uint, 64, 2);
44   DECL_VARIABLE(vector3, uint, 32, 4);
45   DECL_VARIABLE(vector4, uint, 32, 4);
46   DECL_VARIABLE(vector_res, uint, 64, 2);
48   clean_results ();
50   VLOAD(vector, buffer, q, int, s, 16, 8);
51   VLOAD(vector, buffer, q, int, s, 32, 4);
52   VLOAD(vector, buffer, q, int, s, 64, 2);
53   VLOAD(vector, buffer, q, uint, u, 16, 8);
54   VLOAD(vector, buffer, q, uint, u, 32, 4);
55   VLOAD(vector, buffer, q, uint, u, 64, 2);
57   VDUP(vector3, q, int, s, 8, 16, 0x55);
58   VDUP(vector4, q, int, s, 8, 16, 0xBB);
59   VDUP(vector3, q, int, s, 16, 8, 0x55);
60   VDUP(vector4, q, int, s, 16, 8, 0xBB);
61   VDUP(vector3, q, int, s, 32, 4, 0x55);
62   VDUP(vector4, q, int, s, 32, 4, 0xBB);
63   VDUP(vector3, q, uint, u, 8, 16, 0x55);
64   VDUP(vector4, q, uint, u, 8, 16, 0xBB);
65   VDUP(vector3, q, uint, u, 16, 8, 0x55);
66   VDUP(vector4, q, uint, u, 16, 8, 0xBB);
67   VDUP(vector3, q, uint, u, 32, 4, 0x55);
68   VDUP(vector4, q, uint, u, 32, 4, 0xBB);
70   TEST_VMLXL_HIGH(INSN_NAME, int, s, 16, 8, 8, 16);
71   TEST_VMLXL_HIGH(INSN_NAME, int, s, 32, 16, 4, 8);
72   TEST_VMLXL_HIGH(INSN_NAME, int, s, 64, 32, 2, 4);
73   TEST_VMLXL_HIGH(INSN_NAME, uint, u, 16, 8, 8, 16);
74   TEST_VMLXL_HIGH(INSN_NAME, uint, u, 32, 16, 4, 8);
75   TEST_VMLXL_HIGH(INSN_NAME, uint, u, 64, 32, 2, 4);
77   CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
78   CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
79   CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
80   CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
81   CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
82   CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
85 int main (void)
87   FNNAME (INSN_NAME) ();
88   return 0;