blob: 640cf9e65c949c12529c2ebb228bb47ba2138146 [file] [log] [blame]
Richard Barton7dacc242015-10-21 10:03:55 +00001// RUN: %clang -target armv8a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V8A %s
2// CHECK-V8A: __ARMEL__ 1
3// CHECK-V8A: __ARM_ARCH 8
4// CHECK-V8A: __ARM_ARCH_8A__ 1
5// CHECK-V8A: __ARM_FEATURE_CRC32 1
6// CHECK-V8A: __ARM_FEATURE_DIRECTED_ROUNDING 1
7// CHECK-V8A: __ARM_FEATURE_NUMERIC_MAXMIN 1
8// CHECK-V8A: __ARM_FP 0xE
9// CHECK-V8A: __ARM_FP16_ARGS 1
10// CHECK-V8A: __ARM_FP16_FORMAT_IEEE 1
Joey Gouly1e8637b2013-09-18 10:07:09 +000011
12// RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7 %s
13// CHECK-V7: __ARMEL__ 1
14// CHECK-V7: __ARM_ARCH 7
15// CHECK-V7: __ARM_ARCH_7A__ 1
Nico Riecke6a158252014-02-16 07:29:41 +000016// CHECK-V7-NOT: __ARM_FEATURE_CRC32
James Molloy0ffb0932014-09-15 11:25:38 +000017// CHECK-V7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN
18// CHECK-V7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING
Richard Barton7dacc242015-10-21 10:03:55 +000019// CHECK-V7: __ARM_FP 0xC
Silviu Barangae5690462013-10-21 10:59:33 +000020
Tim Northover525c73c2015-07-21 21:47:33 +000021// RUN: %clang -target x86_64-apple-macosx10.10 -arch armv7s -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7S %s
22// CHECK-V7S: __ARMEL__ 1
23// CHECK-V7S: __ARM_ARCH 7
24// CHECK-V7S: __ARM_ARCH_7S__ 1
25// CHECK-V7S-NOT: __ARM_FEATURE_CRC32
26// CHECK-V7S-NOT: __ARM_FEATURE_NUMERIC_MAXMIN
27// CHECK-V7S-NOT: __ARM_FEATURE_DIRECTED_ROUNDING
Richard Barton7dacc242015-10-21 10:03:55 +000028// CHECK-V7S: __ARM_FP 0xE
Tim Northover525c73c2015-07-21 21:47:33 +000029
Bernard Ogdenda13af32013-10-24 18:32:51 +000030// RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF %s
31// CHECK-V8-BAREHF: __ARMEL__ 1
32// CHECK-V8-BAREHF: __ARM_ARCH 8
33// CHECK-V8-BAREHF: __ARM_ARCH_8A__ 1
34// CHECK-V8-BAREHF: __ARM_FEATURE_CRC32 1
James Molloy0ffb0932014-09-15 11:25:38 +000035// CHECK-V8-BAREHF: __ARM_FEATURE_DIRECTED_ROUNDING 1
36// CHECK-V8-BAREHF: __ARM_FEATURE_NUMERIC_MAXMIN 1
Richard Barton7dacc242015-10-21 10:03:55 +000037// CHECK-V8-BAREHP: __ARM_FP 0xE
Bernard Ogdenda13af32013-10-24 18:32:51 +000038// CHECK-V8-BAREHF: __ARM_NEON__ 1
Alexandros Lamprineasf5a8e6c2015-10-02 14:56:37 +000039// CHECK-V8-BAREHF: __ARM_PCS_VFP 1
Bernard Ogdenda13af32013-10-24 18:32:51 +000040// CHECK-V8-BAREHF: __VFP_FP__ 1
41
42// RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-FP %s
43// CHECK-V8-BAREHF-FP-NOT: __ARM_NEON__ 1
Richard Barton7dacc242015-10-21 10:03:55 +000044// CHECK-V8-BAREHP-FP: __ARM_FP 0xE
Bernard Ogdenda13af32013-10-24 18:32:51 +000045// CHECK-V8-BAREHF-FP: __VFP_FP__ 1
46
47// 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
48// 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
Richard Barton7dacc242015-10-21 10:03:55 +000049// CHECK-V8-BAREHP-NEON-FP: __ARM_FP 0xE
Bernard Ogdenda13af32013-10-24 18:32:51 +000050// CHECK-V8-BAREHF-NEON-FP: __ARM_NEON__ 1
51// CHECK-V8-BAREHF-NEON-FP: __VFP_FP__ 1
52
Bernard Ogden18b57012013-10-29 09:47:51 +000053// RUN: %clang -target armv8a -mnocrc -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-NOCRC %s
54// CHECK-V8-NOCRC-NOT: __ARM_FEATURE_CRC32 1
55
Silviu Barangae5690462013-10-21 10:59:33 +000056// Check that -mhwdiv works properly for armv8/thumbv8 (enabled by default).
57
58// RUN: %clang -target armv8 -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8 %s
59// ARMV8:#define __ARM_ARCH_EXT_IDIV__ 1
60
61// RUN: %clang -target armv8 -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8 %s
62// THUMBV8:#define __ARM_ARCH_EXT_IDIV__ 1
63
64// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8-EABI %s
65// ARMV8-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
66
67// RUN: %clang -target armv8-eabi -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8-EABI %s
68// THUMBV8-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
69
70// RUN: %clang -target armv8 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=NONEHWDIV-ARMV8 %s
71// NONEHWDIV-ARMV8-NOT:#define __ARM_ARCH_EXT_IDIV__
72
73// RUN: %clang -target armv8 -mthumb -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=NONEHWDIV-THUMBV8 %s
74// NONEHWDIV-THUMBV8-NOT:#define __ARM_ARCH_EXT_IDIV__
75
76// RUN: %clang -target armv8 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBHWDIV-ARMV8 %s
77// THUMBHWDIV-ARMV8-NOT:#define __ARM_ARCH_EXT_IDIV__
78
79// RUN: %clang -target armv8 -mthumb -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=ARMHWDIV-THUMBV8 %s
80// ARMHWDIV-THUMBV8-NOT:#define __ARM_ARCH_EXT_IDIV__
81
82// RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A %s
83// ARMV8A:#define __ARM_ARCH_EXT_IDIV__ 1
Richard Barton7dacc242015-10-21 10:03:55 +000084// ARMV8A: #define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +000085
86// RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A %s
87// THUMBV8A:#define __ARM_ARCH_EXT_IDIV__ 1
Richard Barton7dacc242015-10-21 10:03:55 +000088// THUMBV8A: #define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +000089
90// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A-EABI %s
91// ARMV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
Richard Barton7dacc242015-10-21 10:03:55 +000092// ARMV8A-EABI: #define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +000093
94// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A-EABI %s
95// THUMBV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
Richard Barton7dacc242015-10-21 10:03:55 +000096// THUMBV8A-EABI: #define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +000097
Bradley Smith0f28f0c2014-01-20 10:52:00 +000098// 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 +000099// CHECK-DEFS:#define __ARM_PCS 1
Bradley Smith0f28f0c2014-01-20 10:52:00 +0000100// CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4
101// CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4
102
Alexandros Lamprineasf5a8e6c2015-10-02 14:56:37 +0000103// RUN: %clang -target arm-none-linux-gnu -fno-math-errno -fno-signed-zeros\
104// RUN: -fno-trapping-math -fassociative-math -freciprocal-math\
105// RUN: -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s
106// RUN: %clang -target arm-none-linux-gnu -ffast-math -x c -E -dM %s -o -\
107// RUN: | FileCheck --check-prefix=CHECK-FASTMATH %s
108// CHECK-FASTMATH: __ARM_FP_FAST 1
109
Bradley Smith0f28f0c2014-01-20 10:52:00 +0000110// RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTWCHAR %s
111// CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2
112
113// RUN: %clang -target arm-none-linux-gnu -fshort-enums -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTENUMS %s
114// CHECK-SHORTENUMS:#define __ARM_SIZEOF_MINIMAL_ENUM 1
Silviu Barangae5690462013-10-21 10:59:33 +0000115
116// Test that -mhwdiv has the right effect for a target CPU which has hwdiv enabled by default.
117// RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-ARM %s
118// DEFAULTHWDIV-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
119
120// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-THUMB %s
121// DEFAULTHWDIV-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
122
123// RUN: %clang -target armv7 -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=ARMHWDIV-ARM %s
124// ARMHWDIV-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
125
126// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBHWDIV-THUMB %s
127// THUMBHWDIV-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
128
129// RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=thumb -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-THUMBHWDIV-ARM %s
130// DEFAULTHWDIV-THUMBHWDIV-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
131
132// RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=arm -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-ARMHWDIV-THUMB %s
133// DEFAULTHWDIV-ARMHWDIV-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
134
135// RUN: %clang -target arm -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-NONEHWDIV-ARM %s
136// DEFAULTHWDIV-NONEHWDIV-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
137
138// RUN: %clang -target arm -mthumb -mcpu=cortex-a15 -mhwdiv=none -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTHWDIV-NONEHWDIV-THUMB %s
139// DEFAULTHWDIV-NONEHWDIV-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
140
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000141
142// Check that -mfpu works properly for Cortex-A7 (enabled by default).
143// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s
144// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s
Richard Barton7dacc242015-10-21 10:03:55 +0000145// DEFAULTFPU-A7:#define __ARM_FP 0xE
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000146// DEFAULTFPU-A7:#define __ARM_NEON__ 1
147// DEFAULTFPU-A7:#define __ARM_VFPV4__ 1
148
149// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A7 %s
150// 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
Richard Barton7dacc242015-10-21 10:03:55 +0000151// FPUNONE-A7-NOT:#define __ARM_FP 0x{{.*}}
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000152// FPUNONE-A7-NOT:#define __ARM_NEON__ 1
153// FPUNONE-A7-NOT:#define __ARM_VFPV4__ 1
154
155// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A7 %s
156// 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
Richard Barton7dacc242015-10-21 10:03:55 +0000157// NONEON-A7:#define __ARM_FP 0xE
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000158// NONEON-A7-NOT:#define __ARM_NEON__ 1
159// NONEON-A7:#define __ARM_VFPV4__ 1
160
Amara Emersona1daec72013-11-25 13:18:59 +0000161// Check that -mfpu works properly for Cortex-A5 (enabled by default).
162// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s
163// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s
Richard Barton7dacc242015-10-21 10:03:55 +0000164// DEFAULTFPU-A5:#define __ARM_FP 0xE
Amara Emersona1daec72013-11-25 13:18:59 +0000165// DEFAULTFPU-A5:#define __ARM_NEON__ 1
166// DEFAULTFPU-A5:#define __ARM_VFPV4__ 1
167
168// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A5 %s
169// 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
Richard Barton7dacc242015-10-21 10:03:55 +0000170// FPUNONE-A5-NOT:#define __ARM_FP 0x{{.*}}
Amara Emersona1daec72013-11-25 13:18:59 +0000171// FPUNONE-A5-NOT:#define __ARM_NEON__ 1
172// FPUNONE-A5-NOT:#define __ARM_VFPV4__ 1
173
John Brawn5a589ad2015-06-05 13:34:11 +0000174// 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
175// 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
Richard Barton7dacc242015-10-21 10:03:55 +0000176// NONEON-A5:#define __ARM_FP 0xE
Amara Emersona1daec72013-11-25 13:18:59 +0000177// NONEON-A5-NOT:#define __ARM_NEON__ 1
178// NONEON-A5:#define __ARM_VFPV4__ 1
179
Silviu Barangae5690462013-10-21 10:59:33 +0000180// FIXME: add check for further predefines
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000181// Test whether predefines are as expected when targeting ep9312.
182// RUN: %clang -target armv4t -mcpu=ep9312 -x c -E -dM %s -o - | FileCheck --check-prefix=A4T %s
183// A4T-NOT:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000184// A4T-NOT:#define __ARM_FP 0x{{.*}}
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000185
186// Test whether predefines are as expected when targeting arm10tdmi.
187// RUN: %clang -target armv5 -mcpu=arm10tdmi -x c -E -dM %s -o - | FileCheck --check-prefix=A5T %s
188// A5T-NOT:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000189// A5T-NOT:#define __ARM_FP 0x{{.*}}
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000190
Silviu Barangae5690462013-10-21 10:59:33 +0000191// Test whether predefines are as expected when targeting cortex-a5.
192// RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-ARM %s
193// A5-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000194// A5-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000195// A5-ARM:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000196
197// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-THUMB %s
198// A5-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000199// A5-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000200// A5-THUMB:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000201
Amara Emersona1daec72013-11-25 13:18:59 +0000202// RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s
203// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s
204// A5:#define __ARM_ARCH 7
205// A5:#define __ARM_ARCH_7A__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000206// A5:#define __ARM_ARCH_PROFILE 'A'
James Molloy0ffb0932014-09-15 11:25:38 +0000207// A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN
208// A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000209// A5:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000210// A5:#define __ARM_FP 0xE
Amara Emersona1daec72013-11-25 13:18:59 +0000211
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000212// Test whether predefines are as expected when targeting cortex-a7.
Tim Northover6f3ff222015-10-30 16:30:27 +0000213// RUN: %clang -target armv7k -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s
214// RUN: %clang -target armv7k -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000215// A7:#define __ARM_ARCH 7
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000216// A7:#define __ARM_ARCH_EXT_IDIV__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000217// A7:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000218// A7:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000219// A7:#define __ARM_FP 0xE
Artyom Skrobov53b000a82013-11-21 14:04:38 +0000220
Silviu Barangae5690462013-10-21 10:59:33 +0000221// Test whether predefines are as expected when targeting cortex-a8.
222// RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-ARM %s
223// A8-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000224// A8-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000225// A8-ARM:#define __ARM_FP 0xC
Silviu Barangae5690462013-10-21 10:59:33 +0000226
227// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-THUMB %s
228// A8-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000229// A8-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000230// A8-THUMB:#define __ARM_FP 0xC
Silviu Barangae5690462013-10-21 10:59:33 +0000231
232// Test whether predefines are as expected when targeting cortex-a9.
233// RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-ARM %s
234// A9-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000235// A9-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000236// A9-ARM:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000237
238// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-THUMB %s
239// A9-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000240// A9-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000241// A9-THUMB:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000242
Richard Barton3b82ed32013-11-22 11:53:28 +0000243
244// Check that -mfpu works properly for Cortex-A12 (enabled by default).
245// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s
246// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s
Richard Barton7dacc242015-10-21 10:03:55 +0000247// DEFAULTFPU-A12:#define __ARM_FP 0xE
Richard Barton3b82ed32013-11-22 11:53:28 +0000248// DEFAULTFPU-A12:#define __ARM_NEON__ 1
249// DEFAULTFPU-A12:#define __ARM_VFPV4__ 1
250
251// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A12 %s
252// 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
Richard Barton7dacc242015-10-21 10:03:55 +0000253// FPUNONE-A12-NOT:#define __ARM_FP 0x{{.*}}
Richard Barton3b82ed32013-11-22 11:53:28 +0000254// FPUNONE-A12-NOT:#define __ARM_NEON__ 1
255// FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1
256
257// Test whether predefines are as expected when targeting cortex-a12.
258// RUN: %clang -target armv7 -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=A12 %s
259// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=A12 %s
260// A12:#define __ARM_ARCH 7
261// A12:#define __ARM_ARCH_7A__ 1
262// A12:#define __ARM_ARCH_EXT_IDIV__ 1
Saleem Abdulrasool52a5d412014-06-15 18:48:41 +0000263// A12:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000264// A12:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000265// A12:#define __ARM_FP 0xE
Richard Barton3b82ed32013-11-22 11:53:28 +0000266
Silviu Barangae5690462013-10-21 10:59:33 +0000267// Test whether predefines are as expected when targeting cortex-a15.
268// RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-ARM %s
269// A15-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000270// A15-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000271// A15-ARM:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000272
273// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-THUMB %s
274// A15-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000275// A15-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000276// A15-THUMB:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000277
Renato Golin5886bc32014-10-13 10:22:48 +0000278// Check that -mfpu works properly for Cortex-A17 (enabled by default).
279// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s
280// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s
Richard Barton7dacc242015-10-21 10:03:55 +0000281// DEFAULTFPU-A17:#define __ARM_FP 0xE
Renato Golin5886bc32014-10-13 10:22:48 +0000282// DEFAULTFPU-A17:#define __ARM_NEON__ 1
283// DEFAULTFPU-A17:#define __ARM_VFPV4__ 1
284
285// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A17 %s
286// 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
Richard Barton7dacc242015-10-21 10:03:55 +0000287// FPUNONE-A17-NOT:#define __ARM_FP 0x{{.*}}
Renato Golin5886bc32014-10-13 10:22:48 +0000288// FPUNONE-A17-NOT:#define __ARM_NEON__ 1
289// FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1
290
291// Test whether predefines are as expected when targeting cortex-a17.
292// RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s
293// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s
294// A17:#define __ARM_ARCH 7
295// A17:#define __ARM_ARCH_7A__ 1
296// A17:#define __ARM_ARCH_EXT_IDIV__ 1
297// A17:#define __ARM_ARCH_PROFILE 'A'
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000298// A17:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000299// A17:#define __ARM_FP 0xE
Renato Golin5886bc32014-10-13 10:22:48 +0000300
Silviu Barangae5690462013-10-21 10:59:33 +0000301// Test whether predefines are as expected when targeting swift.
302// RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-ARM %s
303// SWIFT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Richard Barton7dacc242015-10-21 10:03:55 +0000304// SWIFT-ARM:#define __ARM_FEATURE_DSP
305// SWIFT-ARM:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000306
307// RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-THUMB %s
308// SWIFT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000309// SWIFT-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000310// SWIFT-THUMB:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000311
312// Test whether predefines are as expected when targeting cortex-a53.
313// RUN: %clang -target armv8 -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-ARM %s
314// A53-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000315// A53-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000316// A53-ARM:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000317
318// RUN: %clang -target armv8 -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-THUMB %s
319// A53-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000320// A53-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000321// A53-THUMB:#define __ARM_FP 0xE
Silviu Barangae5690462013-10-21 10:59:33 +0000322
Javed Absar879d18b82015-04-09 14:12:10 +0000323// Test whether predefines are as expected when targeting cortex-r4.
324// RUN: %clang -target armv7 -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-ARM %s
325// R4-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
326// R4-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000327// R4-ARM-NOT:#define __ARM_FP 0x{{.*}}
Javed Absar879d18b82015-04-09 14:12:10 +0000328
329// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-THUMB %s
330// R4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
331// R4-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000332// R4-THUMB-NOT:#define __ARM_FP 0x{{.*}}
Javed Absar879d18b82015-04-09 14:12:10 +0000333
334// Test whether predefines are as expected when targeting cortex-r4f.
335// RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-ARM %s
336// R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__
337// R4F-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000338// R4F-ARM:#define __ARM_FP 0xC
Javed Absar879d18b82015-04-09 14:12:10 +0000339
340// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-THUMB %s
341// R4F-THUMBT:#define __ARM_ARCH_EXT_IDIV__ 1
342// R4F-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000343// R4F-THUMB:#define __ARM_FP 0xC
Javed Absar879d18b82015-04-09 14:12:10 +0000344
Silviu Barangae5690462013-10-21 10:59:33 +0000345// Test whether predefines are as expected when targeting cortex-r5.
346// RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-ARM %s
347// R5-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000348// R5-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000349// R5-ARM:#define __ARM_FP 0xC
Silviu Barangae5690462013-10-21 10:59:33 +0000350
351// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-THUMB %s
352// R5-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000353// R5-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000354// R5-THUMB:#define __ARM_FP 0xC
Silviu Barangae5690462013-10-21 10:59:33 +0000355
Bradley Smithd86d6702015-02-18 10:34:48 +0000356// Test whether predefines are as expected when targeting cortex-r7.
357// RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-ARM %s
358// R7-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
359// R7-ARM:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000360// R7-ARM:#define __ARM_FP 0xE
Bradley Smithd86d6702015-02-18 10:34:48 +0000361
362// RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-THUMB %s
363// R7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
364// R7-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000365// R7-THUMB:#define __ARM_FP 0xE
Bradley Smithd86d6702015-02-18 10:34:48 +0000366
Silviu Barangae5690462013-10-21 10:59:33 +0000367// Test whether predefines are as expected when targeting cortex-m0.
368// 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 +0000369// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0plus -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
370// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m1 -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s
371// 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 +0000372// M0-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000373// M0-THUMB-NOT:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000374// M0-THUMB-NOT:#define __ARM_FP 0x{{.*}}
Silviu Barangae5690462013-10-21 10:59:33 +0000375
376// Test whether predefines are as expected when targeting cortex-m3.
377// 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 +0000378// 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 +0000379// M3-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000380// M3-THUMB-NOT:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000381// M3-THUMB-NOT:#define __ARM_FP 0x{{.*}}
Silviu Barangae5690462013-10-21 10:59:33 +0000382
383// Test whether predefines are as expected when targeting cortex-m4.
384// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck --check-prefix=M4-THUMB %s
385// M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000386// M4-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000387// M4-THUMB:#define __ARM_FP 0x6
Ana Pazosdd6068d2013-12-06 22:43:17 +0000388
Oliver Stannardbfd3ea32014-10-01 09:03:02 +0000389// Test whether predefines are as expected when targeting cortex-m7.
390// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck --check-prefix=M7-THUMB %s
391// M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000392// M7-THUMB:#define __ARM_FEATURE_DSP
Richard Barton7dacc242015-10-21 10:03:55 +0000393// M7-THUMB:#define __ARM_FP 0xE
Oliver Stannardbfd3ea32014-10-01 09:03:02 +0000394
Ana Pazosdd6068d2013-12-06 22:43:17 +0000395// Test whether predefines are as expected when targeting krait.
396// RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-ARM %s
397// KRAIT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000398// KRAIT-ARM:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000399// KRAIT-ARM:#define __ARM_VFPV4__ 1
400
401// RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-THUMB %s
402// KRAIT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1
Sergey Dmitrouk745f5302014-11-25 08:57:36 +0000403// KRAIT-THUMB:#define __ARM_FEATURE_DSP
Ana Pazosdd6068d2013-12-06 22:43:17 +0000404// KRAIT-THUMB:#define __ARM_VFPV4__ 1
Vladimir Sukharevc6dab752015-05-14 08:25:18 +0000405
406// RUN: %clang -target armv8.1a-none-none-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V81A %s
407// CHECK-V81A: __ARM_ARCH 8
408// CHECK-V81A: __ARM_ARCH_8_1A__ 1
409// CHECK-V81A: #define __ARM_ARCH_PROFILE 'A'
Richard Barton7dacc242015-10-21 10:03:55 +0000410// CHECK-V81A: #define __ARM_FP 0xE