1 // REQUIRES: hexagon-registered-target 2 // RUN: %clang_cc1 -triple hexagon %s -target-feature +hvx-length128b -target-feature +hvxv60 -target-cpu hexagonv60 -verify -S -o - -DTEST_HVXV60 3 // RUN: %clang_cc1 -triple hexagon %s -target-feature +hvx-length128b -target-feature +hvxv60 -target-cpu hexagonv60 -verify -S -o - -DTEST_HVXV62 4 // RUN: %clang_cc1 -triple hexagon %s -target-feature +hvx-length128b -target-feature +hvxv60 -target-cpu hexagonv60 -verify -S -o - -DTEST_HVXV65 5 6 typedef long Vect1024 __attribute__((__vector_size__(128))) 7 __attribute__((aligned(128))); 8 typedef long Vect2048 __attribute__((__vector_size__(256))) 9 __attribute__((aligned(128))); 10 11 typedef Vect1024 HVX_Vector; 12 typedef Vect2048 HVX_VectorPair; 13 14 #ifdef TEST_HVXV60 builtin_needs_v60(HVX_VectorPair a)15HVX_Vector builtin_needs_v60(HVX_VectorPair a) { 16 // expected-no-diagnostics 17 return __builtin_HEXAGON_V6_hi_128B(a); 18 } 19 #endif 20 21 #ifdef TEST_HVXV62 builtin_needs_v62(char a)22HVX_Vector builtin_needs_v62(char a) { 23 // expected-error-re@+1 {{'__builtin_HEXAGON_V6_lvsplatb_128B' needs target feature hvxv62|{{.*}}}} 24 return __builtin_HEXAGON_V6_lvsplatb_128B(a); 25 } 26 #endif 27 28 #ifdef TEST_HVXV65 builtin_needs_v65()29HVX_VectorPair builtin_needs_v65() { 30 // expected-error-re@+1 {{'__builtin_HEXAGON_V6_vdd0_128B' needs target feature hvxv65|{{.*}}}} 31 return __builtin_HEXAGON_V6_vdd0_128B(); 32 } 33 #endif 34