xref: /llvm-project/clang/test/Headers/hexagon-hvx-headers.c (revision f01b68e4bee7ccf92f125b1100367804b43f6a7e)
1 // REQUIRES: hexagon-registered-target
2 
3 // RUN: %clang_cc1 -O0 -internal-isystem %S/../../lib/Headers/ \
4 // RUN:   -target-cpu hexagonv68 -triple hexagon-unknown-elf \
5 // RUN:   -target-feature +hvx-length128b -target-feature +hvxv68 \
6 // RUN:   -emit-llvm %s -o - | FileCheck --check-prefix=CHECK %s
7 
8 // RUN: %clang_cc1 -O0 -internal-isystem %S/../../lib/Headers/ \
9 // RUN:   -target-cpu hexagonv68 -triple hexagon-unknown-elf -DDIRECT \
10 // RUN:   -target-feature +hvx-length128b -target-feature +hvxv68 \
11 // RUN:   -emit-llvm %s -o - | FileCheck --check-prefix=CHECK %s
12 
13 // RUN: %clang_cc1 -O0 -internal-isystem %S/../../lib/Headers/ \
14 // RUN:   -target-cpu hexagonv68 -triple hexagon-unknown-elf -x c++ \
15 // RUN:   -target-feature +hvx-length128b -target-feature +hvxv68 \
16 // RUN:   -emit-llvm %s -o - | FileCheck --check-prefix=CHECK %s
17 
18 // RUN: %clang_cc1 -O0 -internal-isystem %S/../../lib/Headers/ \
19 // RUN:   -target-cpu hexagonv68 -triple hexagon-unknown-elf \
20 // RUN:   -target-feature +hvx-length64b -target-feature +hvxv68 \
21 // RUN:   -emit-llvm %s -o - | FileCheck --check-prefix=CHECK-64 %s
22 
23 #ifdef DIRECT
24 #include <hvx_hexagon_protos.h>
25 #else
26 #include <hexagon_protos.h>
27 #endif
28 #include <hexagon_types.h>
29 
30 // expected-no-diagnostics
31 
test_hvx_protos(float a,unsigned int b)32 void test_hvx_protos(float a, unsigned int b) {
33   HVX_VectorPair c;
34   // CHECK-64: call <32 x i32> @llvm.hexagon.V6.v6mpyhubs10
35   // CHECK:    call <64 x i32> @llvm.hexagon.V6.v6mpyhubs10.128B
36   c = Q6_Ww_v6mpy_WubWbI_h(c, c, 2);
37 }
38