116 lines · plain
1// RUN: llvm-tblgen -gen-target-library-info -I %p/../../include %s | FileCheck %s2 3include "llvm/Analysis/TargetLibraryInfoImpl.td"4 5def cosf : TargetLibCall< "cosf", Flt, [Flt]>;6def sinf : TargetLibCall< "sinf", Flt, [Flt]>;7 8def fmaxf : TargetLibCall< "fmaxf", Floating, [Same, Same]>;9 10def printf : TargetLibCall< "printf", Int, [Ptr, Ellip]>;11 12def cabs : TargetLibCall< "cabs", ? /* Checked manually. */>;13 14// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_ENUM15// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_ENUM16// CHECK-NEXT: enum LibFunc : unsigned {17// CHECK-NEXT: NotLibFunc = 0,18// CHECK-NEXT: LibFunc_cosf,19// CHECK-NEXT: LibFunc_sinf,20// CHECK-NEXT: LibFunc_fmaxf,21// CHECK-NEXT: LibFunc_printf,22// CHECK-NEXT: LibFunc_cabs,23// CHECK-NEXT: NumLibFuncs,24// CHECK-NEXT: End_LibFunc = NumLibFuncs,25// CHECK-NEXT: Begin_LibFunc = LibFunc_cosf,26// CHECK-NEXT: };27// CHECK-NEXT: #endif28 29// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_STRING_TABLE30// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_STRING_TABLE31 32// CHECK: #ifdef __GNUC__33// CHECK-NEXT: #pragma GCC diagnostic push34// CHECK-NEXT: #pragma GCC diagnostic ignored "-Woverlength-strings"35// CHECK-NEXT: #endif36// CHECK-NEXT: constexpr char StandardNamesStrTableStorage[] =37// CHECK-NEXT: "\0"38// CHECK-NEXT: "cosf\0"39// CHECK-NEXT: "sinf\0"40// CHECK-NEXT: "fmaxf\0"41// CHECK-NEXT: "printf\0"42// CHECK-NEXT: "cabs\0"43// CHECK-NEXT: ;44// CHECK-NEXT: #ifdef __GNUC__45// CHECK-NEXT: #pragma GCC diagnostic pop46// CHECK-NEXT: #endif47 48// CHECK: const llvm::StringTable49// CHECK-NEXT: TargetLibraryInfoImpl::StandardNamesStrTable = StandardNamesStrTableStorage;50 51// CHECK: const llvm::StringTable::Offset TargetLibraryInfoImpl::StandardNamesOffsets[6] = {52// CHECK-NEXT: 0, //53// CHECK-NEXT: 1, // cosf54// CHECK-NEXT: 6, // sinf55// CHECK-NEXT: 11, // fmaxf56// CHECK-NEXT: 17, // printf57// CHECK-NEXT: 24, // cabs58// CHECK-NEXT: };59// CHECK-NEXT: const uint8_t TargetLibraryInfoImpl::StandardNamesSizeTable[6] = {60// CHECK-NEXT: 0,61// CHECK-NEXT: 4,62// CHECK-NEXT: 4,63// CHECK-NEXT: 5,64// CHECK-NEXT: 6,65// CHECK-NEXT: 4,66// CHECK-NEXT: };67// CHECK-NEXT: #endif68 69// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_IMPL_DECL70// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_IMPL_DECL71// CHECK-NEXT: LLVM_ABI static const llvm::StringTable StandardNamesStrTable;72// CHECK-NEXT: LLVM_ABI static const llvm::StringTable::Offset StandardNamesOffsets[6];73// CHECK-NEXT: LLVM_ABI static const uint8_t StandardNamesSizeTable[6];74// CHECK-NEXT: #endif75 76// CHECK: #ifdef GET_TARGET_LIBRARY_INFO_SIGNATURE_TABLE77// CHECK-NEXT: #undef GET_TARGET_LIBRARY_INFO_SIGNATURE_TABLE78// CHECK-NEXT: enum FuncArgTypeID : char {79// CHECK-NEXT: NoFuncArgType = 0,80// CHECK-NEXT: Void,81// CHECK-NEXT: Bool,82// CHECK-NEXT: Int16,83// CHECK-NEXT: Int32,84// CHECK-NEXT: Int,85// CHECK-NEXT: IntPlus,86// CHECK-NEXT: Long,87// CHECK-NEXT: IntX,88// CHECK-NEXT: Int64,89// CHECK-NEXT: LLong,90// CHECK-NEXT: SizeT,91// CHECK-NEXT: SSizeT,92// CHECK-NEXT: Flt,93// CHECK-NEXT: Dbl,94// CHECK-NEXT: LDbl,95// CHECK-NEXT: Floating,96// CHECK-NEXT: Ptr,97// CHECK-NEXT: Struct,98// CHECK-NEXT: Ellip,99// CHECK-NEXT: Same,100// CHECK-NEXT: };101// CHECK-NEXT: static const FuncArgTypeID SignatureTable[] = {102// CHECK-NEXT: /* 0 */ Int, Ptr, Ellip, NoFuncArgType,103// CHECK-NEXT: /* 4 */ Flt, Flt, NoFuncArgType,104// CHECK-NEXT: /* 7 */ Floating, Same, Same, NoFuncArgType,105// CHECK-NEXT: /* 11 */ Void, NoFuncArgType,106// CHECK-NEXT: };107// CHECK-NEXT: static const uint16_t SignatureOffset[] = {108// CHECK-NEXT: 11, //109// CHECK-NEXT: 4, // cosf110// CHECK-NEXT: 4, // sinf111// CHECK-NEXT: 7, // fmaxf112// CHECK-NEXT: 0, // printf113// CHECK-NEXT: 3, // cabs114// CHECK-NEXT: };115// CHECK-NEXT: #endif116