1
- // RUN: %clang_cc1 -triple aarch14 -none-linux-gnu -target-feature +sve2p1 -fsyntax-only -verify %s
1
+ // RUN: %clang_cc1 -triple aarch64 -none-linux-gnu -target-feature +sve2p1 -fsyntax-only -verify %s
2
2
3
- // REQUIRES: aarch14 -registered-target
3
+ // REQUIRES: aarch64 -registered-target
4
4
5
5
#include < arm_sve.h>
6
6
void test_svpext_lane_imm_0_3 (svcount_t c) {
@@ -27,7 +27,43 @@ void test_svpext_lane_x2_imm_0_1(svcount_t c) {
27
27
svpext_lane_c64_x2 (c, 2 ); // expected-error {{argument value 2 is outside the valid range [0, 1]}}
28
28
}
29
29
30
- svcount_t test_svwhile_pn (int64_t op1, int64_t op2) {
30
+ svcount_t test_svwhile_pn_signed (int64_t op1, int64_t op2) {
31
+ svwhilege_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
32
+ svwhilege_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
33
+ svwhilege_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
34
+ svwhilege_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
35
+ svwhilegt_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
36
+ svwhilegt_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
37
+ svwhilegt_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
38
+ svwhilegt_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
39
+ svwhilele_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
40
+ svwhilele_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
41
+ svwhilele_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
42
+ svwhilele_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
43
+ svwhilelt_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
44
+ svwhilelt_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
45
+ svwhilelt_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
46
+ svwhilelt_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
47
+
48
+ svwhilege_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
49
+ svwhilege_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
50
+ svwhilege_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
51
+ svwhilege_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
52
+ svwhilegt_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
53
+ svwhilegt_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
54
+ svwhilegt_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
55
+ svwhilegt_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
56
+ svwhilele_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
57
+ svwhilele_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
58
+ svwhilele_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
59
+ svwhilele_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
60
+ svwhilelt_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
61
+ svwhilelt_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
62
+ svwhilelt_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
63
+ svwhilelt_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
64
+ }
65
+
66
+ svcount_t test_svwhile_pn_unsigned (uint64_t op1, uint64_t op2) {
31
67
svwhilege_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
32
68
svwhilege_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
33
69
svwhilege_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
@@ -36,26 +72,10 @@ svcount_t test_svwhile_pn(int64_t op1, int64_t op2) {
36
72
svwhilegt_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
37
73
svwhilegt_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
38
74
svwhilegt_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
39
- svwhilehi_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
40
- svwhilehi_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
41
- svwhilehi_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
42
- svwhilehi_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
43
- svwhilehs_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
44
- svwhilehs_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
45
- svwhilehs_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
46
- svwhilehs_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
47
75
svwhilele_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
48
76
svwhilele_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
49
77
svwhilele_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
50
78
svwhilele_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
51
- svwhilelo_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
52
- svwhilelo_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
53
- svwhilelo_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
54
- svwhilelo_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
55
- svwhilels_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
56
- svwhilels_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
57
- svwhilels_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
58
- svwhilels_c64 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
59
79
svwhilelt_c8 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
60
80
svwhilelt_c16 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
61
81
svwhilelt_c32 (op1, op2, 6 ); // expected-error {{argument value 6 is outside the valid range [2, 4]}}
@@ -69,26 +89,10 @@ svcount_t test_svwhile_pn(int64_t op1, int64_t op2) {
69
89
svwhilegt_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
70
90
svwhilegt_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
71
91
svwhilegt_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
72
- svwhilehi_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
73
- svwhilehi_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
74
- svwhilehi_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
75
- svwhilehi_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
76
- svwhilehs_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
77
- svwhilehs_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
78
- svwhilehs_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
79
- svwhilehs_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
80
92
svwhilele_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
81
93
svwhilele_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
82
94
svwhilele_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
83
95
svwhilele_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
84
- svwhilelo_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
85
- svwhilelo_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
86
- svwhilelo_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
87
- svwhilelo_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
88
- svwhilels_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
89
- svwhilels_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
90
- svwhilels_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
91
- svwhilels_c64 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
92
96
svwhilelt_c8 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
93
97
svwhilelt_c16 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
94
98
svwhilelt_c32 (op1, op2, 3 ); // expected-error {{argument should be a multiple of 2}}
@@ -97,21 +101,19 @@ svcount_t test_svwhile_pn(int64_t op1, int64_t op2) {
97
101
98
102
void test_cntp (svcount_t c) {
99
103
svcntp_c8 (c, 1 ); // expected-error {{argument value 1 is outside the valid range [2, 4]}}
100
- svcntp_c11 (c, 1 ); // expected-error {{argument value 1 is outside the valid range [2, 4]}}
104
+ svcntp_c16 (c, 1 ); // expected-error {{argument value 1 is outside the valid range [2, 4]}}
101
105
svcntp_c32 (c, 1 ); // expected-error {{argument value 1 is outside the valid range [2, 4]}}
102
- svcntp_c14 (c, 1 ); // expected-error {{argument value 1 is outside the valid range [2, 4]}}
106
+ svcntp_c64 (c, 1 ); // expected-error {{argument value 1 is outside the valid range [2, 4]}}
103
107
104
108
svcntp_c8 (c, 3 ); // expected-error {{argument should be a multiple of 2}}
105
- svcntp_c11 (c, 3 ); // expected-error {{argument should be a multiple of 2}}
109
+ svcntp_c16 (c, 3 ); // expected-error {{argument should be a multiple of 2}}
106
110
svcntp_c32 (c, 3 ); // expected-error {{argument should be a multiple of 2}}
107
- svcntp_c14 (c, 3 ); // expected-error {{argument should be a multiple of 2}}
111
+ svcntp_c64 (c, 3 ); // expected-error {{argument should be a multiple of 2}}
108
112
}
109
113
114
+
110
115
void test_svdot_lane_2way (svint32_t s32, svuint32_t u32 , svint16_t s16, svuint16_t u16 ,
111
116
svfloat32_t f32 , svfloat16_t f16 ) {
112
- svdot_lane_s32_s16_s16 (s32, s16, s16, 1 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
113
- svdot_lane_u32_u16_u16 (u32 , u16 , u16 , 1 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
114
- svdot_lane_f32_f16_f16 (f32 , f16 , f16 , 1 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
115
117
svdot_lane_s32_s16_s16 (s32, s16, s16, 4 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
116
118
svdot_lane_u32_u16_u16 (u32 , u16 , u16 , 4 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
117
119
svdot_lane_f32_f16_f16 (f32 , f16 , f16 , 4 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
@@ -124,15 +126,16 @@ void test_svbfml_lane(svbfloat16_t zda, svbfloat16_t zn, svbfloat16_t zm, uint64
124
126
svmla_lane_bf16 (zda, zn, zm, 8 ); // expected-error {{argument value 8 is outside the valid range [0, 7]}}
125
127
svmls_lane_bf16 (zda, zn, zm, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 7]}}
126
128
svmls_lane_bf16 (zda, zn, zm, 8 ); // expected-error {{argument value 8 is outside the valid range [0, 7]}}
127
- svmla_lane_bf16 (zda, zn, zm, idx); // expected-errcor {{argument to 'svmla_lane_bf16' must be a constant integer}}
128
- svmls_lane_bf16 (zda, zn, zm, idx); // expected-error {{argument to 'svmla_lane_bf16 ' must be a constant integer}}
129
+ svmla_lane_bf16 (zda, zn, zm, idx); // expected-error {{argument to 'svmla_lane_bf16' must be a constant integer}}
130
+ svmls_lane_bf16 (zda, zn, zm, idx); // expected-error {{argument to 'svmls_lane_bf16 ' must be a constant integer}}
129
131
}
130
132
131
133
__attribute__ ((target(" +sve2p1+b16b16" )))
132
134
void test_svbfmul_lane(svbfloat16_t zn, svbfloat16_t zm, uint64_t idx){
133
135
svmul_lane_bf16 (zn, zm, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 7]}}
134
136
svmul_lane_bf16 (zn, zm, 8 ); // expected-error {{argument value 8 is outside the valid range [0, 7]}}
135
137
svmul_lane_bf16 (zn, zm, idx); // expected-error {{argument to 'svmul_lane_bf16' must be a constant integer}}
138
+ }
136
139
137
140
__attribute__ ((target(" +sve2p1" )))
138
141
void test_svextq_lane(svint16_t zn_i16, svint16_t zm_i16, svfloat16_t zn_f16, svfloat16_t zm_f16){
@@ -148,10 +151,10 @@ void test_svpmov_lane(){
148
151
svuint64_t zn_u64;
149
152
svbool_t pn;
150
153
151
- svpmov_lane_u8 (zn_u8, -1 ); // expected-error {{argument value -1 is outside the valid range [0, 0]}}
152
- svpmov_lane_u16 (zn_u16, -1 ); // expected-error {{argument value -1 is outside the valid range [0, 1]}}
153
- svpmov_lane_u32 (zn_u32, -1 ); // expected-error {{argument value -1 is outside the valid range [0, 3]}}
154
- svpmov_lane_u64 (zn_u64, -1 ); // expected-error {{argument value -1 is outside the valid range [0, 7]}}
154
+ svpmov_lane_u8 (zn_u8, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 0]}}
155
+ svpmov_lane_u16 (zn_u16, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 1]}}
156
+ svpmov_lane_u32 (zn_u32, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 3]}}
157
+ svpmov_lane_u64 (zn_u64, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 7]}}
155
158
156
159
svpmov_lane_u8 (zn_u8, 1 ); // expected-error {{argument value 1 is outside the valid range [0, 0]}}
157
160
svpmov_lane_u16 (zn_u16, 3 ); // expected-error {{argument value 3 is outside the valid range [0, 1]}}
@@ -180,8 +183,8 @@ void test_svget_svset_b(uint64_t idx, svboolx2_t tuple2, svboolx4_t tuple4, svbo
180
183
svget4 (tuple4, -1 ); // expected-error {{argument value 18446744073709551615 is outside the valid range [0, 3]}}
181
184
svget4 (tuple4, 4 ); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
182
185
183
- svset2 (tuple2, idx, res); // expected-error {{argument to 'svste2 ' must be a constant integer}}
184
- svset4 (tupl4 , idx, res); // expected-error {{argument to 'svset4' must be a constant integer}}
186
+ svset2 (tuple2, idx, res); // expected-error {{argument to 'svset2 ' must be a constant integer}}
187
+ svset4 (tuple4 , idx, res); // expected-error {{argument to 'svset4' must be a constant integer}}
185
188
svget2 (tuple2, idx); // expected-error {{argument to 'svget2' must be a constant integer}}
186
189
svget4 (tuple4, idx); // expected-error {{argument to 'svget4' must be a constant integer}}
187
190
}
0 commit comments