xref: /freebsd/contrib/llvm-project/clang/lib/Basic/Targets/XCore.cpp (revision 700637cbb5e582861067a11aaca4d053546871d2)
1 //===--- XCore.cpp - Implement XCore target feature support ---------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file implements XCore TargetInfo objects.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #include "XCore.h"
14 #include "clang/Basic/Builtins.h"
15 #include "clang/Basic/MacroBuilder.h"
16 #include "clang/Basic/TargetBuiltins.h"
17 
18 using namespace clang;
19 using namespace clang::targets;
20 
21 static constexpr int NumBuiltins =
22     XCore::LastTSBuiltin - Builtin::FirstTSBuiltin;
23 
24 static constexpr llvm::StringTable BuiltinStrings =
25     CLANG_BUILTIN_STR_TABLE_START
26 #define BUILTIN CLANG_BUILTIN_STR_TABLE
27 #include "clang/Basic/BuiltinsXCore.def"
28     ;
29 
30 static constexpr auto BuiltinInfos = Builtin::MakeInfos<NumBuiltins>({
31 #define BUILTIN CLANG_BUILTIN_ENTRY
32 #define LIBBUILTIN CLANG_LIBBUILTIN_ENTRY
33 #include "clang/Basic/BuiltinsXCore.def"
34 });
35 
getTargetDefines(const LangOptions & Opts,MacroBuilder & Builder) const36 void XCoreTargetInfo::getTargetDefines(const LangOptions &Opts,
37                                        MacroBuilder &Builder) const {
38   Builder.defineMacro("__xcore__");
39   Builder.defineMacro("__XS1B__");
40 }
41 
42 llvm::SmallVector<Builtin::InfosShard>
getTargetBuiltins() const43 XCoreTargetInfo::getTargetBuiltins() const {
44   return {{&BuiltinStrings, BuiltinInfos}};
45 }
46