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