53 lines · cpp
1//===--- VE.cpp - Implement VE 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements VE TargetInfo objects.10//11//===----------------------------------------------------------------------===//12 13#include "VE.h"14#include "clang/Basic/Builtins.h"15#include "clang/Basic/MacroBuilder.h"16#include "clang/Basic/TargetBuiltins.h"17 18using namespace clang;19using namespace clang::targets;20 21static constexpr int NumBuiltins =22 clang::VE::LastTSBuiltin - Builtin::FirstTSBuiltin;23 24static constexpr llvm::StringTable BuiltinStrings =25 CLANG_BUILTIN_STR_TABLE_START26#define BUILTIN CLANG_BUILTIN_STR_TABLE27#include "clang/Basic/BuiltinsVE.def"28 ;29 30static constexpr auto BuiltinInfos = Builtin::MakeInfos<NumBuiltins>({31#define BUILTIN CLANG_BUILTIN_ENTRY32#include "clang/Basic/BuiltinsVE.def"33});34 35void VETargetInfo::getTargetDefines(const LangOptions &Opts,36 MacroBuilder &Builder) const {37 Builder.defineMacro("__ve", "1");38 Builder.defineMacro("__ve__", "1");39 Builder.defineMacro("__NEC__", "1");40 // FIXME: define __FAST_MATH__ 1 if -ffast-math is enabled41 // FIXME: define __OPTIMIZE__ n if -On is enabled42 // FIXME: define __VECTOR__ n 1 if automatic vectorization is enabled43 44 Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");45 Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");46 Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");47 Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");48}49 50llvm::SmallVector<Builtin::InfosShard> VETargetInfo::getTargetBuiltins() const {51 return {{&BuiltinStrings, BuiltinInfos}};52}53