brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.1 KiB · 5738f5a Raw
302 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 7void test_extract_one_element_from_vector_s8(int8x16_t arg_i8x16, int8x8_t arg_i8x8) {8	vdupb_lane_s8(arg_i8x8, 0);9	vdupb_lane_s8(arg_i8x8, 7);10	vdupb_lane_s8(arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}11	vdupb_lane_s8(arg_i8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}12 13	vdupb_laneq_s8(arg_i8x16, 0);14	vdupb_laneq_s8(arg_i8x16, 15);15	vdupb_laneq_s8(arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}16	vdupb_laneq_s8(arg_i8x16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}17 18	vget_lane_s8(arg_i8x8, 0);19	vget_lane_s8(arg_i8x8, 7);20	vget_lane_s8(arg_i8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}21	vget_lane_s8(arg_i8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}22 23	vgetq_lane_s8(arg_i8x16, 0);24	vgetq_lane_s8(arg_i8x16, 15);25	vgetq_lane_s8(arg_i8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}26	vgetq_lane_s8(arg_i8x16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}27 28}29 30void test_extract_one_element_from_vector_s16(int16x4_t arg_i16x4, int16x8_t arg_i16x8) {31	vduph_lane_s16(arg_i16x4, 0);32	vduph_lane_s16(arg_i16x4, 3);33	vduph_lane_s16(arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}34	vduph_lane_s16(arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}35 36	vduph_laneq_s16(arg_i16x8, 0);37	vduph_laneq_s16(arg_i16x8, 7);38	vduph_laneq_s16(arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}39	vduph_laneq_s16(arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}40 41	vget_lane_s16(arg_i16x4, 0);42	vget_lane_s16(arg_i16x4, 3);43	vget_lane_s16(arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}44	vget_lane_s16(arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}45 46	vgetq_lane_s16(arg_i16x8, 0);47	vgetq_lane_s16(arg_i16x8, 7);48	vgetq_lane_s16(arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}49	vgetq_lane_s16(arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}50 51}52 53void test_extract_one_element_from_vector_s32(int32x4_t arg_i32x4, int32x2_t arg_i32x2) {54	vdups_lane_s32(arg_i32x2, 0);55	vdups_lane_s32(arg_i32x2, 1);56	vdups_lane_s32(arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}57	vdups_lane_s32(arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}58 59	vdups_laneq_s32(arg_i32x4, 0);60	vdups_laneq_s32(arg_i32x4, 3);61	vdups_laneq_s32(arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}62	vdups_laneq_s32(arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}63 64	vget_lane_s32(arg_i32x2, 0);65	vget_lane_s32(arg_i32x2, 1);66	vget_lane_s32(arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}67	vget_lane_s32(arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}68 69	vgetq_lane_s32(arg_i32x4, 0);70	vgetq_lane_s32(arg_i32x4, 3);71	vgetq_lane_s32(arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}72	vgetq_lane_s32(arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}73 74}75 76void test_extract_one_element_from_vector_s64(int64x2_t arg_i64x2, int64x1_t arg_i64x1) {77	vdupd_lane_s64(arg_i64x1, 0);78	vdupd_lane_s64(arg_i64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}79	vdupd_lane_s64(arg_i64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}80 81	vdupd_laneq_s64(arg_i64x2, 0);82	vdupd_laneq_s64(arg_i64x2, 1);83	vdupd_laneq_s64(arg_i64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}84	vdupd_laneq_s64(arg_i64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}85 86	vget_lane_s64(arg_i64x1, 0);87	vget_lane_s64(arg_i64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}88	vget_lane_s64(arg_i64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}89 90	vgetq_lane_s64(arg_i64x2, 0);91	vgetq_lane_s64(arg_i64x2, 1);92	vgetq_lane_s64(arg_i64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}93	vgetq_lane_s64(arg_i64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}94 95}96 97void test_extract_one_element_from_vector_u8(uint8x8_t arg_u8x8, uint8x16_t arg_u8x16) {98	vdupb_lane_u8(arg_u8x8, 0);99	vdupb_lane_u8(arg_u8x8, 7);100	vdupb_lane_u8(arg_u8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}101	vdupb_lane_u8(arg_u8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}102 103	vdupb_laneq_u8(arg_u8x16, 0);104	vdupb_laneq_u8(arg_u8x16, 15);105	vdupb_laneq_u8(arg_u8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}106	vdupb_laneq_u8(arg_u8x16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}107 108	vget_lane_u8(arg_u8x8, 0);109	vget_lane_u8(arg_u8x8, 7);110	vget_lane_u8(arg_u8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}111	vget_lane_u8(arg_u8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}112 113	vgetq_lane_u8(arg_u8x16, 0);114	vgetq_lane_u8(arg_u8x16, 15);115	vgetq_lane_u8(arg_u8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}116	vgetq_lane_u8(arg_u8x16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}117 118}119 120void test_extract_one_element_from_vector_u16(uint16x8_t arg_u16x8, uint16x4_t arg_u16x4) {121	vduph_lane_u16(arg_u16x4, 0);122	vduph_lane_u16(arg_u16x4, 3);123	vduph_lane_u16(arg_u16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}124	vduph_lane_u16(arg_u16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}125 126	vduph_laneq_u16(arg_u16x8, 0);127	vduph_laneq_u16(arg_u16x8, 7);128	vduph_laneq_u16(arg_u16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}129	vduph_laneq_u16(arg_u16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}130 131	vget_lane_u16(arg_u16x4, 0);132	vget_lane_u16(arg_u16x4, 3);133	vget_lane_u16(arg_u16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}134	vget_lane_u16(arg_u16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}135 136	vgetq_lane_u16(arg_u16x8, 0);137	vgetq_lane_u16(arg_u16x8, 7);138	vgetq_lane_u16(arg_u16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}139	vgetq_lane_u16(arg_u16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}140 141}142 143void test_extract_one_element_from_vector_u32(uint32x2_t arg_u32x2, uint32x4_t arg_u32x4) {144	vdups_lane_u32(arg_u32x2, 0);145	vdups_lane_u32(arg_u32x2, 1);146	vdups_lane_u32(arg_u32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}147	vdups_lane_u32(arg_u32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}148 149	vdups_laneq_u32(arg_u32x4, 0);150	vdups_laneq_u32(arg_u32x4, 3);151	vdups_laneq_u32(arg_u32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}152	vdups_laneq_u32(arg_u32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}153 154	vget_lane_u32(arg_u32x2, 0);155	vget_lane_u32(arg_u32x2, 1);156	vget_lane_u32(arg_u32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}157	vget_lane_u32(arg_u32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}158 159	vgetq_lane_u32(arg_u32x4, 0);160	vgetq_lane_u32(arg_u32x4, 3);161	vgetq_lane_u32(arg_u32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}162	vgetq_lane_u32(arg_u32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}163 164}165 166void test_extract_one_element_from_vector_u64(uint64x1_t arg_u64x1, uint64x2_t arg_u64x2) {167	vdupd_lane_u64(arg_u64x1, 0);168	vdupd_lane_u64(arg_u64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}169	vdupd_lane_u64(arg_u64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}170 171	vdupd_laneq_u64(arg_u64x2, 0);172	vdupd_laneq_u64(arg_u64x2, 1);173	vdupd_laneq_u64(arg_u64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}174	vdupd_laneq_u64(arg_u64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}175 176	vget_lane_u64(arg_u64x1, 0);177	vget_lane_u64(arg_u64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}178	vget_lane_u64(arg_u64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}179 180	vgetq_lane_u64(arg_u64x2, 0);181	vgetq_lane_u64(arg_u64x2, 1);182	vgetq_lane_u64(arg_u64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}183	vgetq_lane_u64(arg_u64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}184 185}186 187void test_extract_one_element_from_vector_f32(float32x4_t arg_f32x4, float32x2_t arg_f32x2) {188	vdups_lane_f32(arg_f32x2, 0);189	vdups_lane_f32(arg_f32x2, 1);190	vdups_lane_f32(arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}191	vdups_lane_f32(arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}192 193	vdups_laneq_f32(arg_f32x4, 0);194	vdups_laneq_f32(arg_f32x4, 3);195	vdups_laneq_f32(arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}196	vdups_laneq_f32(arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}197 198	vget_lane_f32(arg_f32x2, 0);199	vget_lane_f32(arg_f32x2, 1);200	vget_lane_f32(arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}201	vget_lane_f32(arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}202 203	vgetq_lane_f32(arg_f32x4, 0);204	vgetq_lane_f32(arg_f32x4, 3);205	vgetq_lane_f32(arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}206	vgetq_lane_f32(arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}207 208}209 210void test_extract_one_element_from_vector_f64(float64x2_t arg_f64x2, float64x1_t arg_f64x1) {211	vdupd_lane_f64(arg_f64x1, 0);212	vdupd_lane_f64(arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}213	vdupd_lane_f64(arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}214 215	vdupd_laneq_f64(arg_f64x2, 0);216	vdupd_laneq_f64(arg_f64x2, 1);217	vdupd_laneq_f64(arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}218	vdupd_laneq_f64(arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}219 220	vget_lane_f64(arg_f64x1, 0);221	vget_lane_f64(arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}222	vget_lane_f64(arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}223 224	vgetq_lane_f64(arg_f64x2, 0);225	vgetq_lane_f64(arg_f64x2, 1);226	vgetq_lane_f64(arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}227	vgetq_lane_f64(arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}228 229}230 231void test_extract_one_element_from_vector_p8(poly8x16_t arg_p8x16, poly8x8_t arg_p8x8) {232	vdupb_lane_p8(arg_p8x8, 0);233	vdupb_lane_p8(arg_p8x8, 7);234	vdupb_lane_p8(arg_p8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}235	vdupb_lane_p8(arg_p8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}236 237	vdupb_laneq_p8(arg_p8x16, 0);238	vdupb_laneq_p8(arg_p8x16, 15);239	vdupb_laneq_p8(arg_p8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}240	vdupb_laneq_p8(arg_p8x16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}241 242	vget_lane_p8(arg_p8x8, 0);243	vget_lane_p8(arg_p8x8, 7);244	vget_lane_p8(arg_p8x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}245	vget_lane_p8(arg_p8x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}246 247	vgetq_lane_p8(arg_p8x16, 0);248	vgetq_lane_p8(arg_p8x16, 15);249	vgetq_lane_p8(arg_p8x16, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}250	vgetq_lane_p8(arg_p8x16, 16); // expected-error-re {{argument value {{.*}} is outside the valid range}}251 252}253 254void test_extract_one_element_from_vector_p16(poly16x4_t arg_p16x4, poly16x8_t arg_p16x8) {255	vduph_lane_p16(arg_p16x4, 0);256	vduph_lane_p16(arg_p16x4, 3);257	vduph_lane_p16(arg_p16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}258	vduph_lane_p16(arg_p16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}259 260	vduph_laneq_p16(arg_p16x8, 0);261	vduph_laneq_p16(arg_p16x8, 7);262	vduph_laneq_p16(arg_p16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}263	vduph_laneq_p16(arg_p16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}264 265	vget_lane_p16(arg_p16x4, 0);266	vget_lane_p16(arg_p16x4, 3);267	vget_lane_p16(arg_p16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}268	vget_lane_p16(arg_p16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}269 270	vgetq_lane_p16(arg_p16x8, 0);271	vgetq_lane_p16(arg_p16x8, 7);272	vgetq_lane_p16(arg_p16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}273	vgetq_lane_p16(arg_p16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}274 275}276 277void test_extract_one_element_from_vector_p64(poly64x2_t arg_p64x2, poly64x1_t arg_p64x1) {278	vget_lane_p64(arg_p64x1, 0);279	vget_lane_p64(arg_p64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}280	vget_lane_p64(arg_p64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}281 282	vgetq_lane_p64(arg_p64x2, 0);283	vgetq_lane_p64(arg_p64x2, 1);284	vgetq_lane_p64(arg_p64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}285	vgetq_lane_p64(arg_p64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}286 287}288 289void test_extract_one_element_from_vector_f16(float16x8_t arg_f16x8, float16x4_t arg_f16x4) {290	vget_lane_f16(arg_f16x4, 0);291	vget_lane_f16(arg_f16x4, 3);292	vget_lane_f16(arg_f16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}293	vget_lane_f16(arg_f16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}294 295	vgetq_lane_f16(arg_f16x8, 0);296	vgetq_lane_f16(arg_f16x8, 7);297	vgetq_lane_f16(arg_f16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}298	vgetq_lane_f16(arg_f16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}299 300}301 302