1 // RUN
: %clang_cc1 %s -verify -pedantic -fsyntax-only
3 // RUN
: %clang_cc1 %s -verify -pedantic -fsyntax-only
5 typedef __attribute__
((ext_vector_type(2))) char char2
;
6 typedef __attribute__
((ext_vector_type(3))) char char3
;
8 typedef __attribute__
((ext_vector_type(2))) int int2
;
10 typedef __attribute__
((ext_vector_type(2))) float float2
;
12 // ** Positive tests
**
14 char2 ptest01
(char2 c
, char s
) {
18 char2 ptest02
(char2 c
, char2 s
) {
22 char2 ptest03
(char2 c
, int s
) {
26 char2 ptest04
(char2 c
, int2 s
) {
30 int2 ptest05
(int2 c
, char2 s
) {
34 char2 ptest06
(char2 c
) {
45 // ** Negative tests
**
47 char2 ntest01
(char c
, char2 s
) {
48 return c
<< s
; // expected-error {{requested shift is a vector of type '__private char2' (vector of 2 'char' values) but the first operand is not a vector ('__private char')}}
51 char3 ntest02
(char3 c
, char2 s
) {
52 return c
<< s
; // expected-error {{vector operands do not have the same number of elements ('char3' (vector of 3 'char' values) and 'char2' (vector of 2 'char' values))}}
55 float2 ntest03
(float2 c
, char s
) {
56 return c
<< s
; // expected-error {{used type 'float2' (vector of 2 'float' values) where integer is required}}
59 int2 ntest04
(int2 c
, float s
) {
60 return c
<< s
; // expected-error {{used type 'float' where integer is required}}