aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/TableGen/TargetLibraryInfo.td
blob: ca6d16e236bda76825266ad03c9d083291c65b38 (plain)
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