xref: /freebsd/contrib/llvm-project/clang/lib/Basic/Targets/Xtensa.cpp (revision 9c77fb6aaa366cbabc80ee1b834bcfe4df135491)
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 
19 using namespace clang;
20 using namespace clang::targets;
21 
22 void XtensaTargetInfo::getTargetDefines(const LangOptions &Opts,
23                                         MacroBuilder &Builder) const {
24   Builder.defineMacro("__xtensa__");
25   Builder.defineMacro("__XTENSA__");
26   if (BigEndian)
27     Builder.defineMacro("__XTENSA_EB__");
28   else
29     Builder.defineMacro("__XTENSA_EL__");
30   Builder.defineMacro("__XCHAL_HAVE_BE", BigEndian ? "1" : "0");
31   Builder.defineMacro("__XCHAL_HAVE_ABS");  // core arch
32   Builder.defineMacro("__XCHAL_HAVE_ADDX"); // core arch
33   Builder.defineMacro("__XCHAL_HAVE_L32R"); // core arch
34 }
35