brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.4 KiB · 1def72f Raw
543 lines · c
1// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon  -ffreestanding -fsyntax-only -verify %s2 3#include <arm_neon.h>4// REQUIRES: aarch64-registered-target5 6// Widening left-shifts should have a range of 0..(sizeinbits(arg)-1), this range has had7// to be weakened to 0..((sizeinbits(arg)*2)-1) due to a use of vshll_n_s16 with an8// out-of-bounds immediate in the defintiion of vcvt_f32_bf16. As a result, the upper bounds9// of widening left-shift intrinsics are not currently tested here.10 11void test_vector_shift_left_s8(int8x8_t arg_i8x8, int8x16_t arg_i8x16) {12	vshl_n_s8(arg_i8x8, 0);13	vshl_n_s8(arg_i8x8, 7);14	vshl_n_s8(arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}15	vshl_n_s8(arg_i8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}16 17	vshlq_n_s8(arg_i8x16, 0);18	vshlq_n_s8(arg_i8x16, 7);19	vshlq_n_s8(arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}20	vshlq_n_s8(arg_i8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}21 22}23 24void test_vector_shift_left_s16(int16x4_t arg_i16x4, int16x8_t arg_i16x8) {25	vshl_n_s16(arg_i16x4, 0);26	vshl_n_s16(arg_i16x4, 15);27	vshl_n_s16(arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}28	vshl_n_s16(arg_i16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}29 30	vshlq_n_s16(arg_i16x8, 0);31	vshlq_n_s16(arg_i16x8, 15);32	vshlq_n_s16(arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}33	vshlq_n_s16(arg_i16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}34 35}36 37void test_vector_shift_left_s32(int32x2_t arg_i32x2, int32x4_t arg_i32x4) {38	vshl_n_s32(arg_i32x2, 0);39	vshl_n_s32(arg_i32x2, 31);40	vshl_n_s32(arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}41	vshl_n_s32(arg_i32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}42 43	vshlq_n_s32(arg_i32x4, 0);44	vshlq_n_s32(arg_i32x4, 31);45	vshlq_n_s32(arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}46	vshlq_n_s32(arg_i32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}47 48}49 50void test_vector_shift_left_s64(int64_t arg_i64, int64x2_t arg_i64x2, int64x1_t arg_i64x1) {51	vshl_n_s64(arg_i64x1, 0);52	vshl_n_s64(arg_i64x1, 63);53	vshl_n_s64(arg_i64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}54	vshl_n_s64(arg_i64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}55 56	vshlq_n_s64(arg_i64x2, 0);57	vshlq_n_s64(arg_i64x2, 63);58	vshlq_n_s64(arg_i64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}59	vshlq_n_s64(arg_i64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}60 61	vshld_n_s64(arg_i64, 0);62	vshld_n_s64(arg_i64, 63);63	vshld_n_s64(arg_i64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}64	vshld_n_s64(arg_i64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}65 66}67 68void test_vector_shift_left_u8(uint8x8_t arg_u8x8, uint8x16_t arg_u8x16) {69	vshl_n_u8(arg_u8x8, 0);70	vshl_n_u8(arg_u8x8, 7);71	vshl_n_u8(arg_u8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}72	vshl_n_u8(arg_u8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}73 74	vshlq_n_u8(arg_u8x16, 0);75	vshlq_n_u8(arg_u8x16, 7);76	vshlq_n_u8(arg_u8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}77	vshlq_n_u8(arg_u8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}78 79}80 81void test_vector_shift_left_u16(uint16x4_t arg_u16x4, uint16x8_t arg_u16x8) {82	vshl_n_u16(arg_u16x4, 0);83	vshl_n_u16(arg_u16x4, 15);84	vshl_n_u16(arg_u16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}85	vshl_n_u16(arg_u16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}86 87	vshlq_n_u16(arg_u16x8, 0);88	vshlq_n_u16(arg_u16x8, 15);89	vshlq_n_u16(arg_u16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}90	vshlq_n_u16(arg_u16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}91 92}93 94void test_vector_shift_left_u32(uint32x2_t arg_u32x2, uint32x4_t arg_u32x4) {95	vshl_n_u32(arg_u32x2, 0);96	vshl_n_u32(arg_u32x2, 31);97	vshl_n_u32(arg_u32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}98	vshl_n_u32(arg_u32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}99 100	vshlq_n_u32(arg_u32x4, 0);101	vshlq_n_u32(arg_u32x4, 31);102	vshlq_n_u32(arg_u32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}103	vshlq_n_u32(arg_u32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}104 105}106 107void test_vector_shift_left_u64(uint64x1_t arg_u64x1, uint64_t arg_u64, uint64x2_t arg_u64x2) {108	vshl_n_u64(arg_u64x1, 0);109	vshl_n_u64(arg_u64x1, 63);110	vshl_n_u64(arg_u64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}111	vshl_n_u64(arg_u64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}112 113	vshlq_n_u64(arg_u64x2, 0);114	vshlq_n_u64(arg_u64x2, 63);115	vshlq_n_u64(arg_u64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}116	vshlq_n_u64(arg_u64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}117 118	vshld_n_u64(arg_u64, 0);119	vshld_n_u64(arg_u64, 63);120	vshld_n_u64(arg_u64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}121	vshld_n_u64(arg_u64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}122 123}124 125void test_vector_saturating_shift_left_s8(int8x8_t arg_i8x8, int8x16_t arg_i8x16, int8_t arg_i8) {126	vqshl_n_s8(arg_i8x8, 0);127	vqshl_n_s8(arg_i8x8, 7);128	vqshl_n_s8(arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}129	vqshl_n_s8(arg_i8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}130 131	vqshlq_n_s8(arg_i8x16, 0);132	vqshlq_n_s8(arg_i8x16, 7);133	vqshlq_n_s8(arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}134	vqshlq_n_s8(arg_i8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}135 136	vqshlb_n_s8(arg_i8, 0);137	vqshlb_n_s8(arg_i8, 7);138	vqshlb_n_s8(arg_i8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}139	vqshlb_n_s8(arg_i8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}140 141	vqshlu_n_s8(arg_i8x8, 0);142	vqshlu_n_s8(arg_i8x8, 7);143	vqshlu_n_s8(arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}144	vqshlu_n_s8(arg_i8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}145 146	vqshluq_n_s8(arg_i8x16, 0);147	vqshluq_n_s8(arg_i8x16, 7);148	vqshluq_n_s8(arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}149	vqshluq_n_s8(arg_i8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}150 151	vqshlub_n_s8(arg_i8, 0);152	vqshlub_n_s8(arg_i8, 7);153	vqshlub_n_s8(arg_i8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}154	vqshlub_n_s8(arg_i8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}155 156}157 158void test_vector_saturating_shift_left_s16(int16x4_t arg_i16x4, int16_t arg_i16, int16x8_t arg_i16x8) {159	vqshl_n_s16(arg_i16x4, 0);160	vqshl_n_s16(arg_i16x4, 15);161	vqshl_n_s16(arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}162	vqshl_n_s16(arg_i16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}163 164	vqshlq_n_s16(arg_i16x8, 0);165	vqshlq_n_s16(arg_i16x8, 15);166	vqshlq_n_s16(arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}167	vqshlq_n_s16(arg_i16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}168 169	vqshlh_n_s16(arg_i16, 0);170	vqshlh_n_s16(arg_i16, 15);171	vqshlh_n_s16(arg_i16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}172	vqshlh_n_s16(arg_i16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}173 174	vqshlu_n_s16(arg_i16x4, 0);175	vqshlu_n_s16(arg_i16x4, 15);176	vqshlu_n_s16(arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}177	vqshlu_n_s16(arg_i16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}178 179	vqshluq_n_s16(arg_i16x8, 0);180	vqshluq_n_s16(arg_i16x8, 15);181	vqshluq_n_s16(arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}182	vqshluq_n_s16(arg_i16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}183 184	vqshluh_n_s16(arg_i16, 0);185	vqshluh_n_s16(arg_i16, 15);186	vqshluh_n_s16(arg_i16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}187	vqshluh_n_s16(arg_i16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}188 189}190 191void test_vector_saturating_shift_left_s32(int32x2_t arg_i32x2, int32_t arg_i32, int32x4_t arg_i32x4) {192	vqshl_n_s32(arg_i32x2, 0);193	vqshl_n_s32(arg_i32x2, 31);194	vqshl_n_s32(arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}195	vqshl_n_s32(arg_i32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}196 197	vqshlq_n_s32(arg_i32x4, 0);198	vqshlq_n_s32(arg_i32x4, 31);199	vqshlq_n_s32(arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}200	vqshlq_n_s32(arg_i32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}201 202	vqshls_n_s32(arg_i32, 0);203	vqshls_n_s32(arg_i32, 31);204	vqshls_n_s32(arg_i32, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}205	vqshls_n_s32(arg_i32, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}206 207	vqshlu_n_s32(arg_i32x2, 0);208	vqshlu_n_s32(arg_i32x2, 31);209	vqshlu_n_s32(arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}210	vqshlu_n_s32(arg_i32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}211 212	vqshluq_n_s32(arg_i32x4, 0);213	vqshluq_n_s32(arg_i32x4, 31);214	vqshluq_n_s32(arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}215	vqshluq_n_s32(arg_i32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}216 217	vqshlus_n_s32(arg_i32, 0);218	vqshlus_n_s32(arg_i32, 31);219	vqshlus_n_s32(arg_i32, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}220	vqshlus_n_s32(arg_i32, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}221 222}223 224void test_vector_saturating_shift_left_s64(int64_t arg_i64, int64x2_t arg_i64x2, int64x1_t arg_i64x1) {225	vqshl_n_s64(arg_i64x1, 0);226	vqshl_n_s64(arg_i64x1, 63);227	vqshl_n_s64(arg_i64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}228	vqshl_n_s64(arg_i64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}229 230	vqshlq_n_s64(arg_i64x2, 0);231	vqshlq_n_s64(arg_i64x2, 63);232	vqshlq_n_s64(arg_i64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}233	vqshlq_n_s64(arg_i64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}234 235	vqshld_n_s64(arg_i64, 0);236	vqshld_n_s64(arg_i64, 63);237	vqshld_n_s64(arg_i64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}238	vqshld_n_s64(arg_i64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}239 240	vqshlu_n_s64(arg_i64x1, 0);241	vqshlu_n_s64(arg_i64x1, 63);242	vqshlu_n_s64(arg_i64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}243	vqshlu_n_s64(arg_i64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}244 245	vqshluq_n_s64(arg_i64x2, 0);246	vqshluq_n_s64(arg_i64x2, 63);247	vqshluq_n_s64(arg_i64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}248	vqshluq_n_s64(arg_i64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}249 250	vqshlud_n_s64(arg_i64, 0);251	vqshlud_n_s64(arg_i64, 63);252	vqshlud_n_s64(arg_i64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}253	vqshlud_n_s64(arg_i64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}254 255}256 257void test_vector_saturating_shift_left_u8(uint8x8_t arg_u8x8, uint8_t arg_u8, uint8x16_t arg_u8x16) {258	vqshl_n_u8(arg_u8x8, 0);259	vqshl_n_u8(arg_u8x8, 7);260	vqshl_n_u8(arg_u8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}261	vqshl_n_u8(arg_u8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}262 263	vqshlq_n_u8(arg_u8x16, 0);264	vqshlq_n_u8(arg_u8x16, 7);265	vqshlq_n_u8(arg_u8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}266	vqshlq_n_u8(arg_u8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}267 268	vqshlb_n_u8(arg_u8, 0);269	vqshlb_n_u8(arg_u8, 7);270	vqshlb_n_u8(arg_u8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}271	vqshlb_n_u8(arg_u8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}272 273}274 275void test_vector_saturating_shift_left_u16(uint16_t arg_u16, uint16x4_t arg_u16x4, uint16x8_t arg_u16x8) {276	vqshl_n_u16(arg_u16x4, 0);277	vqshl_n_u16(arg_u16x4, 15);278	vqshl_n_u16(arg_u16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}279	vqshl_n_u16(arg_u16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}280 281	vqshlq_n_u16(arg_u16x8, 0);282	vqshlq_n_u16(arg_u16x8, 15);283	vqshlq_n_u16(arg_u16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}284	vqshlq_n_u16(arg_u16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}285 286	vqshlh_n_u16(arg_u16, 0);287	vqshlh_n_u16(arg_u16, 15);288	vqshlh_n_u16(arg_u16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}289	vqshlh_n_u16(arg_u16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}290 291}292 293void test_vector_saturating_shift_left_u32(uint32x2_t arg_u32x2, uint32x4_t arg_u32x4, uint32_t arg_u32) {294	vqshl_n_u32(arg_u32x2, 0);295	vqshl_n_u32(arg_u32x2, 31);296	vqshl_n_u32(arg_u32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}297	vqshl_n_u32(arg_u32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}298 299	vqshlq_n_u32(arg_u32x4, 0);300	vqshlq_n_u32(arg_u32x4, 31);301	vqshlq_n_u32(arg_u32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}302	vqshlq_n_u32(arg_u32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}303 304	vqshls_n_u32(arg_u32, 0);305	vqshls_n_u32(arg_u32, 31);306	vqshls_n_u32(arg_u32, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}307	vqshls_n_u32(arg_u32, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}308 309}310 311void test_vector_saturating_shift_left_u64(uint64x1_t arg_u64x1, uint64_t arg_u64, uint64x2_t arg_u64x2) {312	vqshl_n_u64(arg_u64x1, 0);313	vqshl_n_u64(arg_u64x1, 63);314	vqshl_n_u64(arg_u64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}315	vqshl_n_u64(arg_u64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}316 317	vqshlq_n_u64(arg_u64x2, 0);318	vqshlq_n_u64(arg_u64x2, 63);319	vqshlq_n_u64(arg_u64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}320	vqshlq_n_u64(arg_u64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}321 322	vqshld_n_u64(arg_u64, 0);323	vqshld_n_u64(arg_u64, 63);324	vqshld_n_u64(arg_u64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}325	vqshld_n_u64(arg_u64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}326 327}328 329void test_vector_shift_left_and_widen_s8(int8x8_t arg_i8x8, int8x16_t arg_i8x16) {330	vshll_n_s8(arg_i8x8, 0);331	vshll_n_s8(arg_i8x8, 7);332	vshll_n_s8(arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}333 334 335	vshll_high_n_s8(arg_i8x16, 0);336	vshll_high_n_s8(arg_i8x16, 7);337	vshll_high_n_s8(arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}338}339 340void test_vector_shift_left_and_widen_s16(int16x4_t arg_i16x4, int16x8_t arg_i16x8) {341	vshll_n_s16(arg_i16x4, 0);342	vshll_n_s16(arg_i16x4, 15);343	vshll_n_s16(arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}344 345	vshll_high_n_s16(arg_i16x8, 0);346	vshll_high_n_s16(arg_i16x8, 15);347	vshll_high_n_s16(arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}348}349 350void test_vector_shift_left_and_widen_s32(int32x2_t arg_i32x2, int32x4_t arg_i32x4) {351	vshll_n_s32(arg_i32x2, 0);352	vshll_n_s32(arg_i32x2, 31);353	vshll_n_s32(arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}354 355	vshll_high_n_s32(arg_i32x4, 0);356	vshll_high_n_s32(arg_i32x4, 31);357	vshll_high_n_s32(arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}358}359 360void test_vector_shift_left_and_widen_u8(uint8x8_t arg_u8x8, uint8x16_t arg_u8x16) {361	vshll_n_u8(arg_u8x8, 0);362	vshll_n_u8(arg_u8x8, 7);363	vshll_n_u8(arg_u8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}364 365	vshll_high_n_u8(arg_u8x16, 0);366	vshll_high_n_u8(arg_u8x16, 7);367	vshll_high_n_u8(arg_u8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}368}369 370void test_vector_shift_left_and_widen_u16(uint16x4_t arg_u16x4, uint16x8_t arg_u16x8) {371	vshll_n_u16(arg_u16x4, 0);372	vshll_n_u16(arg_u16x4, 15);373	vshll_n_u16(arg_u16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}374 375	vshll_high_n_u16(arg_u16x8, 0);376	vshll_high_n_u16(arg_u16x8, 15);377	vshll_high_n_u16(arg_u16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}378}379 380void test_vector_shift_left_and_widen_u32(uint32x2_t arg_u32x2, uint32x4_t arg_u32x4) {381	vshll_n_u32(arg_u32x2, 0);382	vshll_n_u32(arg_u32x2, 31);383	vshll_n_u32(arg_u32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}384 385	vshll_high_n_u32(arg_u32x4, 0);386	vshll_high_n_u32(arg_u32x4, 31);387	vshll_high_n_u32(arg_u32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}388}389 390void test_vector_shift_left_and_insert_s8(int8x8_t arg_i8x8, int8x16_t arg_i8x16) {391	vsli_n_s8(arg_i8x8, arg_i8x8, 0);392	vsli_n_s8(arg_i8x8, arg_i8x8, 7);393	vsli_n_s8(arg_i8x8, arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}394	vsli_n_s8(arg_i8x8, arg_i8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}395 396	vsliq_n_s8(arg_i8x16, arg_i8x16, 0);397	vsliq_n_s8(arg_i8x16, arg_i8x16, 7);398	vsliq_n_s8(arg_i8x16, arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}399	vsliq_n_s8(arg_i8x16, arg_i8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}400 401}402 403void test_vector_shift_left_and_insert_s16(int16x4_t arg_i16x4, int16x8_t arg_i16x8) {404	vsli_n_s16(arg_i16x4, arg_i16x4, 0);405	vsli_n_s16(arg_i16x4, arg_i16x4, 15);406	vsli_n_s16(arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}407	vsli_n_s16(arg_i16x4, arg_i16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}408 409	vsliq_n_s16(arg_i16x8, arg_i16x8, 0);410	vsliq_n_s16(arg_i16x8, arg_i16x8, 15);411	vsliq_n_s16(arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}412	vsliq_n_s16(arg_i16x8, arg_i16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}413 414}415 416void test_vector_shift_left_and_insert_s32(int32x2_t arg_i32x2, int32x4_t arg_i32x4) {417	vsli_n_s32(arg_i32x2, arg_i32x2, 0);418	vsli_n_s32(arg_i32x2, arg_i32x2, 31);419	vsli_n_s32(arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}420	vsli_n_s32(arg_i32x2, arg_i32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}421 422	vsliq_n_s32(arg_i32x4, arg_i32x4, 0);423	vsliq_n_s32(arg_i32x4, arg_i32x4, 31);424	vsliq_n_s32(arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}425	vsliq_n_s32(arg_i32x4, arg_i32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}426 427}428 429void test_vector_shift_left_and_insert_s64(int64_t arg_i64, int64x2_t arg_i64x2, int64x1_t arg_i64x1) {430	vsli_n_s64(arg_i64x1, arg_i64x1, 0);431	vsli_n_s64(arg_i64x1, arg_i64x1, 63);432	vsli_n_s64(arg_i64x1, arg_i64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}433	vsli_n_s64(arg_i64x1, arg_i64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}434 435	vsliq_n_s64(arg_i64x2, arg_i64x2, 0);436	vsliq_n_s64(arg_i64x2, arg_i64x2, 63);437	vsliq_n_s64(arg_i64x2, arg_i64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}438	vsliq_n_s64(arg_i64x2, arg_i64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}439 440	vslid_n_s64(arg_i64, arg_i64, 0);441	vslid_n_s64(arg_i64, arg_i64, 63);442	vslid_n_s64(arg_i64, arg_i64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}443	vslid_n_s64(arg_i64, arg_i64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}444 445}446 447void test_vector_shift_left_and_insert_u8(uint8x8_t arg_u8x8, uint8x16_t arg_u8x16) {448	vsli_n_u8(arg_u8x8, arg_u8x8, 0);449	vsli_n_u8(arg_u8x8, arg_u8x8, 7);450	vsli_n_u8(arg_u8x8, arg_u8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}451	vsli_n_u8(arg_u8x8, arg_u8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}452 453	vsliq_n_u8(arg_u8x16, arg_u8x16, 0);454	vsliq_n_u8(arg_u8x16, arg_u8x16, 7);455	vsliq_n_u8(arg_u8x16, arg_u8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}456	vsliq_n_u8(arg_u8x16, arg_u8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}457 458}459 460void test_vector_shift_left_and_insert_u16(uint16x4_t arg_u16x4, uint16x8_t arg_u16x8) {461	vsli_n_u16(arg_u16x4, arg_u16x4, 0);462	vsli_n_u16(arg_u16x4, arg_u16x4, 15);463	vsli_n_u16(arg_u16x4, arg_u16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}464	vsli_n_u16(arg_u16x4, arg_u16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}465 466	vsliq_n_u16(arg_u16x8, arg_u16x8, 0);467	vsliq_n_u16(arg_u16x8, arg_u16x8, 15);468	vsliq_n_u16(arg_u16x8, arg_u16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}469	vsliq_n_u16(arg_u16x8, arg_u16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}470 471}472 473void test_vector_shift_left_and_insert_u32(uint32x2_t arg_u32x2, uint32x4_t arg_u32x4) {474	vsli_n_u32(arg_u32x2, arg_u32x2, 0);475	vsli_n_u32(arg_u32x2, arg_u32x2, 31);476	vsli_n_u32(arg_u32x2, arg_u32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}477	vsli_n_u32(arg_u32x2, arg_u32x2, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}478 479	vsliq_n_u32(arg_u32x4, arg_u32x4, 0);480	vsliq_n_u32(arg_u32x4, arg_u32x4, 31);481	vsliq_n_u32(arg_u32x4, arg_u32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}482	vsliq_n_u32(arg_u32x4, arg_u32x4, 32); // expected-error-re {{argument value {{.*}} is outside the valid range}}483 484}485 486void test_vector_shift_left_and_insert_u64(uint64x1_t arg_u64x1, uint64_t arg_u64, uint64x2_t arg_u64x2) {487	vsli_n_u64(arg_u64x1, arg_u64x1, 0);488	vsli_n_u64(arg_u64x1, arg_u64x1, 63);489	vsli_n_u64(arg_u64x1, arg_u64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}490	vsli_n_u64(arg_u64x1, arg_u64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}491 492	vsliq_n_u64(arg_u64x2, arg_u64x2, 0);493	vsliq_n_u64(arg_u64x2, arg_u64x2, 63);494	vsliq_n_u64(arg_u64x2, arg_u64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}495	vsliq_n_u64(arg_u64x2, arg_u64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}496 497	vslid_n_u64(arg_u64, arg_u64, 0);498	vslid_n_u64(arg_u64, arg_u64, 63);499	vslid_n_u64(arg_u64, arg_u64, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}500	vslid_n_u64(arg_u64, arg_u64, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}501 502}503 504void test_vector_shift_left_and_insert_p64(poly64x2_t arg_p64x2, poly64x1_t arg_p64x1) {505	vsli_n_p64(arg_p64x1, arg_p64x1, 0);506	vsli_n_p64(arg_p64x1, arg_p64x1, 63);507	vsli_n_p64(arg_p64x1, arg_p64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}508	vsli_n_p64(arg_p64x1, arg_p64x1, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}509 510	vsliq_n_p64(arg_p64x2, arg_p64x2, 0);511	vsliq_n_p64(arg_p64x2, arg_p64x2, 63);512	vsliq_n_p64(arg_p64x2, arg_p64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}513	vsliq_n_p64(arg_p64x2, arg_p64x2, 64); // expected-error-re {{argument value {{.*}} is outside the valid range}}514 515}516 517void test_vector_shift_left_and_insert_p8(poly8x16_t arg_p8x16, poly8x8_t arg_p8x8) {518	vsli_n_p8(arg_p8x8, arg_p8x8, 0);519	vsli_n_p8(arg_p8x8, arg_p8x8, 7);520	vsli_n_p8(arg_p8x8, arg_p8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}521	vsli_n_p8(arg_p8x8, arg_p8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}522 523	vsliq_n_p8(arg_p8x16, arg_p8x16, 0);524	vsliq_n_p8(arg_p8x16, arg_p8x16, 7);525	vsliq_n_p8(arg_p8x16, arg_p8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}526	vsliq_n_p8(arg_p8x16, arg_p8x16, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}527 528}529 530void test_vector_shift_left_and_insert_p16(poly16x4_t arg_p16x4, poly16x8_t arg_p16x8) {531	vsli_n_p16(arg_p16x4, arg_p16x4, 0);532	vsli_n_p16(arg_p16x4, arg_p16x4, 15);533	vsli_n_p16(arg_p16x4, arg_p16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}534	vsli_n_p16(arg_p16x4, arg_p16x4, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}535 536	vsliq_n_p16(arg_p16x8, arg_p16x8, 0);537	vsliq_n_p16(arg_p16x8, arg_p16x8, 15);538	vsliq_n_p16(arg_p16x8, arg_p16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}539	vsliq_n_p16(arg_p16x8, arg_p16x8, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}540 541}542 543