blob: 0cc909444fc45259c5408ee5379c22c1481cdd6d [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
35// CHECK-V8-BAREHF: __VFP_FP__ 1
36
37// RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-FP %s
38// CHECK-V8-BAREHF-FP-NOT: __ARM_NEON__ 1
39// CHECK-V8-BAREHF-FP: __VFP_FP__ 1
40
41// 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
42// 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
43// CHECK-V8-BAREHF-NEON-FP: __ARM_NEON__ 1
44// CHECK-V8-BAREHF-NEON-FP: __VFP_FP__ 1
45
Bernard Ogden18b57012013-10-29 09:47:51 +000046// RUN: %clang -target armv8a -mnocrc -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-NOCRC %s
47// CHECK-V8-NOCRC-NOT: __ARM_FEATURE_CRC32 1
48
Silviu Barangae5690462013-10-21 10:59:33 +000049// Check that -mhwdiv works properly for armv8/thumbv8 (enabled by default).
50
51// RUN: %clang -target armv8 -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8 %s
52// ARMV8:#define __ARM_ARCH_EXT_IDIV__ 1
53
54// RUN: %clang -target armv8 -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8 %s
55// THUMBV8:#define __ARM_ARCH_EXT_IDIV__ 1
56
57// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8-EABI %s
58// ARMV8-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
59
60// RUN: %clang -target armv8-eabi -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8-EABI %s
61// THUMBV8-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
62
63// RUN: %clang -target armv8 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=NONEHWDIV-ARMV8 %s
64// NONEHWDIV-ARMV8-NOT:#define __ARM_ARCH_EXT_IDIV__
65
66// RUN: %clang -target armv8 -mthumb -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=NONEHWDIV-THUMBV8 %s
67// NONEHWDIV-THUMBV8-NOT:#define __ARM_ARCH_EXT_IDIV__
68
69// RUN: %clang -target armv8 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBHWDIV-ARMV8 %s
70// THUMBHWDIV-ARMV8-NOT:#define __ARM_ARCH_EXT_IDIV__
71
72// RUN: %clang -target armv8 -mthumb -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=ARMHWDIV-THUMBV8 %s
73// ARMHWDIV-THUMBV8-NOT:#define __ARM_ARCH_EXT_IDIV__
74
75// RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A %s
76// ARMV8A:#define __ARM_ARCH_EXT_IDIV__ 1
77
78// RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A %s
79// THUMBV8A:#define __ARM_ARCH_EXT_IDIV__ 1
80
81// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A-EABI %s
82// ARMV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
83
84// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A-EABI %s
85// THUMBV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
86
Bradley Smith0f28f0c2014-01-20 10:52:00 +000087// RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-DEFS %s
88// CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4
89// CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4
90
91// RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTWCHAR %s
92// CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2
93
94// RUN: %clang -target arm-none-linux-gnu -fshort-enums -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTENUMS %s
95// CHECK-SHORTENUMS:#define __ARM_SIZEOF_MINIMAL_ENUM 1
Silviu Barangae5690462013-10-21 10:59:33 +000096
97// Test that -mhwdiv has the right effect for a target CPU which has hwdiv enabled by default.
98// RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-ARM %s
99// DEFAULTHWDIV-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
100
101// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-THUMB %s
102// DEFAULTHWDIV-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
103
104// RUN: %clang -target armv7 -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=ARMHWDIV-ARM %s
105// ARMHWDIV-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
106
107// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBHWDIV-THUMB %s
108// THUMBHWDIV-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
109
110// RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-THUMBHWDIV-ARM %s
111// DEFAULTHWDIV-THUMBHWDIV-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
112
113// RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-ARMHWDIV-THUMB %s
114// DEFAULTHWDIV-ARMHWDIV-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
115
116// RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-NONEHWDIV-ARM %s
117// DEFAULTHWDIV-NONEHWDIV-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
118
119// RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-NONEHWDIV-THUMB %s
120// DEFAULTHWDIV-NONEHWDIV-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
121
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000122
123// Check that -mfpu works properly for Cortex-A7 (enabled by default).
124// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s
125// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s
126// DEFAULTFPU-A7:#define __ARM_NEON__ 1
127// DEFAULTFPU-A7:#define __ARM_VFPV4__ 1
128
129// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A7 %s
130// 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
131// FPUNONE-A7-NOT:#define __ARM_NEON__ 1
132// FPUNONE-A7-NOT:#define __ARM_VFPV4__ 1
133
134// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A7 %s
135// 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
136// NONEON-A7-NOT:#define __ARM_NEON__ 1
137// NONEON-A7:#define __ARM_VFPV4__ 1
138
Amara Emersona1daec72013-11-25 13:18:59 +0000139// Check that -mfpu works properly for Cortex-A5 (enabled by default).
140// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s
141// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s
142// DEFAULTFPU-A5:#define __ARM_NEON__ 1
143// DEFAULTFPU-A5:#define __ARM_VFPV4__ 1
144
145// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A5 %s
146// 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
147// FPUNONE-A5-NOT:#define __ARM_NEON__ 1
148// FPUNONE-A5-NOT:#define __ARM_VFPV4__ 1
149
John Brawn5a589ad2015-06-05 13:34:11 +0000150// 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
151// 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 +0000152// NONEON-A5-NOT:#define __ARM_NEON__ 1
153// NONEON-A5:#define __ARM_VFPV4__ 1
154
Silviu Barangae5690462013-10-21 10:59:33 +0000155// FIXME: add check for further predefines
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000156// Test whether predefines are as expected when targeting ep9312.
157// RUN: %clang -target armv4t -mcpu=ep9312 -x c -E -dM %s -o - | FileCheck --check-prefix=A4T %s
158// A4T-NOT:#define __ARM_FEATURE_DSP
159
160// Test whether predefines are as expected when targeting arm10tdmi.
161// RUN: %clang -target armv5 -mcpu=arm10tdmi -x c -E -dM %s -o - | FileCheck --check-prefix=A5T %s
162// A5T-NOT:#define __ARM_FEATURE_DSP
163
Silviu Barangae5690462013-10-21 10:59:33 +0000164// Test whether predefines are as expected when targeting cortex-a5.
165// RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-ARM %s
166// A5-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000167// A5-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000168
169// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-THUMB %s
170// A5-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000171// A5-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000172
Amara Emersona1daec72013-11-25 13:18:59 +0000173// RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s
174// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s
175// A5:#define __ARM_ARCH 7
176// A5:#define __ARM_ARCH_7A__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000177// A5:#define __ARM_ARCH_PROFILE 'A'
James Molloy0ffb0932014-09-15 11:25:38 +0000178// A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN
179// A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000180// A5:#define __ARM_FEATURE_DSP
Amara Emersona1daec72013-11-25 13:18:59 +0000181
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000182// Test whether predefines are as expected when targeting cortex-a7.
183// RUN: %clang -target armv7 -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s
184// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s
185// A7:#define __ARM_ARCH 7
186// A7:#define __ARM_ARCH_7A__ 1
187// A7:#define __ARM_ARCH_EXT_IDIV__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000188// A7:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000189// A7:#define __ARM_FEATURE_DSP
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000190
Silviu Barangae5690462013-10-21 10:59:33 +0000191// Test whether predefines are as expected when targeting cortex-a8.
192// RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-ARM %s
193// A8-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000194// A8-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000195
196// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-THUMB %s
197// A8-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000198// A8-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000199
200// Test whether predefines are as expected when targeting cortex-a9.
201// RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-ARM %s
202// A9-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000203// A9-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000204
205// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-THUMB %s
206// A9-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000207// A9-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000208
Richard Barton3b82ed32013-11-22 11:53:28 +0000209
210// Check that -mfpu works properly for Cortex-A12 (enabled by default).
211// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s
212// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s
213// DEFAULTFPU-A12:#define __ARM_NEON__ 1
214// DEFAULTFPU-A12:#define __ARM_VFPV4__ 1
215
216// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A12 %s
217// 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
218// FPUNONE-A12-NOT:#define __ARM_NEON__ 1
219// FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1
220
221// Test whether predefines are as expected when targeting cortex-a12.
222// RUN: %clang -target armv7 -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=A12 %s
223// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=A12 %s
224// A12:#define __ARM_ARCH 7
225// A12:#define __ARM_ARCH_7A__ 1
226// A12:#define __ARM_ARCH_EXT_IDIV__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000227// A12:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000228// A12:#define __ARM_FEATURE_DSP
Richard Barton3b82ed32013-11-22 11:53:28 +0000229
Silviu Barangae5690462013-10-21 10:59:33 +0000230// Test whether predefines are as expected when targeting cortex-a15.
231// RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-ARM %s
232// A15-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000233// A15-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000234
235// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-THUMB %s
236// A15-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000237// A15-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000238
Renato Golin5886bc32014-10-13 10:22:48 +0000239// Check that -mfpu works properly for Cortex-A17 (enabled by default).
240// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s
241// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s
242// DEFAULTFPU-A17:#define __ARM_NEON__ 1
243// DEFAULTFPU-A17:#define __ARM_VFPV4__ 1
244
245// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A17 %s
246// 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
247// FPUNONE-A17-NOT:#define __ARM_NEON__ 1
248// FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1
249
250// Test whether predefines are as expected when targeting cortex-a17.
251// RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s
252// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s
253// A17:#define __ARM_ARCH 7
254// A17:#define __ARM_ARCH_7A__ 1
255// A17:#define __ARM_ARCH_EXT_IDIV__ 1
256// A17:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000257// A17:#define __ARM_FEATURE_DSP
Renato Golin5886bc32014-10-13 10:22:48 +0000258
Silviu Barangae5690462013-10-21 10:59:33 +0000259// Test whether predefines are as expected when targeting swift.
260// RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-ARM %s
261// SWIFT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000262// SWIFT:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000263
264// RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-THUMB %s
265// SWIFT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000266// SWIFT-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000267
268// Test whether predefines are as expected when targeting cortex-a53.
269// RUN: %clang -target armv8 -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-ARM %s
270// A53-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000271// A53-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000272
273// RUN: %clang -target armv8 -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-THUMB %s
274// A53-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000275// A53-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000276
Javed Absar879d18b82015-04-09 14:12:10 +0000277// Test whether predefines are as expected when targeting cortex-r4.
278// RUN: %clang -target armv7 -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-ARM %s
279// R4-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
280// R4-ARM:#define __ARM_FEATURE_DSP
281
282// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-THUMB %s
283// R4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
284// R4-THUMB:#define __ARM_FEATURE_DSP
285
286// Test whether predefines are as expected when targeting cortex-r4f.
287// RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-ARM %s
288// R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
289// R4F-ARM:#define __ARM_FEATURE_DSP
290
291// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-THUMB %s
292// R4F-THUMBT:#define __ARM_ARCH_EXT_IDIV__ 1
293// R4F-THUMB:#define __ARM_FEATURE_DSP
294
Silviu Barangae5690462013-10-21 10:59:33 +0000295// Test whether predefines are as expected when targeting cortex-r5.
296// RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-ARM %s
297// R5-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000298// R5-ARM:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000299
300// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-THUMB %s
301// R5-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000302// R5-THUMB:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000303
Bradley Smithd86d6702015-02-18 10:34:48 +0000304// Test whether predefines are as expected when targeting cortex-r7.
305// RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-ARM %s
306// R7-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
307// R7-ARM:#define __ARM_FEATURE_DSP
308
309// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-THUMB %s
310// R7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
311// R7-THUMB:#define __ARM_FEATURE_DSP
312
Silviu Barangae5690462013-10-21 10:59:33 +0000313// Test whether predefines are as expected when targeting cortex-m0.
314// 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 +0000315// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0plus -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
316// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m1 -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
317// 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 +0000318// M0-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000319// M0-THUMB-NOT:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000320
321// Test whether predefines are as expected when targeting cortex-m3.
322// 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 +0000323// 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 +0000324// M3-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000325// M3-THUMB-NOT:#define __ARM_FEATURE_DSP
Silviu Barangae5690462013-10-21 10:59:33 +0000326
327// Test whether predefines are as expected when targeting cortex-m4.
328// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck --check-prefix=M4-THUMB %s
329// M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000330// M4-THUMB:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000331
Oliver Stannardbfd3ea32014-10-01 09:03:02 +0000332// Test whether predefines are as expected when targeting cortex-m7.
333// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck --check-prefix=M7-THUMB %s
334// M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000335// M7-THUMB:#define __ARM_FEATURE_DSP
Oliver Stannardbfd3ea32014-10-01 09:03:02 +0000336
Ana Pazosdd6068d2013-12-06 22:43:17 +0000337// Test whether predefines are as expected when targeting krait.
338// RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-ARM %s
339// KRAIT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000340// KRAIT-ARM:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000341// KRAIT-ARM:#define __ARM_VFPV4__ 1
342
343// RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-THUMB %s
344// KRAIT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000345// KRAIT-THUMB:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000346// KRAIT-THUMB:#define __ARM_VFPV4__ 1
Vladimir Sukharevc6dab752015-05-14 08:25:18 +0000347
348// RUN: %clang -target armv8.1a-none-none-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V81A %s
349// CHECK-V81A: __ARM_ARCH 8
350// CHECK-V81A: __ARM_ARCH_8_1A__ 1
351// CHECK-V81A: #define __ARM_ARCH_PROFILE 'A'