xref: /freebsd-src/contrib/llvm-project/clang/lib/Basic/Targets/XCore.cpp (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
10b57cec5SDimitry Andric //===--- XCore.cpp - Implement XCore target feature support ---------------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric //
90b57cec5SDimitry Andric // This file implements XCore TargetInfo objects.
100b57cec5SDimitry Andric //
110b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric 
130b57cec5SDimitry Andric #include "XCore.h"
140b57cec5SDimitry Andric #include "clang/Basic/Builtins.h"
150b57cec5SDimitry Andric #include "clang/Basic/MacroBuilder.h"
160b57cec5SDimitry Andric #include "clang/Basic/TargetBuiltins.h"
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric using namespace clang;
190b57cec5SDimitry Andric using namespace clang::targets;
200b57cec5SDimitry Andric 
21*bdd1243dSDimitry Andric static constexpr Builtin::Info BuiltinInfo[] = {
220b57cec5SDimitry Andric #define BUILTIN(ID, TYPE, ATTRS)                                               \
23*bdd1243dSDimitry Andric   {#ID, TYPE, ATTRS, nullptr, HeaderDesc::NO_HEADER, ALL_LANGUAGES},
240b57cec5SDimitry Andric #define LIBBUILTIN(ID, TYPE, ATTRS, HEADER)                                    \
25*bdd1243dSDimitry Andric   {#ID, TYPE, ATTRS, nullptr, HeaderDesc::HEADER, ALL_LANGUAGES},
260b57cec5SDimitry Andric #include "clang/Basic/BuiltinsXCore.def"
270b57cec5SDimitry Andric };
280b57cec5SDimitry Andric 
getTargetDefines(const LangOptions & Opts,MacroBuilder & Builder) const290b57cec5SDimitry Andric void XCoreTargetInfo::getTargetDefines(const LangOptions &Opts,
300b57cec5SDimitry Andric                                        MacroBuilder &Builder) const {
31fe6060f1SDimitry Andric   Builder.defineMacro("__xcore__");
320b57cec5SDimitry Andric   Builder.defineMacro("__XS1B__");
330b57cec5SDimitry Andric }
340b57cec5SDimitry Andric 
getTargetBuiltins() const350b57cec5SDimitry Andric ArrayRef<Builtin::Info> XCoreTargetInfo::getTargetBuiltins() const {
36*bdd1243dSDimitry Andric   return llvm::ArrayRef(BuiltinInfo,
37*bdd1243dSDimitry Andric                         clang::XCore::LastTSBuiltin - Builtin::FirstTSBuiltin);
380b57cec5SDimitry Andric }
39