Clang Project

clang_source_code/test/Preprocessor/hexagon-predefines.c
1// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv5 %s | FileCheck %s -check-prefix CHECK-V5
2// CHECK-V5: #define __HEXAGON_ARCH__ 5
3// CHECK-V5: #define __HEXAGON_V5__ 1
4// CHECK-V5-NOT: #define __HVX_LENGTH__
5// CHECK-V5-NOT: #define __HVX__ 1
6// CHECK-V5: #define __hexagon__ 1
7
8// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv55 %s | FileCheck %s -check-prefix CHECK-V55
9// CHECK-V55: #define __HEXAGON_ARCH__ 55
10// CHECK-V55: #define __HEXAGON_V55__ 1
11// CHECK-V55-NOT: #define __HVX_LENGTH__
12// CHECK-V55-NOT: #define __HVX__ 1
13// CHECK-V55: #define __hexagon__ 1
14
15// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 %s | FileCheck %s -check-prefix CHECK-V60
16// CHECK-V60: #define __HEXAGON_ARCH__ 60
17// CHECK-V60: #define __HEXAGON_V60__ 1
18// CHECK-V60-NOT: #define __HVX_LENGTH__
19// CHECK-V60-NOT: #define __HVX__ 1
20// CHECK-V60: #define __hexagon__ 1
21
22// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv62 %s | FileCheck %s -check-prefix CHECK-V62
23// CHECK-V62: #define __HEXAGON_ARCH__ 62
24// CHECK-V62: #define __HEXAGON_V62__ 1
25// CHECK-V62-NOT: #define __HVX_LENGTH__
26// CHECK-V62-NOT: #define __HVX__ 1
27// CHECK-V62: #define __hexagon__ 1
28
29// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv65 %s | FileCheck %s -check-prefix CHECK-V65
30// CHECK-V65: #define __HEXAGON_ARCH__ 65
31// CHECK-V65: #define __HEXAGON_V65__ 1
32// CHECK-V65-NOT: #define __HVX_LENGTH__
33// CHECK-V65-NOT: #define __HVX__ 1
34// CHECK-V65: #define __hexagon__ 1
35
36// The HVX flags are explicitly defined by the driver.
37// For v60,v62,v65 - 64B mode is default
38// For v66 and future archs - 128B is default
39// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 \
40// RUN: -target-feature +hvxv60 -target-feature +hvx-length64b %s | FileCheck \
41// RUN: %s -check-prefix CHECK-V60HVX-64B
42// CHECK-V60HVX-64B: #define __HEXAGON_ARCH__ 60
43// CHECK-V60HVX-64B: #define __HEXAGON_V60__ 1
44// CHECK-V60HVX-64B-NOT: #define __HVXDBL__ 1
45// CHECK-V60HVX-64B: #define __HVX_ARCH__ 60
46// CHECK-V60HVX-64B: #define __HVX_LENGTH__ 64
47// CHECK-V60HVX-64B: #define __HVX__ 1
48// CHECK-V60HVX-64B: #define __hexagon__ 1
49
50// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 \
51// RUN: -target-feature +hvxv60 -target-feature +hvx-length128b %s | FileCheck \
52// RUN: %s -check-prefix CHECK-V60HVX-128B
53// CHECK-V60HVX-128B: #define __HEXAGON_ARCH__ 60
54// CHECK-V60HVX-128B: #define __HEXAGON_V60__ 1
55// CHECK-V60HVX-128B: #define __HVXDBL__ 1
56// CHECK-V60HVX-128B: #define __HVX_ARCH__ 60
57// CHECK-V60HVX-128B: #define __HVX_LENGTH__ 128
58// CHECK-V60HVX-128B: #define __HVX__ 1
59// CHECK-V60HVX-128B: #define __hexagon__ 1
60
61// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv66 \
62// RUN: -target-feature +hvxv66 -target-feature +hvx-length64b %s | FileCheck \
63// RUN: %s -check-prefix CHECK-V66HVX-64B
64// CHECK-V66HVX-64B: #define __HEXAGON_ARCH__ 66
65// CHECK-V66HVX-64B: #define __HEXAGON_V66__ 1
66// CHECK-V66HVX-64B-NOT: #define __HVXDBL__ 1
67// CHECK-V66HVX-64B: #define __HVX_ARCH__ 66
68// CHECK-V66HVX-64B: #define __HVX_LENGTH__ 64
69// CHECK-V66HVX-64B: #define __HVX__ 1
70// CHECK-V66HVX-64B: #define __hexagon__ 1
71
72// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv66 \
73// RUN: -target-feature +hvxv66 -target-feature +hvx-length128b %s | FileCheck \
74// RUN: %s -check-prefix CHECK-V66HVX-128B
75// CHECK-V66HVX-128B: #define __HEXAGON_ARCH__ 66
76// CHECK-V66HVX-128B: #define __HEXAGON_V66__ 1
77// CHECK-V66HVX-128B: #define __HVXDBL__ 1
78// CHECK-V66HVX-128B: #define __HVX_ARCH__ 66
79// CHECK-V66HVX-128B: #define __HVX_LENGTH__ 128
80// CHECK-V66HVX-128B: #define __HVX__ 1
81// CHECK-V66HVX-128B: #define __hexagon__ 1
82