diff options
author | ed <ed@FreeBSD.org> | 2009-07-04 13:58:54 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2009-07-04 13:58:54 +0000 |
commit | 4981926bf654fe5a2c3893f24ca44106b217e71e (patch) | |
tree | 8ddfe382e1c6d590dc240e76f7cd45cea5c78e24 /test/Sema/ext_vector_casts.c | |
parent | c1ff020ff2d3e7ba86f7ab986ac7569c34f2ab1a (diff) | |
download | FreeBSD-src-4981926bf654fe5a2c3893f24ca44106b217e71e.zip FreeBSD-src-4981926bf654fe5a2c3893f24ca44106b217e71e.tar.gz |
Import Clang r74788.
Diffstat (limited to 'test/Sema/ext_vector_casts.c')
-rw-r--r-- | test/Sema/ext_vector_casts.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/Sema/ext_vector_casts.c b/test/Sema/ext_vector_casts.c index 8aa762e..dbcd1c9 100644 --- a/test/Sema/ext_vector_casts.c +++ b/test/Sema/ext_vector_casts.c @@ -2,6 +2,7 @@ typedef __attribute__(( ext_vector_type(2) )) float float2; typedef __attribute__(( ext_vector_type(4) )) int int4; +typedef __attribute__(( ext_vector_type(8) )) short short8; typedef __attribute__(( ext_vector_type(4) )) float float4; typedef float t3 __attribute__ ((vector_size (16))); @@ -9,8 +10,12 @@ static void test() { float2 vec2; float4 vec4, vec4_2; int4 ivec4; + short8 ish8; t3 vec4_3; + int *ptr; + int i; + vec4 = 5.0f; vec4 = (float4)5.0f; vec4 = (float4)5; vec4 = (float4)vec4_3; @@ -19,5 +24,22 @@ static void test() { ivec4 = (int4)5; ivec4 = (int4)vec4_3; + i = (int)ivec4; // expected-error {{invalid conversion between vector type 'int4' and integer type 'int' of different size}} + i = ivec4; // expected-error {{incompatible type assigning 'int4', expected 'int'}} + + ivec4 = (int4)ptr; // expected-error {{invalid conversion between vector type 'int4' and scalar type 'int *'}} + vec4 = (float4)vec2; // expected-error {{invalid conversion between ext-vector type 'float4' and 'float2'}} + + ish8 += 5; // expected-error {{can't convert between vector values of different size ('short8' and 'int')}} + ish8 += (short)5; + ivec4 *= 5; + vec4 /= 5.2f; + vec4 %= 4; // expected-error {{invalid operands to binary expression ('float4' and 'int')}} + ivec4 %= 4; + ivec4 += vec4; // expected-error {{can't convert between vector values of different size ('float4' and 'int4')}} + ivec4 += (int4)vec4; + ivec4 -= ivec4; + ivec4 |= ivec4; + ivec4 += ptr; // expected-error {{can't convert between vector values of different size ('int4' and 'int *')}} } |