Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.target/arm/acle/cde-mve-error-3.c @ 152:2b5abeee2509
update gcc11
author | anatofuz |
---|---|
date | Mon, 25 May 2020 07:50:57 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
145:1830386684a0 | 152:2b5abeee2509 |
---|---|
1 #include "arm_cde.h" | |
2 | |
3 /* { dg-do assemble } */ | |
4 /* { dg-require-effective-target arm_v8_1m_main_cde_mve_fp_ok } */ | |
5 /* { dg-add-options arm_v8_1m_main_cde_mve_fp } */ | |
6 | |
7 uint32_t test (int8x16_t m, int8x16_t n, mve_pred16_t pred) | |
8 { | |
9 /* Bad types for polymophic arguments. */ | |
10 uint32_t accum = 0, n_int = 0, m_int = 0; | |
11 accum += __arm_vcx1qa (0, accum, 4095); | |
12 accum += __arm_vcx2q (0, n_int, 126); | |
13 accum += __arm_vcx2q_u8 (0, n_int, 127); | |
14 accum += __arm_vcx2qa (0, accum, n_int, 127); | |
15 accum += __arm_vcx3q_u8 (0, n_int, m_int, 14); | |
16 accum += __arm_vcx3q (0, n_int, m_int, 15); | |
17 accum += __arm_vcx3qa (0, accum, n_int, m_int, 15); | |
18 | |
19 /* We get a at least two errors for each function since the errors are | |
20 checked for validity in two different ways and both are caught. | |
21 The resolver manually checks that each type is 128 bits wide, and only | |
22 casts the value if that's true. | |
23 After the resolver rejects the function call then the C frontend tries to | |
24 fit the original call to the builtin. This produces a second set of | |
25 error messages from the C frontend argument checking. */ | |
26 | |
27 /* { dg-error {argument 2 to function '__builtin_arm_vcx1qav16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 11 } */ | |
28 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx1qav16qi'} "" { target *-*-* } 11 } */ | |
29 | |
30 /* { dg-error {argument 2 to function '__builtin_arm_vcx2qv16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 12 } */ | |
31 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx2qv16qi'} "" { target *-*-* } 12 } */ | |
32 | |
33 /* { dg-error {argument 2 to function '__builtin_arm_vcx2qv16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 13 } */ | |
34 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx2qv16qi'} "" { target *-*-* } 13 } */ | |
35 | |
36 /* { dg-error {argument 2 to function '__builtin_arm_vcx2qav16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 14 } */ | |
37 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx2qav16qi'} "" { target *-*-* } 14 } */ | |
38 /* { dg-error {argument 3 to function '__builtin_arm_vcx2qav16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 14 } */ | |
39 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx2qav16qi'} "" { target *-*-* } 14 } */ | |
40 | |
41 /* { dg-error {argument 2 to function '__builtin_arm_vcx3qv16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 15 } */ | |
42 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx3qv16qi'} "" { target *-*-* } 15 } */ | |
43 /* { dg-error {argument 3 to function '__builtin_arm_vcx3qv16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 15 } */ | |
44 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx3qv16qi'} "" { target *-*-* } 15 } */ | |
45 | |
46 /* { dg-error {argument 2 to function '__builtin_arm_vcx3qv16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 16 } */ | |
47 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx3qv16qi'} "" { target *-*-* } 16 } */ | |
48 /* { dg-error {argument 3 to function '__builtin_arm_vcx3qv16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 16 } */ | |
49 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx3qv16qi'} "" { target *-*-* } 16 } */ | |
50 | |
51 /* { dg-error {argument 2 to function '__builtin_arm_vcx3qav16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 17 } */ | |
52 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx3qav16qi'} "" { target *-*-* } 17 } */ | |
53 /* { dg-error {argument 3 to function '__builtin_arm_vcx3qav16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 17 } */ | |
54 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx3qav16qi'} "" { target *-*-* } 17 } */ | |
55 /* { dg-error {argument 4 to function '__builtin_arm_vcx3qav16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 17 } */ | |
56 /* { dg-error {incompatible type for argument 4 of '__builtin_arm_vcx3qav16qi'} "" { target *-*-* } 17 } */ | |
57 | |
58 accum += __arm_vcx1qa_m (0, accum, 4095, pred); | |
59 accum += __arm_vcx2q_m (0, accum, n_int, 126, pred); | |
60 accum += __arm_vcx2qa_m (0, accum, n_int, 127, pred); | |
61 accum += __arm_vcx3q_m (0, accum, n_int, m_int, 15, pred); | |
62 accum += __arm_vcx3qa_m (0, accum, n_int, m_int, 15, pred); | |
63 | |
64 /* { dg-error {argument 2 to function '__builtin_arm_vcx1qa_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 58 } */ | |
65 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx1qa_p_v16qi'} "" { target *-*-* } 58 } */ | |
66 | |
67 /* { dg-error {argument 2 to function '__builtin_arm_vcx2q_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 59 } */ | |
68 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx2q_p_v16qi'} "" { target *-*-* } 59 } */ | |
69 /* { dg-error {argument 3 to function '__builtin_arm_vcx2q_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 59 } */ | |
70 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx2q_p_v16qi'} "" { target *-*-* } 59 } */ | |
71 | |
72 /* { dg-error {argument 2 to function '__builtin_arm_vcx2qa_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 60 } */ | |
73 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx2qa_p_v16qi'} "" { target *-*-* } 60 } */ | |
74 /* { dg-error {argument 3 to function '__builtin_arm_vcx2qa_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 60 } */ | |
75 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx2qa_p_v16qi'} "" { target *-*-* } 60 } */ | |
76 | |
77 /* { dg-error {argument 2 to function '__builtin_arm_vcx3q_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 61 } */ | |
78 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx3q_p_v16qi'} "" { target *-*-* } 61 } */ | |
79 /* { dg-error {argument 3 to function '__builtin_arm_vcx3q_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 61 } */ | |
80 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx3q_p_v16qi'} "" { target *-*-* } 61 } */ | |
81 /* { dg-error {argument 4 to function '__builtin_arm_vcx3q_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 61 } */ | |
82 /* { dg-error {incompatible type for argument 4 of '__builtin_arm_vcx3q_p_v16qi'} "" { target *-*-* } 61 } */ | |
83 | |
84 /* { dg-error {argument 2 to function '__builtin_arm_vcx3qa_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 62 } */ | |
85 /* { dg-error {incompatible type for argument 2 of '__builtin_arm_vcx3qa_p_v16qi'} "" { target *-*-* } 62 } */ | |
86 /* { dg-error {argument 3 to function '__builtin_arm_vcx3qa_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 62 } */ | |
87 /* { dg-error {incompatible type for argument 3 of '__builtin_arm_vcx3qa_p_v16qi'} "" { target *-*-* } 62 } */ | |
88 /* { dg-error {argument 4 to function '__builtin_arm_vcx3qa_p_v16qi' is of type 'uint32_t' {aka '(?:long )?unsigned int'} which is not known to be 128 bits wide} "" { target *-*-* } 62 } */ | |
89 /* { dg-error {incompatible type for argument 4 of '__builtin_arm_vcx3qa_p_v16qi'} "" { target *-*-* } 62 } */ | |
90 | |
91 return accum; | |
92 } | |
93 | |
94 /* Testing that undeclared variables work as expected. | |
95 (This to verify we fixed a problem hit during development). */ | |
96 int8x16_t test3 (int8x16_t m, int8x16_t n) | |
97 { | |
98 int8x16_t accum = (int8x16_t)(uint64x2_t) { 0, 0 }; | |
99 accum += __arm_vcx1qa (0, accum_int, 4095); | |
100 accum += __arm_vcx2q (0, n_int, 126); | |
101 accum += __arm_vcx2q_u8 (0, n_int, 127); | |
102 accum += __arm_vcx2qa (0, accum, n_int, 127); | |
103 accum += __arm_vcx3q_u8 (0, n_int, m, 14); | |
104 accum += __arm_vcx3q_u8 (0, n, m_int, 14); | |
105 accum += __arm_vcx3q (0, n_int, m, 15); | |
106 accum += __arm_vcx3q (0, n, m_int, 15); | |
107 accum += __arm_vcx3qa (0, accum, n_int, m, 15); | |
108 accum += __arm_vcx3qa (0, accum, n_int, m_int, 15); | |
109 | |
110 /* { dg-error {'accum_int' undeclared \(first use in this function\)} "" { target *-*-* } 99 } */ | |
111 /* { dg-error {'n_int' undeclared \(first use in this function\)} "" { target *-*-* } 100 } */ | |
112 /* { dg-error {'m_int' undeclared \(first use in this function\)} "" { target *-*-* } 104 } */ | |
113 return accum; | |
114 } |