xref: /llvm-project/clang/test/Preprocessor/is_target_arm.c (revision 2cfa11a52457061cc264ab14ea3fe9b7037406a9)
1*2cfa11a5SAlex Lorenz // RUN: %clang_cc1 -fsyntax-only -triple thumbv7--windows-msvc19.11.0 -verify %s
2*2cfa11a5SAlex Lorenz // RUN: %clang_cc1 -fsyntax-only -triple armv7--windows-msvc19.11.0 -DARM -verify %s
3*2cfa11a5SAlex Lorenz // expected-no-diagnostics
4*2cfa11a5SAlex Lorenz 
5*2cfa11a5SAlex Lorenz // ARM does match arm and thumb.
6*2cfa11a5SAlex Lorenz #if !__is_target_arch(arm)
7*2cfa11a5SAlex Lorenz   #error "mismatching arch"
8*2cfa11a5SAlex Lorenz #endif
9*2cfa11a5SAlex Lorenz 
10*2cfa11a5SAlex Lorenz #if __is_target_arch(armeb) || __is_target_arch(armebv7) || __is_target_arch(thumbeb) || __is_target_arch(thumbebv7)
11*2cfa11a5SAlex Lorenz   #error "mismatching arch"
12*2cfa11a5SAlex Lorenz #endif
13*2cfa11a5SAlex Lorenz 
14*2cfa11a5SAlex Lorenz // ARMV7 does match armv7 and thumbv7.
15*2cfa11a5SAlex Lorenz #if !__is_target_arch(armv7)
16*2cfa11a5SAlex Lorenz   #error "mismatching arch"
17*2cfa11a5SAlex Lorenz #endif
18*2cfa11a5SAlex Lorenz 
19*2cfa11a5SAlex Lorenz // ARMV6 does not match armv7 or thumbv7.
20*2cfa11a5SAlex Lorenz #if __is_target_arch(armv6)
21*2cfa11a5SAlex Lorenz   #error "mismatching arch"
22*2cfa11a5SAlex Lorenz #endif
23*2cfa11a5SAlex Lorenz 
24*2cfa11a5SAlex Lorenz #if __is_target_arch(arm64)
25*2cfa11a5SAlex Lorenz   #error "mismatching arch"
26*2cfa11a5SAlex Lorenz #endif
27*2cfa11a5SAlex Lorenz 
28*2cfa11a5SAlex Lorenz #ifndef ARM
29*2cfa11a5SAlex Lorenz 
30*2cfa11a5SAlex Lorenz // Allow checking for precise arch + subarch.
31*2cfa11a5SAlex Lorenz #if !__is_target_arch(thumbv7)
32*2cfa11a5SAlex Lorenz   #error "mismatching arch"
33*2cfa11a5SAlex Lorenz #endif
34*2cfa11a5SAlex Lorenz 
35*2cfa11a5SAlex Lorenz // But also allow checking for the arch without subarch.
36*2cfa11a5SAlex Lorenz #if !__is_target_arch(thumb)
37*2cfa11a5SAlex Lorenz   #error "mismatching arch"
38*2cfa11a5SAlex Lorenz #endif
39*2cfa11a5SAlex Lorenz 
40*2cfa11a5SAlex Lorenz // Same arch with a different subarch doesn't match.
41*2cfa11a5SAlex Lorenz #if __is_target_arch(thumbv6)
42*2cfa11a5SAlex Lorenz   #error "mismatching arch"
43*2cfa11a5SAlex Lorenz #endif
44*2cfa11a5SAlex Lorenz 
45*2cfa11a5SAlex Lorenz #else
46*2cfa11a5SAlex Lorenz 
47*2cfa11a5SAlex Lorenz #if __is_target_arch(thumbv7) || __is_target_arch(thumb)
48*2cfa11a5SAlex Lorenz   #error "mismatching arch"
49*2cfa11a5SAlex Lorenz #endif
50*2cfa11a5SAlex Lorenz 
51*2cfa11a5SAlex Lorenz #endif
52