clang 23.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 0, // hlsl_output
59 0, // hlsl_push_constant
60 // Wasm address space values for this target are dummy values,
61 // as it is only enabled for Wasm targets.
62 20, // wasm_funcref
63};
64
65class LLVM_LIBRARY_VISIBILITY TCETargetInfo : public TargetInfo {
66public:
67 TCETargetInfo(const llvm::Triple &Triple, const TargetOptions &)
68 : TargetInfo(Triple) {
69 TLSSupported = false;
70 IntWidth = 32;
72 PointerWidth = 32;
73 IntAlign = 32;
75 PointerAlign = 32;
76 SuitableAlign = 32;
81 FloatWidth = 32;
82 FloatAlign = 32;
83 DoubleWidth = 32;
84 DoubleAlign = 32;
85 LongDoubleWidth = 32;
86 LongDoubleAlign = 32;
87 FloatFormat = &llvm::APFloat::IEEEsingle();
88 DoubleFormat = &llvm::APFloat::IEEEsingle();
89 LongDoubleFormat = &llvm::APFloat::IEEEsingle();
90 resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-"
91 "i16:16:32-i32:32:32-i64:32:32-"
92 "f32:32:32-f64:32:32-v64:32:32-"
93 "v128:32:32-v256:32:32-v512:32:32-"
94 "v1024:32:32-a0:0:32-n32");
97 }
98
99 void getTargetDefines(const LangOptions &Opts,
100 MacroBuilder &Builder) const override;
101
102 bool hasFeature(StringRef Feature) const override { return Feature == "tce"; }
103
105 return {};
106 }
107
108 std::string_view getClobbers() const override { return ""; }
109
113
114 ArrayRef<const char *> getGCCRegNames() const override { return {}; }
115
116 bool validateAsmConstraint(const char *&Name,
117 TargetInfo::ConstraintInfo &info) const override {
118 return true;
119 }
120
122 return {};
123 }
124};
125
126class LLVM_LIBRARY_VISIBILITY TCELETargetInfo : public TCETargetInfo {
127public:
128 TCELETargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
129 : TCETargetInfo(Triple, Opts) {
130 BigEndian = false;
131
132 resetDataLayout("e-p:32:32:32-i1:8:8-i8:8:32-"
133 "i16:16:32-i32:32:32-i64:32:32-"
134 "f32:32:32-f64:32:32-v64:32:32-"
135 "v128:32:32-v256:32:32-v512:32:32-"
136 "v1024:32:32-a0:0:32-n32");
137 }
138
139 void getTargetDefines(const LangOptions &Opts,
140 MacroBuilder &Builder) const override;
141};
142} // namespace targets
143} // namespace clang
144#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:260
BuiltinVaListKind
The different kinds of __builtin_va_list types defined by the target implementation.
Definition TargetInfo.h:334
@ VoidPtrBuiltinVaList
typedef void* __builtin_va_list;
Definition TargetInfo.h:339
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:386
Options for controlling the target.
TCELETargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
Definition TCE.h:128
ArrayRef< const char * > getGCCRegNames() const override
Definition TCE.h:114
BuiltinVaListKind getBuiltinVaListKind() const override
Returns the kind of __builtin_va_list type that should be used with this target.
Definition TCE.h:110
TCETargetInfo(const llvm::Triple &Triple, const TargetOptions &)
Definition TCE.h:67
ArrayRef< TargetInfo::GCCRegAlias > getGCCRegAliases() const override
Definition TCE.h:121
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:104
std::string_view getClobbers() const override
Returns a string of target-specific clobbers, in LLVM format.
Definition TCE.h:108
bool validateAsmConstraint(const char *&Name, TargetInfo::ConstraintInfo &info) const override
Definition TCE.h:116
bool hasFeature(StringRef Feature) const override
Determine whether the given target has the given feature.
Definition TCE.h:102
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:144
const llvm::fltSemantics * LongDoubleFormat
Definition TargetInfo.h:144
const llvm::fltSemantics * FloatFormat
Definition TargetInfo.h:143