blob: 59f180b1911f07f443db50ca5182a58196ee02d8 [file] [log] [blame]
Joey Gouly1e8637b2013-09-18 10:07:09 +00001// RUN: %clang -target armv8a-none-linux-gnu -x c -E -dM %s -o - | FileCheck %s
2// CHECK: __ARMEL__ 1
3// CHECK: __ARM_ARCH 8
4// CHECK: __ARM_ARCH_8A__ 1
5// CHECK: __ARM_FEATURE_CRC32 1
James Molloy0ffb0932014-09-15 11:25:38 +00006// CHECK: __ARM_FEATURE_DIRECTED_ROUNDING 1
7// CHECK: __ARM_FEATURE_NUMERIC_MAXMIN 1
Oliver Stannarddc2854c2015-09-03 12:40:58 +00008// CHECK: __ARM_FP16_ARGS 1
9// CHECK: __ARM_FP16_FORMAT_IEEE 1
Joey Gouly1e8637b2013-09-18 10:07:09 +000010
11// RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7 %s
12// CHECK-V7: __ARMEL__ 1
13// CHECK-V7: __ARM_ARCH 7
14// CHECK-V7: __ARM_ARCH_7A__ 1
Nico Riecke6a158252014-02-16 07:29:41 +000015// CHECK-V7-NOT: __ARM_FEATURE_CRC32
James Molloy0ffb0932014-09-15 11:25:38 +000016// CHECK-V7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN
17// CHECK-V7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING
Silviu Barangae5690462013-10-21 10:59:33 +000018
Tim Northover525c73c2015-07-21 21:47:33 +000019// RUN: %clang -target x86_64-apple-macosx10.10 -arch armv7s -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7S %s
20// CHECK-V7S: __ARMEL__ 1
21// CHECK-V7S: __ARM_ARCH 7
22// CHECK-V7S: __ARM_ARCH_7S__ 1
23// CHECK-V7S-NOT: __ARM_FEATURE_CRC32
24// CHECK-V7S-NOT: __ARM_FEATURE_NUMERIC_MAXMIN
25// CHECK-V7S-NOT: __ARM_FEATURE_DIRECTED_ROUNDING
26
Bernard Ogdenda13af32013-10-24 18:32:51 +000027// RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF %s
28// CHECK-V8-BAREHF: __ARMEL__ 1
29// CHECK-V8-BAREHF: __ARM_ARCH 8
30// CHECK-V8-BAREHF: __ARM_ARCH_8A__ 1
31// CHECK-V8-BAREHF: __ARM_FEATURE_CRC32 1
James Molloy0ffb0932014-09-15 11:25:38 +000032// CHECK-V8-BAREHF: __ARM_FEATURE_DIRECTED_ROUNDING 1
33// CHECK-V8-BAREHF: __ARM_FEATURE_NUMERIC_MAXMIN 1
Bernard Ogdenda13af32013-10-24 18:32:51 +000034// CHECK-V8-BAREHF: __ARM_NEON__ 1
Alexandros Lamprineasf5a8e6c2015-10-02 14:56:37 +000035// CHECK-V8-BAREHF: __ARM_PCS_VFP 1
Bernard Ogdenda13af32013-10-24 18:32:51 +000036// CHECK-V8-BAREHF: __VFP_FP__ 1
37
38// RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-FP %s
39// CHECK-V8-BAREHF-FP-NOT: __ARM_NEON__ 1
40// CHECK-V8-BAREHF-FP: __VFP_FP__ 1
41
42// RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=neon-fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-NEON-FP %s
43// RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=crypto-neon-fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-NEON-FP %s
44// CHECK-V8-BAREHF-NEON-FP: __ARM_NEON__ 1
45// CHECK-V8-BAREHF-NEON-FP: __VFP_FP__ 1
46
Bernard Ogden18b57012013-10-29 09:47:51 +000047// RUN: %clang -target armv8a -mnocrc -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-NOCRC %s
48// CHECK-V8-NOCRC-NOT: __ARM_FEATURE_CRC32 1
49
Silviu Barangae5690462013-10-21 10:59:33 +000050// Check that -mhwdiv works properly for armv8/thumbv8 (enabled by default).
51
52// RUN: %clang -target armv8 -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8 %s
53// ARMV8:#define __ARM_ARCH_EXT_IDIV__ 1
54
55// RUN: %clang -target armv8 -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8 %s
56// THUMBV8:#define __ARM_ARCH_EXT_IDIV__ 1
57
58// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8-EABI %s
59// ARMV8-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
60
61// RUN: %clang -target armv8-eabi -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8-EABI %s
62// THUMBV8-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
63
64// RUN: %clang -target armv8 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=NONEHWDIV-ARMV8 %s
65// NONEHWDIV-ARMV8-NOT:#define __ARM_ARCH_EXT_IDIV__
66
67// RUN: %clang -target armv8 -mthumb -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=NONEHWDIV-THUMBV8 %s
68// NONEHWDIV-THUMBV8-NOT:#define __ARM_ARCH_EXT_IDIV__
69
70// RUN: %clang -target armv8 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBHWDIV-ARMV8 %s
71// THUMBHWDIV-ARMV8-NOT:#define __ARM_ARCH_EXT_IDIV__
72
73// RUN: %clang -target armv8 -mthumb -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=ARMHWDIV-THUMBV8 %s
74// ARMHWDIV-THUMBV8-NOT:#define __ARM_ARCH_EXT_IDIV__
75
76// RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A %s
77// ARMV8A:#define __ARM_ARCH_EXT_IDIV__ 1
78
79// RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A %s
80// THUMBV8A:#define __ARM_ARCH_EXT_IDIV__ 1
81
82// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A-EABI %s
83// ARMV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
84
85// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A-EABI %s
86// THUMBV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
87
Bradley Smith0f28f0c2014-01-20 10:52:00 +000088// RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-DEFS %s
Alexandros Lamprineasf5a8e6c2015-10-02 14:56:37 +000089// CHECK-DEFS:#define __ARM_PCS 1
Bradley Smith0f28f0c2014-01-20 10:52:00 +000090// CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4
91// CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4
92
Alexandros Lamprineasf5a8e6c2015-10-02 14:56:37 +000093// RUN: %clang -target arm-none-linux-gnu -fno-math-errno -fno-signed-zeros\
94// RUN: -fno-trapping-math -fassociative-math -freciprocal-math\
95// RUN: -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s
96// RUN: %clang -target arm-none-linux-gnu -ffast-math -x c -E -dM %s -o -\
97// RUN: | FileCheck --check-prefix=CHECK-FASTMATH %s
98// CHECK-FASTMATH: __ARM_FP_FAST 1
99
Bradley Smith0f28f0c2014-01-20 10:52:00 +0000100// RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTWCHAR %s
101// CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2
102
103// RUN: %clang -target arm-none-linux-gnu -fshort-enums -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTENUMS %s
104// CHECK-SHORTENUMS:#define __ARM_SIZEOF_MINIMAL_ENUM 1
Silviu Barangae5690462013-10-21 10:59:33 +0000105
106// Test that -mhwdiv has the right effect for a target CPU which has hwdiv enabled by default.
107// RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-ARM %s
108// DEFAULTHWDIV-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
109
110// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-THUMB %s
111// DEFAULTHWDIV-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
112
113// RUN: %clang -target armv7 -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=ARMHWDIV-ARM %s
114// ARMHWDIV-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
115
116// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBHWDIV-THUMB %s
117// THUMBHWDIV-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
118
119// RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-THUMBHWDIV-ARM %s
120// DEFAULTHWDIV-THUMBHWDIV-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
121
122// RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-ARMHWDIV-THUMB %s
123// DEFAULTHWDIV-ARMHWDIV-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
124
125// RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-NONEHWDIV-ARM %s
126// DEFAULTHWDIV-NONEHWDIV-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
127
128// RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-NONEHWDIV-THUMB %s
129// DEFAULTHWDIV-NONEHWDIV-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
130
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000131
132// Check that -mfpu works properly for Cortex-A7 (enabled by default).
133// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s
134// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s
135// DEFAULTFPU-A7:#define __ARM_NEON__ 1
136// DEFAULTFPU-A7:#define __ARM_VFPV4__ 1
137
138// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A7 %s
139// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A7 %s
140// FPUNONE-A7-NOT:#define __ARM_NEON__ 1
141// FPUNONE-A7-NOT:#define __ARM_VFPV4__ 1
142
143// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A7 %s
144// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A7 %s
145// NONEON-A7-NOT:#define __ARM_NEON__ 1
146// NONEON-A7:#define __ARM_VFPV4__ 1
147
Amara Emersona1daec72013-11-25 13:18:59 +0000148// Check that -mfpu works properly for Cortex-A5 (enabled by default).
149// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s
150// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s
151// DEFAULTFPU-A5:#define __ARM_NEON__ 1
152// DEFAULTFPU-A5:#define __ARM_VFPV4__ 1
153
154// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A5 %s
155// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A5 %s
156// FPUNONE-A5-NOT:#define __ARM_NEON__ 1
157// FPUNONE-A5-NOT:#define __ARM_VFPV4__ 1
158
John Brawn5a589ad2015-06-05 13:34:11 +0000159// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=vfp4-d16 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A5 %s
160// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -mfpu=vfp4-d16 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A5 %s
Amara Emersona1daec72013-11-25 13:18:59 +0000161// NONEON-A5-NOT:#define __ARM_NEON__ 1
162// NONEON-A5:#define __ARM_VFPV4__ 1
163
Silviu Barangae5690462013-10-21 10:59:33 +0000164// FIXME: add check for further predefines
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000165// Test whether predefines are as expected when targeting ep9312.
166// RUN: %clang -target armv4t -mcpu=ep9312 -x c -E -dM %s -o - | FileCheck --check-prefix=A4T %s
167// A4T-NOT:#define __ARM_FEATURE_DSP
168
169// Test whether predefines are as expected when targeting arm10tdmi.
170// RUN: %clang -target armv5 -mcpu=arm10tdmi -x c -E -dM %s -o - | FileCheck --check-prefix=A5T %s
171// A5T-NOT:#define __ARM_FEATURE_DSP
172
Silviu Barangae5690462013-10-21 10:59:33 +0000173// Test whether predefines are as expected when targeting cortex-a5.
174// RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-ARM %s
175// A5-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000176// A5-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000177
178// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-THUMB %s
179// A5-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000180// A5-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000181
Amara Emersona1daec72013-11-25 13:18:59 +0000182// RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s
183// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s
184// A5:#define __ARM_ARCH 7
185// A5:#define __ARM_ARCH_7A__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000186// A5:#define __ARM_ARCH_PROFILE 'A'
James Molloy0ffb0932014-09-15 11:25:38 +0000187// A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN
188// A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000189// A5:#define __ARM_FEATURE_DSP
Amara Emersona1daec72013-11-25 13:18:59 +0000190
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000191// Test whether predefines are as expected when targeting cortex-a7.
192// RUN: %clang -target armv7 -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s
193// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s
194// A7:#define __ARM_ARCH 7
195// A7:#define __ARM_ARCH_7A__ 1
196// A7:#define __ARM_ARCH_EXT_IDIV__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000197// A7:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000198// A7:#define __ARM_FEATURE_DSP
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000199
Silviu Barangae5690462013-10-21 10:59:33 +0000200// Test whether predefines are as expected when targeting cortex-a8.
201// RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-ARM %s
202// A8-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000203// A8-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000204
205// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-THUMB %s
206// A8-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000207// A8-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000208
209// Test whether predefines are as expected when targeting cortex-a9.
210// RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-ARM %s
211// A9-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000212// A9-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000213
214// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-THUMB %s
215// A9-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000216// A9-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000217
Richard Barton3b82ed32013-11-22 11:53:28 +0000218
219// Check that -mfpu works properly for Cortex-A12 (enabled by default).
220// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s
221// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s
222// DEFAULTFPU-A12:#define __ARM_NEON__ 1
223// DEFAULTFPU-A12:#define __ARM_VFPV4__ 1
224
225// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A12 %s
226// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A12 %s
227// FPUNONE-A12-NOT:#define __ARM_NEON__ 1
228// FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1
229
230// Test whether predefines are as expected when targeting cortex-a12.
231// RUN: %clang -target armv7 -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=A12 %s
232// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=A12 %s
233// A12:#define __ARM_ARCH 7
234// A12:#define __ARM_ARCH_7A__ 1
235// A12:#define __ARM_ARCH_EXT_IDIV__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000236// A12:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000237// A12:#define __ARM_FEATURE_DSP
Richard Barton3b82ed32013-11-22 11:53:28 +0000238
Silviu Barangae5690462013-10-21 10:59:33 +0000239// Test whether predefines are as expected when targeting cortex-a15.
240// RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-ARM %s
241// A15-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000242// A15-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000243
244// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-THUMB %s
245// A15-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000246// A15-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000247
Renato Golin5886bc32014-10-13 10:22:48 +0000248// Check that -mfpu works properly for Cortex-A17 (enabled by default).
249// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s
250// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s
251// DEFAULTFPU-A17:#define __ARM_NEON__ 1
252// DEFAULTFPU-A17:#define __ARM_VFPV4__ 1
253
254// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A17 %s
255// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A17 %s
256// FPUNONE-A17-NOT:#define __ARM_NEON__ 1
257// FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1
258
259// Test whether predefines are as expected when targeting cortex-a17.
260// RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s
261// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s
262// A17:#define __ARM_ARCH 7
263// A17:#define __ARM_ARCH_7A__ 1
264// A17:#define __ARM_ARCH_EXT_IDIV__ 1
265// A17:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000266// A17:#define __ARM_FEATURE_DSP
Renato Golin5886bc32014-10-13 10:22:48 +0000267
Silviu Barangae5690462013-10-21 10:59:33 +0000268// Test whether predefines are as expected when targeting swift.
269// RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-ARM %s
270// SWIFT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000271// SWIFT:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000272
273// RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-THUMB %s
274// SWIFT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000275// SWIFT-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000276
277// Test whether predefines are as expected when targeting cortex-a53.
278// RUN: %clang -target armv8 -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-ARM %s
279// A53-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000280// A53-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000281
282// RUN: %clang -target armv8 -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-THUMB %s
283// A53-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000284// A53-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000285
Javed Absar879d18b82015-04-09 14:12:10 +0000286// Test whether predefines are as expected when targeting cortex-r4.
287// RUN: %clang -target armv7 -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-ARM %s
288// R4-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
289// R4-ARM:#define __ARM_FEATURE_DSP
290
291// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-THUMB %s
292// R4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
293// R4-THUMB:#define __ARM_FEATURE_DSP
294
295// Test whether predefines are as expected when targeting cortex-r4f.
296// RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-ARM %s
297// R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
298// R4F-ARM:#define __ARM_FEATURE_DSP
299
300// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-THUMB %s
301// R4F-THUMBT:#define __ARM_ARCH_EXT_IDIV__ 1
302// R4F-THUMB:#define __ARM_FEATURE_DSP
303
Silviu Barangae5690462013-10-21 10:59:33 +0000304// Test whether predefines are as expected when targeting cortex-r5.
305// RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-ARM %s
306// R5-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000307// R5-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000308
309// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-THUMB %s
310// R5-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000311// R5-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000312
Bradley Smithd86d6702015-02-18 10:34:48 +0000313// Test whether predefines are as expected when targeting cortex-r7.
314// RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-ARM %s
315// R7-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
316// R7-ARM:#define __ARM_FEATURE_DSP
317
318// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-THUMB %s
319// R7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
320// R7-THUMB:#define __ARM_FEATURE_DSP
321
Silviu Barangae5690462013-10-21 10:59:33 +0000322// Test whether predefines are as expected when targeting cortex-m0.
323// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0 -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
Bradley Smithd86d6702015-02-18 10:34:48 +0000324// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0plus -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
325// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m1 -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
326// RUN: %clang -target armv7 -mthumb -mcpu=sc000 -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
Silviu Barangae5690462013-10-21 10:59:33 +0000327// M0-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000328// M0-THUMB-NOT:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000329
330// Test whether predefines are as expected when targeting cortex-m3.
331// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m3 -x c -E -dM %s -o - | FileCheck --check-prefix=M3-THUMB %s
Bradley Smithd86d6702015-02-18 10:34:48 +0000332// RUN: %clang -target armv7 -mthumb -mcpu=sc300 -x c -E -dM %s -o - | FileCheck --check-prefix=M3-THUMB %s
Silviu Barangae5690462013-10-21 10:59:33 +0000333// M3-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000334// M3-THUMB-NOT:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000335
336// Test whether predefines are as expected when targeting cortex-m4.
337// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck --check-prefix=M4-THUMB %s
338// M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000339// M4-THUMB:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000340
Oliver Stannardbfd3ea32014-10-01 09:03:02 +0000341// Test whether predefines are as expected when targeting cortex-m7.
342// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck --check-prefix=M7-THUMB %s
343// M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000344// M7-THUMB:#define __ARM_FEATURE_DSP
Oliver Stannardbfd3ea32014-10-01 09:03:02 +0000345
Ana Pazosdd6068d2013-12-06 22:43:17 +0000346// Test whether predefines are as expected when targeting krait.
347// RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-ARM %s
348// KRAIT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000349// KRAIT-ARM:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000350// KRAIT-ARM:#define __ARM_VFPV4__ 1
351
352// RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-THUMB %s
353// KRAIT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000354// KRAIT-THUMB:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000355// KRAIT-THUMB:#define __ARM_VFPV4__ 1
Vladimir Sukharevc6dab752015-05-14 08:25:18 +0000356
357// RUN: %clang -target armv8.1a-none-none-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V81A %s
358// CHECK-V81A: __ARM_ARCH 8
359// CHECK-V81A: __ARM_ARCH_8_1A__ 1
360// CHECK-V81A: #define __ARM_ARCH_PROFILE 'A'