| // 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 |