clang 22.0.0git
TCE.h
Go to the documentation of this file.
1//===--- TCE.h - Declare TCE target feature support -------------*- C++ -*-===//
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 declares TCE TargetInfo objects.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_TCE_H
14#define LLVM_CLANG_LIB_BASIC_TARGETS_TCE_H
15
18#include "llvm/Support/Compiler.h"
19#include "llvm/TargetParser/Triple.h"
20
21namespace clang {
22namespace targets {
23
24// llvm and clang cannot be used directly to output native binaries for
25// target, but is used to compile C code to llvm bitcode with correct
26// type and alignment information.
27//
28// TCE uses the llvm bitcode as input and uses it for generating customized
29// target processor and program binary. TCE co-design environment is
30// publicly available in http://tce.cs.tut.fi
31
32static const unsigned TCEOpenCLAddrSpaceMap[] = {
33 0, // Default
34 3, // opencl_global
35 4, // opencl_local
36 5, // opencl_constant
37 0, // opencl_private
38 1, // opencl_global_device
39 1, // opencl_global_host
40 // FIXME: generic has to be added to the target
41 0, // opencl_generic
42 0, // cuda_device
43 0, // cuda_constant
44 0, // cuda_shared
45 0, // sycl_global
46 0, // sycl_global_device
47 0, // sycl_global_host
48 0, // sycl_local
49 0, // sycl_private
50 0, // ptr32_sptr
51 0, // ptr32_uptr
52 0, // ptr64
53 0, // hlsl_groupshared
54 0, // hlsl_constant
55 0, // hlsl_private
56 0, // hlsl_device
57 0, // hlsl_input
58 // Wasm address space values for this target are dummy values,
59 // as it is only enabled for Wasm targets.
60 20, // wasm_funcref
61};
62
63class LLVM_LIBRARY_VISIBILITY TCETargetInfo : public TargetInfo {
64public:
65 TCETargetInfo(const llvm::Triple &Triple, const TargetOptions &)
66 : TargetInfo(Triple) {
67 TLSSupported = false;
68 IntWidth = 32;
70 PointerWidth = 32;
71 IntAlign = 32;
73 PointerAlign = 32;
74 SuitableAlign = 32;
79 FloatWidth = 32;
80 FloatAlign = 32;
81 DoubleWidth = 32;
82 DoubleAlign = 32;
83 LongDoubleWidth = 32;
84 LongDoubleAlign = 32;
85 FloatFormat = &llvm::APFloat::IEEEsingle();
86 DoubleFormat = &llvm::APFloat::IEEEsingle();
87 LongDoubleFormat = &llvm::APFloat::IEEEsingle();
88 resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-"
89 "i16:16:32-i32:32:32-i64:32:32-"
90 "f32:32:32-f64:32:32-v64:32:32-"
91 "v128:32:32-v256:32:32-v512:32:32-"
92 "v1024:32:32-a0:0:32-n32");
95 }
96
97 void getTargetDefines(const LangOptions &Opts,
98 MacroBuilder &Builder) const override;
99
100 bool hasFeature(StringRef Feature) const override { return Feature == "tce"; }
101
103 return {};
104 }
105
106 std::string_view getClobbers() const override { return ""; }
107
111
112 ArrayRef<const char *> getGCCRegNames() const override { return {}; }
113
114 bool validateAsmConstraint(const char *&Name,
115 TargetInfo::ConstraintInfo &info) const override {
116 return true;
117 }
118
120 return {};
121 }
122};
123
124class LLVM_LIBRARY_VISIBILITY TCELETargetInfo : public TCETargetInfo {
125public:
126 TCELETargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
127 : TCETargetInfo(Triple, Opts) {
128 BigEndian = false;
129
130 resetDataLayout("e-p:32:32:32-i1:8:8-i8:8:32-"
131 "i16:16:32-i32:32:32-i64:32:32-"
132 "f32:32:32-f64:32:32-v64:32:32-"
133 "v128:32:32-v256:32:32-v512:32:32-"
134 "v1024:32:32-a0:0:32-n32");
135 }
136
137 void getTargetDefines(const LangOptions &Opts,
138 MacroBuilder &Builder) const override;
139};
140} // namespace targets
141} // namespace clang
142#endif // LLVM_CLANG_LIB_BASIC_TARGETS_TCE_H
Defines the clang::TargetOptions class.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
TargetInfo(const llvm::Triple &T)
const LangASMap * AddrSpaceMap
Definition TargetInfo.h:259
BuiltinVaListKind
The different kinds of __builtin_va_list types defined by the target implementation.
Definition TargetInfo.h:333
@ VoidPtrBuiltinVaList
typedef void* __builtin_va_list;
Definition TargetInfo.h:338
void resetDataLayout(StringRef DL)
Set the data layout to the given string.
bool UseAddrSpaceMapMangling
Specify if mangling based on address space map should be used or not for language specific address sp...
Definition TargetInfo.h:385
Options for controlling the target.
TCELETargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
Definition TCE.h:126
ArrayRef< const char * > getGCCRegNames() const override
Definition TCE.h:112
BuiltinVaListKind getBuiltinVaListKind() const override
Returns the kind of __builtin_va_list type that should be used with this target.
Definition TCE.h:108
TCETargetInfo(const llvm::Triple &Triple, const TargetOptions &)
Definition TCE.h:65
ArrayRef< TargetInfo::GCCRegAlias > getGCCRegAliases() const override
Definition TCE.h:119
llvm::SmallVector< Builtin::InfosShard > getTargetBuiltins() const override
Return information about target-specific builtins for the current primary target, and info about whic...
Definition TCE.h:102
std::string_view getClobbers() const override
Returns a string of target-specific clobbers, in LLVM format.
Definition TCE.h:106
bool validateAsmConstraint(const char *&Name, TargetInfo::ConstraintInfo &info) const override
Definition TCE.h:114
bool hasFeature(StringRef Feature) const override
Determine whether the given target has the given feature.
Definition TCE.h:100
Defines the clang::TargetInfo interface.
static const unsigned TCEOpenCLAddrSpaceMap[]
Definition TCE.h:32
The JSON file list parser is used to communicate input to InstallAPI.
const llvm::fltSemantics * DoubleFormat
Definition TargetInfo.h:143
const llvm::fltSemantics * LongDoubleFormat
Definition TargetInfo.h:143
const llvm::fltSemantics * FloatFormat
Definition TargetInfo.h:142