Coverage Report

Created: 2021-01-19 06:58

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/Basic/Targets/TCE.h
Line
Count
Source (jump to first uncovered line)
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
16
#include "clang/Basic/TargetInfo.h"
17
#include "clang/Basic/TargetOptions.h"
18
#include "llvm/ADT/Triple.h"
19
#include "llvm/Support/Compiler.h"
20
21
namespace clang {
22
namespace 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
32
static 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, // ptr32_sptr
46
    0, // ptr32_uptr
47
    0, // ptr64
48
};
49
50
class LLVM_LIBRARY_VISIBILITY TCETargetInfo : public TargetInfo {
51
public:
52
  TCETargetInfo(const llvm::Triple &Triple, const TargetOptions &)
53
6
      : TargetInfo(Triple) {
54
6
    TLSSupported = false;
55
6
    IntWidth = 32;
56
6
    LongWidth = LongLongWidth = 32;
57
6
    PointerWidth = 32;
58
6
    IntAlign = 32;
59
6
    LongAlign = LongLongAlign = 32;
60
6
    PointerAlign = 32;
61
6
    SuitableAlign = 32;
62
6
    SizeType = UnsignedInt;
63
6
    IntMaxType = SignedLong;
64
6
    IntPtrType = SignedInt;
65
6
    PtrDiffType = SignedInt;
66
6
    FloatWidth = 32;
67
6
    FloatAlign = 32;
68
6
    DoubleWidth = 32;
69
6
    DoubleAlign = 32;
70
6
    LongDoubleWidth = 32;
71
6
    LongDoubleAlign = 32;
72
6
    FloatFormat = &llvm::APFloat::IEEEsingle();
73
6
    DoubleFormat = &llvm::APFloat::IEEEsingle();
74
6
    LongDoubleFormat = &llvm::APFloat::IEEEsingle();
75
6
    resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-"
76
6
                    "i16:16:32-i32:32:32-i64:32:32-"
77
6
                    "f32:32:32-f64:32:32-v64:32:32-"
78
6
                    "v128:32:32-v256:32:32-v512:32:32-"
79
6
                    "v1024:32:32-a0:0:32-n32");
80
6
    AddrSpaceMap = &TCEOpenCLAddrSpaceMap;
81
6
    UseAddrSpaceMapMangling = true;
82
6
  }
clang::targets::TCETargetInfo::TCETargetInfo(llvm::Triple const&, clang::TargetOptions const&)
Line
Count
Source
53
5
      : TargetInfo(Triple) {
54
5
    TLSSupported = false;
55
5
    IntWidth = 32;
56
5
    LongWidth = LongLongWidth = 32;
57
5
    PointerWidth = 32;
58
5
    IntAlign = 32;
59
5
    LongAlign = LongLongAlign = 32;
60
5
    PointerAlign = 32;
61
5
    SuitableAlign = 32;
62
5
    SizeType = UnsignedInt;
63
5
    IntMaxType = SignedLong;
64
5
    IntPtrType = SignedInt;
65
5
    PtrDiffType = SignedInt;
66
5
    FloatWidth = 32;
67
5
    FloatAlign = 32;
68
5
    DoubleWidth = 32;
69
5
    DoubleAlign = 32;
70
5
    LongDoubleWidth = 32;
71
5
    LongDoubleAlign = 32;
72
5
    FloatFormat = &llvm::APFloat::IEEEsingle();
73
5
    DoubleFormat = &llvm::APFloat::IEEEsingle();
74
5
    LongDoubleFormat = &llvm::APFloat::IEEEsingle();
75
5
    resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-"
76
5
                    "i16:16:32-i32:32:32-i64:32:32-"
77
5
                    "f32:32:32-f64:32:32-v64:32:32-"
78
5
                    "v128:32:32-v256:32:32-v512:32:32-"
79
5
                    "v1024:32:32-a0:0:32-n32");
80
5
    AddrSpaceMap = &TCEOpenCLAddrSpaceMap;
81
5
    UseAddrSpaceMapMangling = true;
82
5
  }
clang::targets::TCETargetInfo::TCETargetInfo(llvm::Triple const&, clang::TargetOptions const&)
Line
Count
Source
53
1
      : TargetInfo(Triple) {
54
1
    TLSSupported = false;
55
1
    IntWidth = 32;
56
1
    LongWidth = LongLongWidth = 32;
57
1
    PointerWidth = 32;
58
1
    IntAlign = 32;
59
1
    LongAlign = LongLongAlign = 32;
60
1
    PointerAlign = 32;
61
1
    SuitableAlign = 32;
62
1
    SizeType = UnsignedInt;
63
1
    IntMaxType = SignedLong;
64
1
    IntPtrType = SignedInt;
65
1
    PtrDiffType = SignedInt;
66
1
    FloatWidth = 32;
67
1
    FloatAlign = 32;
68
1
    DoubleWidth = 32;
69
1
    DoubleAlign = 32;
70
1
    LongDoubleWidth = 32;
71
1
    LongDoubleAlign = 32;
72
1
    FloatFormat = &llvm::APFloat::IEEEsingle();
73
1
    DoubleFormat = &llvm::APFloat::IEEEsingle();
74
1
    LongDoubleFormat = &llvm::APFloat::IEEEsingle();
75
1
    resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-"
76
1
                    "i16:16:32-i32:32:32-i64:32:32-"
77
1
                    "f32:32:32-f64:32:32-v64:32:32-"
78
1
                    "v128:32:32-v256:32:32-v512:32:32-"
79
1
                    "v1024:32:32-a0:0:32-n32");
80
1
    AddrSpaceMap = &TCEOpenCLAddrSpaceMap;
81
1
    UseAddrSpaceMapMangling = true;
82
1
  }
83
84
  void getTargetDefines(const LangOptions &Opts,
85
                        MacroBuilder &Builder) const override;
86
87
0
  bool hasFeature(StringRef Feature) const override { return Feature == "tce"; }
88
89
6
  ArrayRef<Builtin::Info> getTargetBuiltins() const override { return None; }
90
91
0
  const char *getClobbers() const override { return ""; }
92
93
3
  BuiltinVaListKind getBuiltinVaListKind() const override {
94
3
    return TargetInfo::VoidPtrBuiltinVaList;
95
3
  }
96
97
0
  ArrayRef<const char *> getGCCRegNames() const override { return None; }
98
99
  bool validateAsmConstraint(const char *&Name,
100
0
                             TargetInfo::ConstraintInfo &info) const override {
101
0
    return true;
102
0
  }
103
104
0
  ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override {
105
0
    return None;
106
0
  }
107
};
108
109
class LLVM_LIBRARY_VISIBILITY TCELETargetInfo : public TCETargetInfo {
110
public:
111
  TCELETargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
112
1
      : TCETargetInfo(Triple, Opts) {
113
1
    BigEndian = false;
114
115
1
    resetDataLayout("e-p:32:32:32-i1:8:8-i8:8:32-"
116
1
                    "i16:16:32-i32:32:32-i64:32:32-"
117
1
                    "f32:32:32-f64:32:32-v64:32:32-"
118
1
                    "v128:32:32-v256:32:32-v512:32:32-"
119
1
                    "v1024:32:32-a0:0:32-n32");
120
1
  }
clang::targets::TCELETargetInfo::TCELETargetInfo(llvm::Triple const&, clang::TargetOptions const&)
Line
Count
Source
112
1
      : TCETargetInfo(Triple, Opts) {
113
1
    BigEndian = false;
114
115
1
    resetDataLayout("e-p:32:32:32-i1:8:8-i8:8:32-"
116
1
                    "i16:16:32-i32:32:32-i64:32:32-"
117
1
                    "f32:32:32-f64:32:32-v64:32:32-"
118
1
                    "v128:32:32-v256:32:32-v512:32:32-"
119
1
                    "v1024:32:32-a0:0:32-n32");
120
1
  }
Unexecuted instantiation: clang::targets::TCELETargetInfo::TCELETargetInfo(llvm::Triple const&, clang::TargetOptions const&)
121
122
  void getTargetDefines(const LangOptions &Opts,
123
                        MacroBuilder &Builder) const override;
124
};
125
} // namespace targets
126
} // namespace clang
127
#endif // LLVM_CLANG_LIB_BASIC_TARGETS_TCE_H