1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
// RUN: llvm-tblgen -gen-target-library-info -I %p/../../include %s | FileCheck %s
include "llvm/Analysis/TargetLibraryInfoImpl.td"
def cosf : TargetLibCall< "cosf", Flt, [Flt]>;
def sinf : TargetLibCall< "sinf", Flt, [Flt]>;
def fmaxf : TargetLibCall< "fmaxf", Floating, [Same, Same]>;
def printf : TargetLibCall< "printf", Int, [Ptr, Ellip]>;
def cabs : TargetLibCall< "cabs", ? /* Checked manually. */>;
// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_ENUM
// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_ENUM
// CHECK-NEXT: enum LibFunc : unsigned {
// CHECK-NEXT: NotLibFunc = 0,
// CHECK-NEXT: LibFunc_cosf,
// CHECK-NEXT: LibFunc_sinf,
// CHECK-NEXT: LibFunc_fmaxf,
// CHECK-NEXT: LibFunc_printf,
// CHECK-NEXT: LibFunc_cabs,
// CHECK-NEXT: NumLibFuncs,
// CHECK-NEXT: End_LibFunc = NumLibFuncs,
// CHECK-NEXT: Begin_LibFunc = LibFunc_cosf,
// CHECK-NEXT: };
// CHECK-NEXT: #endif
// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_STRING_TABLE
// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_STRING_TABLE
// CHECK: #ifdef __GNUC__
// CHECK-NEXT: #pragma GCC diagnostic push
// CHECK-NEXT: #pragma GCC diagnostic ignored "-Woverlength-strings"
// CHECK-NEXT: #endif
// CHECK-NEXT: constexpr char StandardNamesStrTableStorage[] =
// CHECK-NEXT: "\0"
// CHECK-NEXT: "cosf\0"
// CHECK-NEXT: "sinf\0"
// CHECK-NEXT: "fmaxf\0"
// CHECK-NEXT: "printf\0"
// CHECK-NEXT: "cabs\0"
// CHECK-NEXT: ;
// CHECK-NEXT: #ifdef __GNUC__
// CHECK-NEXT: #pragma GCC diagnostic pop
// CHECK-NEXT: #endif
// CHECK: const llvm::StringTable
// CHECK-NEXT: TargetLibraryInfoImpl::StandardNamesStrTable = StandardNamesStrTableStorage;
// CHECK: const llvm::StringTable::Offset TargetLibraryInfoImpl::StandardNamesOffsets[6] = {
// CHECK-NEXT: 0, //
// CHECK-NEXT: 1, // cosf
// CHECK-NEXT: 6, // sinf
// CHECK-NEXT: 11, // fmaxf
// CHECK-NEXT: 17, // printf
// CHECK-NEXT: 24, // cabs
// CHECK-NEXT: };
// CHECK-NEXT: const uint8_t TargetLibraryInfoImpl::StandardNamesSizeTable[6] = {
// CHECK-NEXT: 0,
// CHECK-NEXT: 4,
// CHECK-NEXT: 4,
// CHECK-NEXT: 5,
// CHECK-NEXT: 6,
// CHECK-NEXT: 4,
// CHECK-NEXT: };
// CHECK-NEXT: #endif
// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_IMPL_DECL
// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_IMPL_DECL
// CHECK-NEXT: LLVM_ABI static const llvm::StringTable StandardNamesStrTable;
// CHECK-NEXT: LLVM_ABI static const llvm::StringTable::Offset StandardNamesOffsets[6];
// CHECK-NEXT: LLVM_ABI static const uint8_t StandardNamesSizeTable[6];
// CHECK-NEXT: #endif
// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_SIGNATURE_TABLE
// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_SIGNATURE_TABLE
// CHECK-NEXT: enum FuncArgTypeID : char {
// CHECK-NEXT: NoFuncArgType = 0,
// CHECK-NEXT: Void,
// CHECK-NEXT: Bool,
// CHECK-NEXT: Int16,
// CHECK-NEXT: Int32,
// CHECK-NEXT: Int,
// CHECK-NEXT: IntPlus,
// CHECK-NEXT: Long,
// CHECK-NEXT: IntX,
// CHECK-NEXT: Int64,
// CHECK-NEXT: LLong,
// CHECK-NEXT: SizeT,
// CHECK-NEXT: SSizeT,
// CHECK-NEXT: Flt,
// CHECK-NEXT: Dbl,
// CHECK-NEXT: LDbl,
// CHECK-NEXT: Floating,
// CHECK-NEXT: Ptr,
// CHECK-NEXT: Struct,
// CHECK-NEXT: Ellip,
// CHECK-NEXT: Same,
// CHECK-NEXT: };
// CHECK-NEXT: static const FuncArgTypeID SignatureTable[] = {
// CHECK-NEXT: /* 0 */ Int, Ptr, Ellip, NoFuncArgType,
// CHECK-NEXT: /* 4 */ Flt, Flt, NoFuncArgType,
// CHECK-NEXT: /* 7 */ Floating, Same, Same, NoFuncArgType,
// CHECK-NEXT: /* 11 */ Void, NoFuncArgType,
// CHECK-NEXT: };
// CHECK-NEXT: static const uint16_t SignatureOffset[] = {
// CHECK-NEXT: 11, //
// CHECK-NEXT: 4, // cosf
// CHECK-NEXT: 4, // sinf
// CHECK-NEXT: 7, // fmaxf
// CHECK-NEXT: 0, // printf
// CHECK-NEXT: 3, // cabs
// CHECK-NEXT: };
// CHECK-NEXT: #endif
|