| 1 | // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-linux-gnu %s |
| 2 | |
| 3 | // Correct cases. |
| 4 | typedef int __attribute__((mode(byte))) __attribute__((vector_size(256))) vec_t1; |
| 5 | typedef int __attribute__((mode(QI))) __attribute__((vector_size(256))) vec_t2; |
| 6 | typedef int __attribute__((mode(SI))) __attribute__((vector_size(256))) vec_t3; |
| 7 | typedef int __attribute__((mode(DI))) __attribute__((vector_size(256)))vec_t4; |
| 8 | typedef float __attribute__((mode(SF))) __attribute__((vector_size(256))) vec_t5; |
| 9 | typedef float __attribute__((mode(DF))) __attribute__((vector_size(256))) vec_t6; |
| 10 | typedef float __attribute__((mode(XF))) __attribute__((vector_size(256))) vec_t7; |
| 11 | |
| 12 | typedef int v8qi __attribute__ ((mode(QI))) __attribute__ ((vector_size(8))); |
| 13 | typedef int v8qi __attribute__ ((mode(V8QI))); |
| 14 | // expected-warning@-1{{specifying vector types with the 'mode' attribute is deprecated; use the 'vector_size' attribute instead}} |
| 15 | |
| 16 | typedef float v4sf __attribute__((mode(V4SF))); |
| 17 | // expected-warning@-1{{specifying vector types with the 'mode' attribute is deprecated; use the 'vector_size' attribute instead}} |
| 18 | typedef float v4sf __attribute__((mode(SF))) __attribute__ ((vector_size(16))); |
| 19 | |
| 20 | // Incorrect cases. |
| 21 | typedef float __attribute__((mode(QC))) __attribute__((vector_size(256))) vec_t8; |
| 22 | // expected-error@-1{{unsupported machine mode 'QC'}} |
| 23 | // expected-error@-2{{type of machine mode does not match type of base type}} |
| 24 | typedef _Complex float __attribute__((mode(HC))) __attribute__((vector_size(256))) vec_t9; |
| 25 | // expected-error@-1{{unsupported machine mode 'HC'}} |
| 26 | // expected-error@-2{{invalid vector element type '_Complex float'}} |
| 27 | typedef int __attribute__((mode(SC))) __attribute__((vector_size(256))) vec_t10; |
| 28 | // expected-error@-1{{type of machine mode does not match type of base type}} |
| 29 | // expected-error@-2{{type of machine mode does not support base vector types}} |
| 30 | typedef float __attribute__((mode(DC))) __attribute__((vector_size(256))) vec_t11; |
| 31 | // expected-error@-1{{type of machine mode does not match type of base type}} |
| 32 | // expected-error@-2{{type of machine mode does not support base vector types}} |
| 33 | typedef _Complex float __attribute__((mode(XC))) __attribute__((vector_size(256))) vec_t12; |
| 34 | // expected-error@-1{{invalid vector element type '_Complex float'}} |
| 35 | typedef int __attribute__((mode(V3QI))) v3qi; |
| 36 | // expected-error@-1{{unknown machine mode 'V3QI'}} |
| 37 | |