xref: /llvm-project/clang/lib/Basic/Targets/Xtensa.cpp (revision 2d6e7c2b359d4cafca8eaca4c9ed308a3a8fa6c1)
1 //===--- Xtensa.cpp - Implement Xtensa target feature support -------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
6 // See https://llvm.org/LICENSE.txt for license information.
7 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //
9 //===----------------------------------------------------------------------===//
10 //
11 // This file implements Xtensa TargetInfo objects.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #include "Xtensa.h"
16 #include "clang/Basic/Builtins.h"
17 #include "clang/Basic/MacroBuilder.h"
18 #include "clang/Basic/TargetBuiltins.h"
19 
20 using namespace clang;
21 using namespace clang::targets;
22 
23 void XtensaTargetInfo::getTargetDefines(const LangOptions &Opts,
24                                         MacroBuilder &Builder) const {
25   Builder.defineMacro("__xtensa__");
26   Builder.defineMacro("__XTENSA__");
27   if (BigEndian)
28     Builder.defineMacro("__XTENSA_EB__");
29   else
30     Builder.defineMacro("__XTENSA_EL__");
31   Builder.defineMacro("__XCHAL_HAVE_BE", BigEndian ? "1" : "0");
32   Builder.defineMacro("__XCHAL_HAVE_ABS");  // core arch
33   Builder.defineMacro("__XCHAL_HAVE_ADDX"); // core arch
34   Builder.defineMacro("__XCHAL_HAVE_L32R"); // core arch
35 }
36