int64x2x3_t f_vld3q_lane_s64 (int64_t * p, int64x2x3_t v) { int64x2x3_t res; /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */ res = vld3q_lane_s64 (p, v, 2); /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */ res = vld3q_lane_s64 (p, v, -1); return res; }
void test_ld3st3(int8x8x3_t small8, int8x16x3_t big8, int16x4x3_t small16, int16x8x3_t big16, int32x2x3_t small32, int32x4x3_t big32, int64x1x3_t small64, int64x2x3_t big64, void *addr) { vld3_lane_s8(addr, small8, 7); vld3_lane_s16(addr, small16, 3); vld3_lane_s32(addr, small32, 1); vld3_lane_s64(addr, small64, 0); vld3q_lane_s8(addr, big8, 15); vld3q_lane_s16(addr, big16, 7); vld3q_lane_s32(addr, big32, 3); vld3q_lane_s64(addr, big64, 1); vld3_lane_s8(addr, small8, 8); // expected-error {{argument should be a value from 0 to 7}} vld3_lane_s16(addr, small16, 4); // expected-error {{argument should be a value from 0 to 3}} vld3_lane_s32(addr, small32, 2); // expected-error {{argument should be a value from 0 to 1}} vld3_lane_s64(addr, small64, 1); // expected-error {{argument should be a value from 0 to 0}} vld3q_lane_s8(addr, big8, 16); // expected-error {{argument should be a value from 0 to 15}} vld3q_lane_s16(addr, big16, 8); // expected-error {{argument should be a value from 0 to 7}} vld3q_lane_s32(addr, big32, 4); // expected-error {{argument should be a value from 0 to 3}} vld3q_lane_s64(addr, big64, 2); // expected-error {{argument should be a value from 0 to 1}} vst3_lane_s8(addr, small8, 7); vst3_lane_s16(addr, small16, 3); vst3_lane_s32(addr, small32, 1); vst3_lane_s64(addr, small64, 0); vst3q_lane_s8(addr, big8, 15); vst3q_lane_s16(addr, big16, 7); vst3q_lane_s32(addr, big32, 3); vst3q_lane_s64(addr, big64, 1); vst3_lane_s8(addr, small8, 8); // expected-error {{argument should be a value from 0 to 7}} vst3_lane_s16(addr, small16, 4); // expected-error {{argument should be a value from 0 to 3}} vst3_lane_s32(addr, small32, 2); // expected-error {{argument should be a value from 0 to 1}} vst3_lane_s64(addr, small64, 1); // expected-error {{argument should be a value from 0 to 0}} vst3q_lane_s8(addr, big8, 16); // expected-error {{argument should be a value from 0 to 15}} vst3q_lane_s16(addr, big16, 8); // expected-error {{argument should be a value from 0 to 7}} vst3q_lane_s32(addr, big32, 4); // expected-error {{argument should be a value from 0 to 3}} vst3q_lane_s64(addr, big64, 2); // expected-error {{argument should be a value from 0 to 1}} }
int64x2x3_t test_vld3q_lane_s64(const void * a1, int64x2x3_t a2) { // CHECK: test_vld3q_lane_s64 return vld3q_lane_s64(a1, a2, 1); // CHECK: llvm.aarch64.neon.ld3lane.v2i64.p0i8 }