1 // RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -Wvector-conversion -ffreestanding -verify %s
2 // REQUIRES: aarch64-registered-target || arm-registered-target
8 // Radar 8228022: Should not report incompatible vector types.
9 int32x2_t
test(int32x2_t x
) {
10 return vshr_n_s32(x
, 31);
13 // ...but should warn when the types really do not match.
14 float32x2_t
test2(uint32x2_t x
) {
15 return vcvt_n_f32_s32(x
, 9); // expected-warning {{incompatible vector types}}
18 // Check immediate range for vcvt_n intrinsics is 1 to 32. Radar 9558930.
19 float32x2_t
test3(uint32x2_t x
) {
20 // FIXME: The "incompatible result type" error is due to pr10112 and should be
21 // removed when that is fixed.
22 return vcvt_n_f32_u32(x
, 0); // expected-error-re {{argument value {{.*}} is outside the valid range}}
25 typedef signed int vSInt32
__attribute__((__vector_size__(16)));
26 int32x4_t
test4(int32x4_t a
, vSInt32 b
) {
32 // Warn for incompatible pointer types used with vld/vst intrinsics.
33 int16x8_t
test5(int *p
) {
34 return vld1q_s16(p
); // expected-warning {{incompatible pointer types}}
36 void test6(float *p
, int32x2_t v
) {
37 return vst1_s32(p
, v
); // expected-warning {{incompatible pointer types}}
41 #include "arm-neon-types.c"
44 // Make sure we don't get a warning about using a static function in an
45 // extern inline function from a header.
46 extern inline uint8x8_t
test7(uint8x8_t a
, uint8x8_t b
) {