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