diff options
Diffstat (limited to 'lib')
65 files changed, 2235 insertions, 619 deletions
diff --git a/lib/clang/freebsd_cc_version.h b/lib/clang/freebsd_cc_version.h index e7a5706..1b075f9 100644 --- a/lib/clang/freebsd_cc_version.h +++ b/lib/clang/freebsd_cc_version.h @@ -1,3 +1,3 @@ /* $FreeBSD$ */ -#define FREEBSD_CC_VERSION 1100504 +#define FREEBSD_CC_VERSION 1100505 diff --git a/lib/clang/headers/Makefile b/lib/clang/headers/Makefile index be03a70..3e401ef 100644 --- a/lib/clang/headers/Makefile +++ b/lib/clang/headers/Makefile @@ -4,7 +4,7 @@ .PATH: ${CLANG_SRCS}/lib/Headers -INCSDIR= ${LIBDIR}/clang/4.0.0/include +INCSDIR= ${LIBDIR}/clang/5.0.1/include GENINCS+= arm_neon.h @@ -37,10 +37,12 @@ INCS+= avx512vlbwintrin.h INCS+= avx512vlcdintrin.h INCS+= avx512vldqintrin.h INCS+= avx512vlintrin.h +INCS+= avx512vpopcntdqintrin.h INCS+= avxintrin.h INCS+= bmi2intrin.h INCS+= bmiintrin.h INCS+= clflushoptintrin.h +INCS+= clzerointrin.h INCS+= cpuid.h INCS+= emmintrin.h INCS+= f16cintrin.h @@ -51,6 +53,7 @@ INCS+= htmintrin.h INCS+= htmxlintrin.h INCS+= ia32intrin.h INCS+= immintrin.h +INCS+= lwpintrin.h INCS+= lzcntintrin.h INCS+= mm3dnow.h INCS+= mm_malloc.h @@ -84,6 +87,25 @@ INCS+= xsavesintrin.h INCS+= xtestintrin.h INCS+= ${GENINCS} +# Headers which possibly conflict with our own versions: +.if defined(INSTALL_CONFLICTING_CLANG_HEADERS) +INCS+= float.h +INCS+= intrin.h +INCS+= inttypes.h +INCS+= iso646.h +INCS+= limits.h +INCS+= stdalign.h +INCS+= stdarg.h +INCS+= stdatomic.h +INCS+= stdbool.h +INCS+= stddef.h +INCS+= stdint.h +INCS+= stdnoreturn.h +INCS+= tgmath.h +INCS+= unwind.h +INCS+= varargs.h +.endif + arm_neon.h: ${CLANG_SRCS}/include/clang/Basic/arm_neon.td ${CLANG_TBLGEN} -gen-arm-neon \ -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ diff --git a/lib/clang/include/clang/Basic/Version.inc b/lib/clang/include/clang/Basic/Version.inc index 24fdb8b..67ace7f 100644 --- a/lib/clang/include/clang/Basic/Version.inc +++ b/lib/clang/include/clang/Basic/Version.inc @@ -1,11 +1,11 @@ /* $FreeBSD$ */ -#define CLANG_VERSION 4.0.0 -#define CLANG_VERSION_STRING "4.0.0" -#define CLANG_VERSION_MAJOR 4 +#define CLANG_VERSION 5.0.1 +#define CLANG_VERSION_STRING "5.0.1" +#define CLANG_VERSION_MAJOR 5 #define CLANG_VERSION_MINOR 0 -#define CLANG_VERSION_PATCHLEVEL 0 +#define CLANG_VERSION_PATCHLEVEL 1 #define CLANG_VENDOR "FreeBSD " -#define SVN_REVISION "297347" +#define SVN_REVISION "320880" diff --git a/lib/clang/include/clang/Config/config.h b/lib/clang/include/clang/Config/config.h index 07f6325..5f59345 100644 --- a/lib/clang/include/clang/Config/config.h +++ b/lib/clang/include/clang/Config/config.h @@ -39,11 +39,14 @@ /* Define if we have libxml2 */ /* #undef CLANG_HAVE_LIBXML */ +/* Define if we have z3 and want to build it */ +/* #undef CLANG_ANALYZER_WITH_Z3 */ + /* Define if we have sys/resource.h (rlimits) */ #define CLANG_HAVE_RLIMITS 1 /* The LLVM product name and version */ -#define BACKEND_PACKAGE_STRING "LLVM 4.0.0" +#define BACKEND_PACKAGE_STRING "LLVM 5.0.1" /* Linker version detected at compile time. */ /* #undef HOST_LINK_VERSION */ @@ -54,4 +57,9 @@ /* enable x86 relax relocations by default */ #define ENABLE_X86_RELAX_RELOCATIONS 0 +/* Enable each functionality of modules */ +/* #undef CLANG_ENABLE_ARCMT */ +/* #undef CLANG_ENABLE_OBJC_REWRITER */ +/* #undef CLANG_ENABLE_STATIC_ANALYZER */ + #endif diff --git a/lib/clang/include/lld/Config/Version.inc b/lib/clang/include/lld/Config/Version.inc index 49ce2ca..6f72748 100644 --- a/lib/clang/include/lld/Config/Version.inc +++ b/lib/clang/include/lld/Config/Version.inc @@ -1,8 +1,8 @@ // $FreeBSD$ -#define LLD_VERSION 4.0.0 -#define LLD_VERSION_STRING "4.0.0" -#define LLD_VERSION_MAJOR 4 +#define LLD_VERSION 5.0.1 +#define LLD_VERSION_STRING "5.0.1" +#define LLD_VERSION_MAJOR 5 #define LLD_VERSION_MINOR 0 -#define LLD_REVISION_STRING "297347" +#define LLD_REVISION_STRING "320880" #define LLD_REPOSITORY_STRING "FreeBSD" diff --git a/lib/clang/include/lldb/Host/Config.h b/lib/clang/include/lldb/Host/Config.h new file mode 100644 index 0000000..670eca5 --- /dev/null +++ b/lib/clang/include/lldb/Host/Config.h @@ -0,0 +1,28 @@ +// $FreeBSD$ +//===-- Config.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_HOST_CONFIG_H +#define LLDB_HOST_CONFIG_H + +#define LLDB_CONFIG_TERMIOS_SUPPORTED + +/* #undef LLDB_DISABLE_POSIX */ + +#define HAVE_SYS_EVENT_H 1 + +#define HAVE_PPOLL 1 + +#define HAVE_SIGACTION 1 + +#define HAVE_PROCESS_VM_READV 0 + +#define HAVE_NR_PROCESS_VM_READV 0 + +#endif // #ifndef LLDB_HOST_CONFIG_H diff --git a/lib/clang/include/llvm/Config/abi-breaking.h b/lib/clang/include/llvm/Config/abi-breaking.h index 39c4162..a6976a1 100644 --- a/lib/clang/include/llvm/Config/abi-breaking.h +++ b/lib/clang/include/llvm/Config/abi-breaking.h @@ -16,9 +16,11 @@ /* Define to enable checks that alter the LLVM C++ ABI */ #define LLVM_ENABLE_ABI_BREAKING_CHECKS 1 -/* Define to disable the link-time checking of mismatch for - LLVM_ENABLE_ABI_BREAKING_CHECKS */ -#define LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING 0 +/* Define to enable reverse iteration of unordered llvm containers */ +#define LLVM_ENABLE_REVERSE_ITERATION 0 + +/* Allow selectively disabling link-time mismatch checking so that header-only + ADT content from LLVM can be used without linking libSupport. */ #if !LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING // ABI_BREAKING_CHECKS protection: provides link-time failure when clients build diff --git a/lib/clang/include/llvm/Config/config.h b/lib/clang/include/llvm/Config/config.h index a5b7ce9..6f3fb10 100644 --- a/lib/clang/include/llvm/Config/config.h +++ b/lib/clang/include/llvm/Config/config.h @@ -17,8 +17,12 @@ /* Define to 1 to enable crash overrides, and to 0 otherwise. */ #define ENABLE_CRASH_OVERRIDES 1 +#if __FreeBSD_version >= 1000052 /* Define to 1 if you have the `backtrace' function. */ -/* #undef HAVE_BACKTRACE */ +#define HAVE_BACKTRACE TRUE + +#define BACKTRACE_HEADER <execinfo.h> +#endif /* Define to 1 if you have the <CrashReporterClient.h> header file. */ /* #undef HAVE_CRASHREPORTERCLIENT_H */ @@ -55,14 +59,12 @@ /* Define if dlopen() is available on this platform. */ #define HAVE_DLOPEN 1 +/* Define if dladdr() is available on this platform. */ +#define HAVE_DLADDR 1 + /* Define to 1 if you have the <errno.h> header file. */ #define HAVE_ERRNO_H 1 -/* Define to 1 if you have the <execinfo.h> header file. */ -#if __FreeBSD_version >= 1000052 -#define HAVE_EXECINFO_H 1 -#endif - /* Define to 1 if you have the <fcntl.h> header file. */ #define HAVE_FCNTL_H 1 @@ -356,35 +358,14 @@ /* Host triple LLVM will be executed on */ /* #undef LLVM_HOST_TRIPLE */ -/* LLVM architecture name for the native architecture, if available */ -#define LLVM_NATIVE_ARCH X86 - -/* LLVM name for the native AsmParser init function, if available */ -#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser - -/* LLVM name for the native AsmPrinter init function, if available */ -#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter - -/* LLVM name for the native Disassembler init function, if available */ -#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler - -/* LLVM name for the native Target init function, if available */ -#define LLVM_NATIVE_TARGET LLVMInitializeX86Target - -/* LLVM name for the native TargetInfo init function, if available */ -#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo - -/* LLVM name for the native target MC init function, if available */ -#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC - /* Define if this is Unixish platform */ #define LLVM_ON_UNIX 1 /* Define if this is Win32ish platform */ /* #undef LLVM_ON_WIN32 */ -/* Installation prefix directory */ -#define LLVM_PREFIX "/usr" +/* Define if overriding target triple is enabled */ +/* #undef LLVM_TARGET_TRIPLE_ENV */ /* Define if we have the Intel JIT API runtime support library */ #define LLVM_USE_INTEL_JITEVENTS 0 @@ -395,17 +376,20 @@ /* LLVM version information */ /* #undef LLVM_VERSION_INFO */ +/* Whether tools show host and target info when invoked with --version */ +#define LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO 1 + /* Major version of the LLVM API */ -#define LLVM_VERSION_MAJOR 4 +#define LLVM_VERSION_MAJOR 5 /* Minor version of the LLVM API */ #define LLVM_VERSION_MINOR 0 /* Patch version of the LLVM API */ -#define LLVM_VERSION_PATCH 0 +#define LLVM_VERSION_PATCH 1 /* LLVM version string */ -#define LLVM_VERSION_STRING "4.0.0" +#define LLVM_VERSION_STRING "5.0.1" /* Define to the extension used for shared libraries, say, ".so". */ #define LTDL_SHLIB_EXT ".so" @@ -417,13 +401,13 @@ #define PACKAGE_NAME "LLVM" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "LLVM 4.0.0" +#define PACKAGE_STRING "LLVM 5.0.1" /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.0.0" +#define PACKAGE_VERSION "5.0.1" /* Define to the vendor of this package. */ /* #undef PACKAGE_VENDOR */ diff --git a/lib/clang/include/llvm/Config/llvm-config.h b/lib/clang/include/llvm/Config/llvm-config.h index 755017f..d288d8a 100644 --- a/lib/clang/include/llvm/Config/llvm-config.h +++ b/lib/clang/include/llvm/Config/llvm-config.h @@ -57,9 +57,6 @@ /* Define if this is Win32ish platform */ /* #undef LLVM_ON_WIN32 */ -/* Installation prefix directory */ -#define LLVM_PREFIX "/usr" - /* Define if we have the Intel JIT API runtime support library */ #define LLVM_USE_INTEL_JITEVENTS 0 @@ -67,15 +64,15 @@ #define LLVM_USE_OPROFILE 0 /* Major version of the LLVM API */ -#define LLVM_VERSION_MAJOR 4 +#define LLVM_VERSION_MAJOR 5 /* Minor version of the LLVM API */ #define LLVM_VERSION_MINOR 0 /* Patch version of the LLVM API */ -#define LLVM_VERSION_PATCH 0 +#define LLVM_VERSION_PATCH 1 /* LLVM version string */ -#define LLVM_VERSION_STRING "4.0.0" +#define LLVM_VERSION_STRING "5.0.1" #endif diff --git a/lib/clang/include/llvm/Support/DataTypes.h b/lib/clang/include/llvm/Support/DataTypes.h index 5d02231..d48e83d 100644 --- a/lib/clang/include/llvm/Support/DataTypes.h +++ b/lib/clang/include/llvm/Support/DataTypes.h @@ -86,11 +86,11 @@ typedef u_int64_t uint64_t; #else /* _MSC_VER */ #ifdef __cplusplus -#include <cstdlib> #include <cstddef> +#include <cstdlib> #else -#include <stdlib.h> #include <stddef.h> +#include <stdlib.h> #endif #include <sys/types.h> @@ -133,4 +133,4 @@ typedef signed int ssize_t; #define HUGE_VALF (float)HUGE_VAL #endif -#endif /* SUPPORT_DATATYPES_H */ +#endif /* SUPPORT_DATATYPES_H */ diff --git a/lib/clang/include/llvm/Support/VCSRevision.h b/lib/clang/include/llvm/Support/VCSRevision.h new file mode 100644 index 0000000..053a7d4 --- /dev/null +++ b/lib/clang/include/llvm/Support/VCSRevision.h @@ -0,0 +1,2 @@ +/* $FreeBSD$ */ +#define LLVM_REVISION "svn-r320880" diff --git a/lib/clang/libclang/Makefile b/lib/clang/libclang/Makefile index 54fb0d7..544f7d4 100644 --- a/lib/clang/libclang/Makefile +++ b/lib/clang/libclang/Makefile @@ -7,6 +7,7 @@ LIB= clang CFLAGS+= -I${.OBJDIR} CFLAGS+= -I${OBJTOP}/lib/clang/libllvm +CFLAGS+= -I${CLANG_SRCS}/lib/Driver # Ensure FREEBSD_CC_VERSION is defined for Basic/Targets.cpp CFLAGS.Targets.cpp+= -include ../freebsd_cc_version.h @@ -44,6 +45,7 @@ SRCS_MIN+= AST/ASTContext.cpp SRCS_MIN+= AST/ASTDiagnostic.cpp SRCS_MIN+= AST/ASTDumper.cpp SRCS_MIN+= AST/ASTImporter.cpp +SRCS_MIN+= AST/ASTStructuralEquivalence.cpp SRCS_MIN+= AST/ASTTypeTraits.cpp SRCS_MIN+= AST/AttrImpl.cpp SRCS_MIN+= AST/CXXInheritance.cpp @@ -77,6 +79,7 @@ SRCS_MIN+= AST/MicrosoftCXXABI.cpp SRCS_MIN+= AST/MicrosoftMangle.cpp SRCS_MIN+= AST/NSAPI.cpp SRCS_MIN+= AST/NestedNameSpecifier.cpp +SRCS_MIN+= AST/ODRHash.cpp SRCS_MIN+= AST/OpenMPClause.cpp SRCS_MIN+= AST/ParentMap.cpp SRCS_MIN+= AST/RawCommentList.cpp @@ -141,6 +144,7 @@ SRCS_MIN+= Basic/FileManager.cpp SRCS_MIN+= Basic/FileSystemStatCache.cpp SRCS_MIN+= Basic/IdentifierTable.cpp SRCS_MIN+= Basic/LangOptions.cpp +SRCS_MIN+= Basic/MemoryBufferCache.cpp SRCS_MIN+= Basic/Module.cpp SRCS_MIN+= Basic/ObjCRuntime.cpp SRCS_MIN+= Basic/OpenMPKinds.cpp @@ -156,11 +160,11 @@ SRCS_MIN+= Basic/Version.cpp SRCS_MIN+= Basic/VersionTuple.cpp SRCS_MIN+= Basic/VirtualFileSystem.cpp SRCS_MIN+= Basic/Warnings.cpp +SRCS_MIN+= Basic/XRayLists.cpp SRCS_MIN+= CodeGen/BackendUtil.cpp SRCS_MIN+= CodeGen/CGAtomic.cpp SRCS_MIN+= CodeGen/CGBlocks.cpp SRCS_MIN+= CodeGen/CGBuiltin.cpp -SRCS_MIN+= CodeGen/CGCUDABuiltin.cpp SRCS_MIN+= CodeGen/CGCUDANV.cpp SRCS_MIN+= CodeGen/CGCUDARuntime.cpp SRCS_MIN+= CodeGen/CGCXX.cpp @@ -179,6 +183,7 @@ SRCS_MIN+= CodeGen/CGExprCXX.cpp SRCS_MIN+= CodeGen/CGExprComplex.cpp SRCS_MIN+= CodeGen/CGExprConstant.cpp SRCS_MIN+= CodeGen/CGExprScalar.cpp +SRCS_MIN+= CodeGen/CGGPUBuiltin.cpp SRCS_MIN+= CodeGen/CGLoopInfo.cpp SRCS_MIN+= CodeGen/CGObjC.cpp SRCS_MIN+= CodeGen/CGObjCGNU.cpp @@ -199,8 +204,10 @@ SRCS_MIN+= CodeGen/CodeGenModule.cpp SRCS_MIN+= CodeGen/CodeGenPGO.cpp SRCS_MIN+= CodeGen/CodeGenTBAA.cpp SRCS_MIN+= CodeGen/CodeGenTypes.cpp +SRCS_MIN+= CodeGen/ConstantInitBuilder.cpp SRCS_MIN+= CodeGen/CoverageMappingGen.cpp SRCS_MIN+= CodeGen/ItaniumCXXABI.cpp +SRCS_MIN+= CodeGen/MacroPPCallbacks.cpp SRCS_MIN+= CodeGen/MicrosoftCXXABI.cpp SRCS_MIN+= CodeGen/ModuleBuilder.cpp SRCS_MIN+= CodeGen/ObjectFilePCHContainerOperations.cpp @@ -210,36 +217,72 @@ SRCS_MIN+= CodeGen/TargetInfo.cpp SRCS_MIN+= CodeGen/VarBypassDetector.cpp SRCS_MIN+= Driver/Action.cpp SRCS_MIN+= Driver/Compilation.cpp -SRCS_MIN+= Driver/CrossWindowsToolChain.cpp SRCS_MIN+= Driver/Distro.cpp SRCS_MIN+= Driver/Driver.cpp SRCS_MIN+= Driver/DriverOptions.cpp SRCS_MIN+= Driver/Job.cpp -SRCS_MIN+= Driver/MSVCToolChain.cpp -SRCS_MIN+= Driver/MinGWToolChain.cpp SRCS_MIN+= Driver/Multilib.cpp SRCS_MIN+= Driver/Phases.cpp SRCS_MIN+= Driver/SanitizerArgs.cpp SRCS_MIN+= Driver/Tool.cpp SRCS_MIN+= Driver/ToolChain.cpp -SRCS_MIN+= Driver/ToolChains.cpp -SRCS_MIN+= Driver/Tools.cpp +SRCS_MIN+= Driver/ToolChains/AMDGPU.cpp +SRCS_MIN+= Driver/ToolChains/AVR.cpp +SRCS_MIN+= Driver/ToolChains/Ananas.cpp +SRCS_MIN+= Driver/ToolChains/Arch/AArch64.cpp +SRCS_MIN+= Driver/ToolChains/Arch/ARM.cpp +SRCS_MIN+= Driver/ToolChains/Arch/Mips.cpp +SRCS_MIN+= Driver/ToolChains/Arch/PPC.cpp +SRCS_MIN+= Driver/ToolChains/Arch/Sparc.cpp +SRCS_MIN+= Driver/ToolChains/Arch/SystemZ.cpp +SRCS_MIN+= Driver/ToolChains/Arch/X86.cpp +SRCS_MIN+= Driver/ToolChains/BareMetal.cpp +SRCS_MIN+= Driver/ToolChains/Bitrig.cpp +SRCS_MIN+= Driver/ToolChains/Clang.cpp +SRCS_MIN+= Driver/ToolChains/CloudABI.cpp +SRCS_MIN+= Driver/ToolChains/CommonArgs.cpp +SRCS_MIN+= Driver/ToolChains/Contiki.cpp +SRCS_MIN+= Driver/ToolChains/CrossWindows.cpp +SRCS_MIN+= Driver/ToolChains/Cuda.cpp +SRCS_MIN+= Driver/ToolChains/Darwin.cpp +SRCS_MIN+= Driver/ToolChains/DragonFly.cpp +SRCS_MIN+= Driver/ToolChains/FreeBSD.cpp +SRCS_MIN+= Driver/ToolChains/Fuchsia.cpp +SRCS_MIN+= Driver/ToolChains/Gnu.cpp +SRCS_MIN+= Driver/ToolChains/Haiku.cpp +SRCS_MIN+= Driver/ToolChains/Hexagon.cpp +SRCS_MIN+= Driver/ToolChains/Linux.cpp +SRCS_MIN+= Driver/ToolChains/MSVC.cpp +SRCS_MIN+= Driver/ToolChains/MinGW.cpp +SRCS_MIN+= Driver/ToolChains/Minix.cpp +SRCS_MIN+= Driver/ToolChains/MipsLinux.cpp +SRCS_MIN+= Driver/ToolChains/Myriad.cpp +SRCS_MIN+= Driver/ToolChains/NaCl.cpp +SRCS_MIN+= Driver/ToolChains/NetBSD.cpp +SRCS_MIN+= Driver/ToolChains/OpenBSD.cpp +SRCS_MIN+= Driver/ToolChains/PS4CPU.cpp +SRCS_MIN+= Driver/ToolChains/Solaris.cpp +SRCS_MIN+= Driver/ToolChains/TCE.cpp +SRCS_MIN+= Driver/ToolChains/WebAssembly.cpp +SRCS_MIN+= Driver/ToolChains/XCore.cpp SRCS_MIN+= Driver/Types.cpp +SRCS_MIN+= Driver/XRayArgs.cpp SRCS_MIN+= Edit/Commit.cpp SRCS_MIN+= Edit/EditedSource.cpp SRCS_MIN+= Edit/RewriteObjCFoundationAPI.cpp SRCS_EXT+= Format/AffectedRangeManager.cpp SRCS_EXT+= Format/BreakableToken.cpp -SRCS_EXT+= Format/Comments.cpp SRCS_EXT+= Format/ContinuationIndenter.cpp SRCS_EXT+= Format/Format.cpp SRCS_EXT+= Format/FormatToken.cpp SRCS_EXT+= Format/FormatTokenLexer.cpp +SRCS_EXT+= Format/NamespaceEndCommentsFixer.cpp SRCS_EXT+= Format/SortJavaScriptImports.cpp SRCS_EXT+= Format/TokenAnalyzer.cpp SRCS_EXT+= Format/TokenAnnotator.cpp SRCS_EXT+= Format/UnwrappedLineFormatter.cpp SRCS_EXT+= Format/UnwrappedLineParser.cpp +SRCS_EXT+= Format/UsingDeclarationsSorter.cpp SRCS_EXT+= Format/WhitespaceManager.cpp SRCS_MIN+= Frontend/ASTConsumers.cpp SRCS_MIN+= Frontend/ASTMerge.cpp @@ -266,6 +309,7 @@ SRCS_MIN+= Frontend/LogDiagnosticPrinter.cpp SRCS_MIN+= Frontend/ModuleDependencyCollector.cpp SRCS_MIN+= Frontend/MultiplexConsumer.cpp SRCS_MIN+= Frontend/PCHContainerOperations.cpp +SRCS_MIN+= Frontend/PrecompiledPreamble.cpp SRCS_MIN+= Frontend/PrintPreprocessedOutput.cpp SRCS_MIN+= Frontend/Rewrite/FixItRewriter.cpp SRCS_MIN+= Frontend/Rewrite/FrontendActions.cpp @@ -412,7 +456,6 @@ SRCS_FUL+= StaticAnalyzer/Checkers/CheckObjCDealloc.cpp SRCS_FUL+= StaticAnalyzer/Checkers/CheckObjCInstMethSignature.cpp SRCS_FUL+= StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp SRCS_FUL+= StaticAnalyzer/Checkers/CheckSizeofPointer.cpp -SRCS_FUL+= StaticAnalyzer/Checkers/CheckerDocumentation.cpp SRCS_FUL+= StaticAnalyzer/Checkers/ChrootChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/ClangCheckers.cpp SRCS_FUL+= StaticAnalyzer/Checkers/CloneChecker.cpp @@ -429,7 +472,7 @@ SRCS_FUL+= StaticAnalyzer/Checkers/FixedAddressChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/GTestChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/GenericTaintChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/IdenticalExprChecker.cpp -SRCS_FUL+= StaticAnalyzer/Checkers/IteratorPastEndChecker.cpp +SRCS_FUL+= StaticAnalyzer/Checkers/IteratorChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/LLVMConventionsChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/LocalizationChecker.cpp @@ -441,6 +484,7 @@ SRCS_FUL+= StaticAnalyzer/Checkers/MacOSXAPIChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/MallocChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/MallocSizeofChecker.cpp +SRCS_FUL+= StaticAnalyzer/Checkers/MisusedMovedObjectChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/NSAutoreleasePoolChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/NSErrorChecker.cpp SRCS_FUL+= StaticAnalyzer/Checkers/NoReturnFunctionChecker.cpp @@ -513,6 +557,7 @@ SRCS_FUL+= StaticAnalyzer/Core/PathDiagnostic.cpp SRCS_FUL+= StaticAnalyzer/Core/PlistDiagnostics.cpp SRCS_FUL+= StaticAnalyzer/Core/ProgramState.cpp SRCS_FUL+= StaticAnalyzer/Core/RangeConstraintManager.cpp +SRCS_FUL+= StaticAnalyzer/Core/RangedConstraintManager.cpp SRCS_FUL+= StaticAnalyzer/Core/RegionStore.cpp SRCS_FUL+= StaticAnalyzer/Core/SValBuilder.cpp SRCS_FUL+= StaticAnalyzer/Core/SVals.cpp @@ -521,6 +566,7 @@ SRCS_FUL+= StaticAnalyzer/Core/SimpleSValBuilder.cpp SRCS_FUL+= StaticAnalyzer/Core/Store.cpp SRCS_FUL+= StaticAnalyzer/Core/SubEngine.cpp SRCS_FUL+= StaticAnalyzer/Core/SymbolManager.cpp +SRCS_FUL+= StaticAnalyzer/Core/Z3ConstraintManager.cpp SRCS_FUL+= StaticAnalyzer/Frontend/AnalysisConsumer.cpp SRCS_FUL+= StaticAnalyzer/Frontend/CheckerRegistration.cpp SRCS_FUL+= StaticAnalyzer/Frontend/FrontendActions.cpp @@ -637,6 +683,12 @@ clang/Basic/AttrList.inc: ${CLANG_SRCS}/include/clang/Basic/Attr.td ${CLANG_SRCS}/include/clang/Basic/Attr.td TGHDRS+= clang/Basic/AttrList.inc +clang/Basic/AttrSubMatchRulesList.inc: ${CLANG_SRCS}/include/clang/Basic/Attr.td + ${CLANG_TBLGEN} -gen-clang-attr-subject-match-rule-list \ + -I ${CLANG_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + ${CLANG_SRCS}/include/clang/Basic/Attr.td +TGHDRS+= clang/Basic/AttrSubMatchRulesList.inc + .for hdr in \ AST Analysis Comment Common Driver Frontend Lex Parse Sema Serialization clang/Basic/Diagnostic${hdr}Kinds.inc: \ @@ -681,6 +733,13 @@ clang/Parse/AttrParserStringSwitches.inc: \ ${CLANG_SRCS}/include/clang/Basic/Attr.td TGHDRS+= clang/Parse/AttrParserStringSwitches.inc +clang/Parse/AttrSubMatchRulesParserStringSwitches.inc: \ + ${CLANG_SRCS}/include/clang/Basic/Attr.td + ${CLANG_TBLGEN} -gen-clang-attr-subject-match-rules-parser-string-switches \ + -I ${CLANG_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + ${CLANG_SRCS}/include/clang/Basic/Attr.td +TGHDRS+= clang/Parse/AttrSubMatchRulesParserStringSwitches.inc + clang/Sema/AttrParsedAttrImpl.inc: ${CLANG_SRCS}/include/clang/Basic/Attr.td ${CLANG_TBLGEN} -gen-clang-attr-parsed-attr-impl \ -I ${CLANG_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ diff --git a/lib/clang/liblldb/Makefile b/lib/clang/liblldb/Makefile index 189119a..d57a637 100644 --- a/lib/clang/liblldb/Makefile +++ b/lib/clang/liblldb/Makefile @@ -61,6 +61,7 @@ SRCS+= API/SBTarget.cpp SRCS+= API/SBThread.cpp SRCS+= API/SBThreadCollection.cpp SRCS+= API/SBThreadPlan.cpp +SRCS+= API/SBTrace.cpp SRCS+= API/SBType.cpp SRCS+= API/SBTypeCategory.cpp SRCS+= API/SBTypeEnumMember.cpp @@ -131,29 +132,19 @@ SRCS+= Core/AddressResolver.cpp SRCS+= Core/AddressResolverFileLine.cpp SRCS+= Core/AddressResolverName.cpp SRCS+= Core/ArchSpec.cpp -SRCS+= Core/Baton.cpp SRCS+= Core/Broadcaster.cpp SRCS+= Core/Communication.cpp -SRCS+= Core/Connection.cpp -SRCS+= Core/ConstString.cpp -SRCS+= Core/DataBufferHeap.cpp -SRCS+= Core/DataBufferMemoryMap.cpp -SRCS+= Core/DataEncoder.cpp -SRCS+= Core/DataExtractor.cpp SRCS+= Core/Debugger.cpp SRCS+= Core/Disassembler.cpp +SRCS+= Core/DumpDataExtractor.cpp SRCS+= Core/DynamicLoader.cpp SRCS+= Core/EmulateInstruction.cpp -SRCS+= Core/Error.cpp SRCS+= Core/Event.cpp -SRCS+= Core/FastDemangle.cpp SRCS+= Core/FileLineResolver.cpp SRCS+= Core/FileSpecList.cpp SRCS+= Core/FormatEntity.cpp SRCS+= Core/IOHandler.cpp SRCS+= Core/Listener.cpp -SRCS+= Core/Log.cpp -SRCS+= Core/Logging.cpp SRCS+= Core/Mangled.cpp SRCS+= Core/Module.cpp SRCS+= Core/ModuleChild.cpp @@ -161,25 +152,14 @@ SRCS+= Core/ModuleList.cpp SRCS+= Core/Opcode.cpp SRCS+= Core/PluginManager.cpp SRCS+= Core/RegisterValue.cpp -SRCS+= Core/RegularExpression.cpp SRCS+= Core/Scalar.cpp SRCS+= Core/SearchFilter.cpp SRCS+= Core/Section.cpp SRCS+= Core/SourceManager.cpp SRCS+= Core/State.cpp -SRCS+= Core/Stream.cpp SRCS+= Core/StreamAsynchronousIO.cpp -SRCS+= Core/StreamCallback.cpp SRCS+= Core/StreamFile.cpp -SRCS+= Core/StreamGDBRemote.cpp -SRCS+= Core/StreamString.cpp -SRCS+= Core/StringList.cpp -SRCS+= Core/StructuredData.cpp -SRCS+= Core/Timer.cpp -SRCS+= Core/UUID.cpp -SRCS+= Core/UserID.cpp SRCS+= Core/UserSettingsController.cpp -SRCS+= Core/VMRange.cpp SRCS+= Core/Value.cpp SRCS+= Core/ValueObject.cpp SRCS+= Core/ValueObjectCast.cpp @@ -228,35 +208,32 @@ SRCS+= Expression/UtilityFunction.cpp SRCS+= Host/common/Editline.cpp SRCS+= Host/common/File.cpp SRCS+= Host/common/FileCache.cpp -SRCS+= Host/common/FileSpec.cpp SRCS+= Host/common/FileSystem.cpp SRCS+= Host/common/Host.cpp SRCS+= Host/common/HostInfoBase.cpp SRCS+= Host/common/HostNativeThreadBase.cpp SRCS+= Host/common/HostProcess.cpp SRCS+= Host/common/HostThread.cpp -SRCS+= Host/common/IOObject.cpp SRCS+= Host/common/LockFileBase.cpp +SRCS+= Host/common/MainLoop.cpp SRCS+= Host/common/MonitoringProcessLauncher.cpp SRCS+= Host/common/NativeBreakpointList.cpp SRCS+= Host/common/NativeWatchpointList.cpp SRCS+= Host/common/OptionParser.cpp SRCS+= Host/common/PipeBase.cpp SRCS+= Host/common/ProcessRunLock.cpp +SRCS+= Host/common/PseudoTerminal.cpp SRCS+= Host/common/Socket.cpp SRCS+= Host/common/SocketAddress.cpp SRCS+= Host/common/StringConvert.cpp SRCS+= Host/common/Symbols.cpp SRCS+= Host/common/TCPSocket.cpp SRCS+= Host/common/Terminal.cpp -SRCS+= Host/common/ThisThread.cpp SRCS+= Host/common/ThreadLauncher.cpp SRCS+= Host/common/UDPSocket.cpp SRCS+= Host/common/XML.cpp SRCS+= Host/freebsd/Host.cpp SRCS+= Host/freebsd/HostInfoFreeBSD.cpp -SRCS+= Host/freebsd/HostThreadFreeBSD.cpp -SRCS+= Host/freebsd/ThisThread.cpp SRCS+= Host/posix/ConnectionFileDescriptorPosix.cpp SRCS+= Host/posix/DomainSocket.cpp SRCS+= Host/posix/FileSystem.cpp @@ -264,9 +241,8 @@ SRCS+= Host/posix/HostInfoPosix.cpp SRCS+= Host/posix/HostProcessPosix.cpp SRCS+= Host/posix/HostThreadPosix.cpp SRCS+= Host/posix/LockFilePosix.cpp -SRCS+= Host/posix/MainLoopPosix.cpp SRCS+= Host/posix/PipePosix.cpp -SRCS+= Host/posix/ProcessLauncherPosix.cpp +SRCS+= Host/posix/ProcessLauncherPosixFork.cpp SRCS+= Initialization/SystemInitializer.cpp SRCS+= Initialization/SystemInitializerCommon.cpp SRCS+= Initialization/SystemLifetimeManager.cpp @@ -347,10 +323,13 @@ SRCS+= Plugins/Instruction/ARM/EmulationStateARM.cpp SRCS+= Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp SRCS+= Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp SRCS+= Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp -SRCS+= Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.cpp +SRCS+= Plugins/InstrumentationRuntime/ASan/ASanRuntime.cpp +SRCS+= Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.cpp +SRCS+= Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.cpp SRCS+= Plugins/JITLoader/GDB/JITLoaderGDB.cpp SRCS+= Plugins/Language/CPlusPlus/BlockPointer.cpp SRCS+= Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +SRCS+= Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp SRCS+= Plugins/Language/CPlusPlus/LibCxx.cpp SRCS+= Plugins/Language/CPlusPlus/LibCxxAtomic.cpp SRCS+= Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp @@ -370,12 +349,16 @@ SRCS+= Plugins/Language/ObjC/NSSet.cpp SRCS+= Plugins/Language/ObjC/NSString.cpp SRCS+= Plugins/Language/ObjC/ObjCLanguage.cpp SRCS+= Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp +SRCS+= Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp +SRCS+= Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp +SRCS+= Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp SRCS+= Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp SRCS+= Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp SRCS+= Plugins/ObjectFile/ELF/ELFHeader.cpp SRCS+= Plugins/ObjectFile/ELF/ObjectFileELF.cpp SRCS+= Plugins/ObjectFile/JIT/ObjectFileJIT.cpp SRCS+= Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp +SRCS+= Plugins/Platform/POSIX/PlatformPOSIX.cpp SRCS+= Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp SRCS+= Plugins/Process/FreeBSD/FreeBSDThread.cpp SRCS+= Plugins/Process/FreeBSD/POSIXStopInfo.cpp @@ -401,25 +384,28 @@ SRCS+= Plugins/Process/Utility/NetBSDSignals.cpp SRCS+= Plugins/Process/Utility/RegisterContextDarwin_i386.cpp SRCS+= Plugins/Process/Utility/RegisterContextDarwin_x86_64.cpp SRCS+= Plugins/Process/Utility/RegisterContextDummy.cpp -SRCS+= Plugins/Process/Utility/RegisterContextFreeBSD_arm.cpp SRCS+= Plugins/Process/Utility/RegisterContextFreeBSD_i386.cpp SRCS+= Plugins/Process/Utility/RegisterContextFreeBSD_mips64.cpp SRCS+= Plugins/Process/Utility/RegisterContextFreeBSD_powerpc.cpp SRCS+= Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.cpp SRCS+= Plugins/Process/Utility/RegisterContextHistory.cpp SRCS+= Plugins/Process/Utility/RegisterContextLLDB.cpp -SRCS+= Plugins/Process/Utility/RegisterContextLinux_arm.cpp SRCS+= Plugins/Process/Utility/RegisterContextLinux_i386.cpp SRCS+= Plugins/Process/Utility/RegisterContextLinux_mips.cpp +SRCS+= Plugins/Process/Utility/RegisterContextLinux_mips64.cpp SRCS+= Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp SRCS+= Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp SRCS+= Plugins/Process/Utility/RegisterContextMemory.cpp +SRCS+= Plugins/Process/Utility/RegisterContextNetBSD_x86_64.cpp +SRCS+= Plugins/Process/Utility/RegisterContextOpenBSD_i386.cpp +SRCS+= Plugins/Process/Utility/RegisterContextOpenBSD_x86_64.cpp SRCS+= Plugins/Process/Utility/RegisterContextPOSIX_arm.cpp SRCS+= Plugins/Process/Utility/RegisterContextPOSIX_arm64.cpp SRCS+= Plugins/Process/Utility/RegisterContextPOSIX_mips64.cpp SRCS+= Plugins/Process/Utility/RegisterContextPOSIX_powerpc.cpp SRCS+= Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp SRCS+= Plugins/Process/Utility/RegisterContextThreadMemory.cpp +SRCS+= Plugins/Process/Utility/RegisterInfoPOSIX_arm.cpp SRCS+= Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp SRCS+= Plugins/Process/Utility/StopInfoMachException.cpp SRCS+= Plugins/Process/Utility/ThreadMemory.cpp @@ -523,6 +509,7 @@ SRCS+= Target/Language.cpp SRCS+= Target/LanguageRuntime.cpp SRCS+= Target/Memory.cpp SRCS+= Target/MemoryHistory.cpp +SRCS+= Target/ModuleCache.cpp SRCS+= Target/ObjCLanguageRuntime.cpp SRCS+= Target/OperatingSystem.cpp SRCS+= Target/PathMappingList.cpp @@ -534,6 +521,7 @@ SRCS+= Target/Queue.cpp SRCS+= Target/QueueItem.cpp SRCS+= Target/QueueList.cpp SRCS+= Target/RegisterContext.cpp +SRCS+= Target/RegisterNumber.cpp SRCS+= Target/SectionLoadHistory.cpp SRCS+= Target/SectionLoadList.cpp SRCS+= Target/StackFrame.cpp @@ -566,21 +554,42 @@ SRCS+= Target/ThreadPlanTracer.cpp SRCS+= Target/ThreadSpec.cpp SRCS+= Target/UnixSignals.cpp SRCS+= Target/UnwindAssembly.cpp -SRCS+= Utility/ARM_DWARF_Registers.cpp -SRCS+= Utility/ConvertEnum.cpp +SRCS+= Utility/Baton.cpp +SRCS+= Utility/Connection.cpp +SRCS+= Utility/ConstString.cpp +SRCS+= Utility/DataBufferHeap.cpp +SRCS+= Utility/DataBufferLLVM.cpp +SRCS+= Utility/DataEncoder.cpp +SRCS+= Utility/DataExtractor.cpp +SRCS+= Utility/FastDemangle.cpp +SRCS+= Utility/FileSpec.cpp +SRCS+= Utility/IOObject.cpp SRCS+= Utility/JSON.cpp SRCS+= Utility/LLDBAssert.cpp -SRCS+= Utility/ModuleCache.cpp +SRCS+= Utility/Log.cpp +SRCS+= Utility/Logging.cpp SRCS+= Utility/NameMatches.cpp -SRCS+= Utility/PseudoTerminal.cpp -SRCS+= Utility/RegisterNumber.cpp +SRCS+= Utility/RegularExpression.cpp SRCS+= Utility/SelectHelper.cpp SRCS+= Utility/SharingPtr.cpp +SRCS+= Utility/Status.cpp +SRCS+= Utility/Stream.cpp +SRCS+= Utility/StreamCallback.cpp +SRCS+= Utility/StreamGDBRemote.cpp +SRCS+= Utility/StreamString.cpp SRCS+= Utility/StringExtractor.cpp SRCS+= Utility/StringExtractorGDBRemote.cpp SRCS+= Utility/StringLexer.cpp +SRCS+= Utility/StringList.cpp +SRCS+= Utility/StructuredData.cpp SRCS+= Utility/TaskPool.cpp +SRCS+= Utility/TildeExpressionResolver.cpp +SRCS+= Utility/Timer.cpp +SRCS+= Utility/UUID.cpp SRCS+= Utility/UriParser.cpp +SRCS+= Utility/UserID.cpp +SRCS+= Utility/VASprintf.cpp +SRCS+= Utility/VMRange.cpp SRCS+= lldb.cpp .include "../clang.build.mk" diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile index 1ec73bd..aa1a3f3 100644 --- a/lib/clang/libllvm/Makefile +++ b/lib/clang/libllvm/Makefile @@ -67,6 +67,8 @@ SRCS_MIN+= Analysis/MemDerefPrinter.cpp SRCS_MIN+= Analysis/MemoryBuiltins.cpp SRCS_MIN+= Analysis/MemoryDependenceAnalysis.cpp SRCS_MIN+= Analysis/MemoryLocation.cpp +SRCS_MIN+= Analysis/MemorySSA.cpp +SRCS_MIN+= Analysis/MemorySSAUpdater.cpp SRCS_MIN+= Analysis/ModuleDebugInfoPrinter.cpp SRCS_MIN+= Analysis/ModuleSummaryAnalysis.cpp SRCS_MIN+= Analysis/ObjCARCAliasAnalysis.cpp @@ -106,6 +108,8 @@ SRCS_MIN+= Bitcode/Writer/BitWriter.cpp SRCS_MIN+= Bitcode/Writer/BitcodeWriter.cpp SRCS_MIN+= Bitcode/Writer/BitcodeWriterPass.cpp SRCS_MIN+= Bitcode/Writer/ValueEnumerator.cpp +SRCS_MIN+= BinaryFormat/Dwarf.cpp +SRCS_MIN+= BinaryFormat/Magic.cpp SRCS_MIN+= CodeGen/AggressiveAntiDepBreaker.cpp SRCS_MIN+= CodeGen/AllocationOrder.cpp SRCS_MIN+= CodeGen/Analysis.cpp @@ -134,6 +138,7 @@ SRCS_MIN+= CodeGen/AsmPrinter/OcamlGCPrinter.cpp SRCS_MIN+= CodeGen/AsmPrinter/WinException.cpp SRCS_MIN+= CodeGen/AtomicExpandPass.cpp SRCS_MIN+= CodeGen/BasicTargetTransformInfo.cpp +SRCS_MIN+= CodeGen/BranchCoalescing.cpp SRCS_MIN+= CodeGen/BranchFolding.cpp SRCS_MIN+= CodeGen/BranchRelaxation.cpp SRCS_MIN+= CodeGen/BuiltinGCs.cpp @@ -152,13 +157,28 @@ SRCS_MIN+= CodeGen/EdgeBundles.cpp SRCS_MIN+= CodeGen/ExecutionDepsFix.cpp SRCS_MIN+= CodeGen/ExpandISelPseudos.cpp SRCS_MIN+= CodeGen/ExpandPostRAPseudos.cpp +SRCS_MIN+= CodeGen/ExpandReductions.cpp +SRCS_MIN+= CodeGen/FEntryInserter.cpp SRCS_MIN+= CodeGen/FaultMaps.cpp SRCS_MIN+= CodeGen/FuncletLayout.cpp SRCS_MIN+= CodeGen/GCMetadata.cpp SRCS_MIN+= CodeGen/GCMetadataPrinter.cpp SRCS_MIN+= CodeGen/GCRootLowering.cpp SRCS_MIN+= CodeGen/GCStrategy.cpp +SRCS_MIN+= CodeGen/GlobalISel/CallLowering.cpp SRCS_MIN+= CodeGen/GlobalISel/GlobalISel.cpp +SRCS_MIN+= CodeGen/GlobalISel/IRTranslator.cpp +SRCS_MIN+= CodeGen/GlobalISel/InstructionSelect.cpp +SRCS_MIN+= CodeGen/GlobalISel/InstructionSelector.cpp +SRCS_MIN+= CodeGen/GlobalISel/Legalizer.cpp +SRCS_MIN+= CodeGen/GlobalISel/LegalizerHelper.cpp +SRCS_MIN+= CodeGen/GlobalISel/LegalizerInfo.cpp +SRCS_MIN+= CodeGen/GlobalISel/Localizer.cpp +SRCS_MIN+= CodeGen/GlobalISel/MachineIRBuilder.cpp +SRCS_MIN+= CodeGen/GlobalISel/RegBankSelect.cpp +SRCS_MIN+= CodeGen/GlobalISel/RegisterBank.cpp +SRCS_MIN+= CodeGen/GlobalISel/RegisterBankInfo.cpp +SRCS_MIN+= CodeGen/GlobalISel/Utils.cpp SRCS_MIN+= CodeGen/GlobalMerge.cpp SRCS_MIN+= CodeGen/IfConversion.cpp SRCS_MIN+= CodeGen/ImplicitNullChecks.cpp @@ -168,6 +188,7 @@ SRCS_MIN+= CodeGen/InterleavedAccessPass.cpp SRCS_MIN+= CodeGen/IntrinsicLowering.cpp SRCS_MIN+= CodeGen/LLVMTargetMachine.cpp SRCS_MIN+= CodeGen/LatencyPriorityQueue.cpp +SRCS_MIN+= CodeGen/LazyMachineBlockFrequencyInfo.cpp SRCS_MIN+= CodeGen/LexicalScopes.cpp SRCS_MIN+= CodeGen/LiveDebugValues.cpp SRCS_MIN+= CodeGen/LiveDebugVariables.cpp @@ -177,7 +198,9 @@ SRCS_MIN+= CodeGen/LiveIntervalUnion.cpp SRCS_MIN+= CodeGen/LivePhysRegs.cpp SRCS_MIN+= CodeGen/LiveRangeCalc.cpp SRCS_MIN+= CodeGen/LiveRangeEdit.cpp +SRCS_MIN+= CodeGen/LiveRangeShrink.cpp SRCS_MIN+= CodeGen/LiveRegMatrix.cpp +SRCS_MIN+= CodeGen/LiveRegUnits.cpp SRCS_MIN+= CodeGen/LiveStackAnalysis.cpp SRCS_MIN+= CodeGen/LiveVariables.cpp SRCS_MIN+= CodeGen/LocalStackSlotAllocation.cpp @@ -197,6 +220,7 @@ SRCS_MIN+= CodeGen/MachineCombiner.cpp SRCS_MIN+= CodeGen/MachineCopyPropagation.cpp SRCS_MIN+= CodeGen/MachineDominanceFrontier.cpp SRCS_MIN+= CodeGen/MachineDominators.cpp +SRCS_MIN+= CodeGen/MachineFrameInfo.cpp SRCS_MIN+= CodeGen/MachineFunction.cpp SRCS_MIN+= CodeGen/MachineFunctionPass.cpp SRCS_MIN+= CodeGen/MachineFunctionPrinterPass.cpp @@ -206,6 +230,8 @@ SRCS_MIN+= CodeGen/MachineLICM.cpp SRCS_MIN+= CodeGen/MachineLoopInfo.cpp SRCS_MIN+= CodeGen/MachineModuleInfo.cpp SRCS_MIN+= CodeGen/MachineModuleInfoImpls.cpp +SRCS_MIN+= CodeGen/MachineOptimizationRemarkEmitter.cpp +SRCS_MIN+= CodeGen/MachineOutliner.cpp SRCS_MIN+= CodeGen/MachinePassRegistry.cpp SRCS_MIN+= CodeGen/MachinePipeliner.cpp SRCS_MIN+= CodeGen/MachinePostDominators.cpp @@ -216,6 +242,7 @@ SRCS_MIN+= CodeGen/MachineScheduler.cpp SRCS_MIN+= CodeGen/MachineSink.cpp SRCS_MIN+= CodeGen/MachineTraceMetrics.cpp SRCS_MIN+= CodeGen/MachineVerifier.cpp +SRCS_MIN+= CodeGen/MacroFusion.cpp SRCS_MIN+= CodeGen/OptimizePHIs.cpp SRCS_MIN+= CodeGen/PHIElimination.cpp SRCS_MIN+= CodeGen/PHIEliminationUtils.cpp @@ -245,6 +272,7 @@ SRCS_MIN+= CodeGen/ResetMachineFunctionPass.cpp SRCS_MIN+= CodeGen/SafeStack.cpp SRCS_MIN+= CodeGen/SafeStackColoring.cpp SRCS_MIN+= CodeGen/SafeStackLayout.cpp +SRCS_MIN+= CodeGen/ScalarizeMaskedMemIntrin.cpp SRCS_MIN+= CodeGen/ScheduleDAG.cpp SRCS_MIN+= CodeGen/ScheduleDAGInstrs.cpp SRCS_MIN+= CodeGen/ScheduleDAGPrinter.cpp @@ -261,6 +289,7 @@ SRCS_MIN+= CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp SRCS_MIN+= CodeGen/SelectionDAG/LegalizeVectorOps.cpp SRCS_MIN+= CodeGen/SelectionDAG/LegalizeVectorTypes.cpp SRCS_MIN+= CodeGen/SelectionDAG/ResourcePriorityQueue.cpp +SRCS_MIN+= CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp SRCS_MIN+= CodeGen/SelectionDAG/ScheduleDAGFast.cpp SRCS_MIN+= CodeGen/SelectionDAG/ScheduleDAGRRList.cpp SRCS_MIN+= CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp @@ -301,28 +330,43 @@ SRCS_MIN+= CodeGen/VirtRegMap.cpp SRCS_MIN+= CodeGen/WinEHPrepare.cpp SRCS_MIN+= CodeGen/XRayInstrumentation.cpp SRCS_MIN+= DebugInfo/CodeView/CVSymbolVisitor.cpp -SRCS_MIN+= DebugInfo/CodeView/CVTypeDumper.cpp SRCS_MIN+= DebugInfo/CodeView/CVTypeVisitor.cpp SRCS_MIN+= DebugInfo/CodeView/CodeViewError.cpp SRCS_MIN+= DebugInfo/CodeView/CodeViewRecordIO.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugChecksumsSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugCrossExSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugCrossImpSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugFrameDataSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugInlineeLinesSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugLinesSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugStringTableSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugSubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugSubsectionRecord.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugSubsectionVisitor.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugSymbolRVASubsection.cpp +SRCS_EXT+= DebugInfo/CodeView/DebugSymbolsSubsection.cpp SRCS_EXT+= DebugInfo/CodeView/EnumTables.cpp +SRCS_MIN+= DebugInfo/CodeView/Formatters.cpp +SRCS_EXT+= DebugInfo/CodeView/LazyRandomTypeCollection.cpp SRCS_MIN+= DebugInfo/CodeView/Line.cpp -SRCS_MIN+= DebugInfo/CodeView/ModuleSubstream.cpp -SRCS_MIN+= DebugInfo/CodeView/ModuleSubstreamVisitor.cpp SRCS_MIN+= DebugInfo/CodeView/RecordSerialization.cpp +SRCS_EXT+= DebugInfo/CodeView/StringsAndChecksums.cpp SRCS_MIN+= DebugInfo/CodeView/SymbolDumper.cpp SRCS_MIN+= DebugInfo/CodeView/SymbolRecordMapping.cpp -SRCS_MIN+= DebugInfo/CodeView/TypeDatabase.cpp -SRCS_MIN+= DebugInfo/CodeView/TypeDatabaseVisitor.cpp +SRCS_EXT+= DebugInfo/CodeView/SymbolSerializer.cpp SRCS_MIN+= DebugInfo/CodeView/TypeDumpVisitor.cpp -SRCS_MIN+= DebugInfo/CodeView/TypeRecord.cpp +SRCS_MIN+= DebugInfo/CodeView/TypeIndex.cpp +SRCS_MIN+= DebugInfo/CodeView/TypeIndexDiscovery.cpp +SRCS_MIN+= DebugInfo/CodeView/TypeName.cpp SRCS_MIN+= DebugInfo/CodeView/TypeRecordMapping.cpp SRCS_MIN+= DebugInfo/CodeView/TypeSerializer.cpp SRCS_MIN+= DebugInfo/CodeView/TypeStreamMerger.cpp +SRCS_MIN+= DebugInfo/CodeView/TypeTableCollection.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFAcceleratorTable.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFCompileUnit.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFContext.cpp +SRCS_MIW+= DebugInfo/DWARF/DWARFDataExtractor.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFDebugAbbrev.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFDebugArangeSet.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFDebugAranges.cpp @@ -339,15 +383,45 @@ SRCS_MIW+= DebugInfo/DWARF/DWARFGdbIndex.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFTypeUnit.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFUnit.cpp SRCS_MIW+= DebugInfo/DWARF/DWARFUnitIndex.cpp +SRCS_MIW+= DebugInfo/DWARF/DWARFVerifier.cpp SRCS_MIW+= DebugInfo/DWARF/SyntaxHighlighting.cpp SRCS_MIN+= DebugInfo/MSF/MSFBuilder.cpp SRCS_MIN+= DebugInfo/MSF/MSFCommon.cpp SRCS_MIN+= DebugInfo/MSF/MSFError.cpp SRCS_MIN+= DebugInfo/MSF/MappedBlockStream.cpp -SRCS_MIN+= DebugInfo/MSF/StreamReader.cpp -SRCS_MIN+= DebugInfo/MSF/StreamWriter.cpp SRCS_EXT+= DebugInfo/PDB/GenericError.cpp SRCS_EXT+= DebugInfo/PDB/IPDBSourceFile.cpp +SRCS_EXT+= DebugInfo/PDB/Native/DbiModuleDescriptor.cpp +SRCS_EXT+= DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/Native/DbiModuleList.cpp +SRCS_EXT+= DebugInfo/PDB/Native/DbiStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/DbiStreamBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/Native/EnumTables.cpp +SRCS_EXT+= DebugInfo/PDB/Native/GSI.cpp +SRCS_EXT+= DebugInfo/PDB/Native/GlobalsStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/Hash.cpp +SRCS_EXT+= DebugInfo/PDB/Native/HashTable.cpp +SRCS_EXT+= DebugInfo/PDB/Native/InfoStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/InfoStreamBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/Native/ModuleDebugStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NamedStreamMap.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NativeBuiltinSymbol.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NativeCompilandSymbol.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NativeEnumModules.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NativeExeSymbol.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NativeRawSymbol.cpp +SRCS_EXT+= DebugInfo/PDB/Native/NativeSession.cpp +SRCS_EXT+= DebugInfo/PDB/Native/PDBFile.cpp +SRCS_EXT+= DebugInfo/PDB/Native/PDBFileBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/Native/PDBStringTable.cpp +SRCS_EXT+= DebugInfo/PDB/Native/PDBStringTableBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/Native/PublicsStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/PublicsStreamBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/Native/RawError.cpp +SRCS_EXT+= DebugInfo/PDB/Native/SymbolStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/TpiHashing.cpp +SRCS_EXT+= DebugInfo/PDB/Native/TpiStream.cpp +SRCS_EXT+= DebugInfo/PDB/Native/TpiStreamBuilder.cpp SRCS_EXT+= DebugInfo/PDB/PDB.cpp SRCS_EXT+= DebugInfo/PDB/PDBContext.cpp SRCS_EXT+= DebugInfo/PDB/PDBExtras.cpp @@ -385,28 +459,7 @@ SRCS_EXT+= DebugInfo/PDB/PDBSymbolTypeVTable.cpp SRCS_EXT+= DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp SRCS_EXT+= DebugInfo/PDB/PDBSymbolUnknown.cpp SRCS_EXT+= DebugInfo/PDB/PDBSymbolUsingNamespace.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/DbiStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/DbiStreamBuilder.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/EnumTables.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/GSI.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/GlobalsStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/Hash.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/InfoStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/InfoStreamBuilder.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/ModInfo.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/ModStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/NameHashTable.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/NameMap.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/NameMapBuilder.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/PDBFile.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/PDBFileBuilder.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/PublicsStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/RawError.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/RawSession.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/SymbolStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/TpiHashing.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/TpiStream.cpp -SRCS_EXT+= DebugInfo/PDB/Raw/TpiStreamBuilder.cpp +SRCS_EXT+= DebugInfo/PDB/UDTLayout.cpp SRCS_EXT+= DebugInfo/Symbolize/DIPrinter.cpp SRCS_MIW+= DebugInfo/Symbolize/SymbolizableObjectFile.cpp SRCS_MIW+= DebugInfo/Symbolize/Symbolize.cpp @@ -425,6 +478,7 @@ SRCS_EXT+= ExecutionEngine/Orc/OrcABISupport.cpp SRCS_EXT+= ExecutionEngine/Orc/OrcCBindings.cpp SRCS_EXT+= ExecutionEngine/Orc/OrcError.cpp SRCS_EXT+= ExecutionEngine/Orc/OrcMCJITReplacement.cpp +SRCS_EXT+= ExecutionEngine/Orc/RPCUtils.cpp SRCS_XDB+= ExecutionEngine/RuntimeDyld/JITSymbol.cpp SRCS_XDB+= ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp SRCS_XDB+= ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp @@ -476,6 +530,7 @@ SRCS_MIN+= IR/Pass.cpp SRCS_MIN+= IR/PassManager.cpp SRCS_MIN+= IR/PassRegistry.cpp SRCS_MIN+= IR/ProfileSummary.cpp +SRCS_MIN+= IR/SafepointIRVerifier.cpp SRCS_MIN+= IR/Statepoint.cpp SRCS_MIN+= IR/Type.cpp SRCS_MIN+= IR/TypeFinder.cpp @@ -487,13 +542,12 @@ SRCS_MIN+= IR/ValueTypes.cpp SRCS_MIN+= IR/Verifier.cpp SRCS_MIN+= IRReader/IRReader.cpp SRCS_EXL+= LTO/Caching.cpp -SRCS_EXL+= LTO/LTO.cpp +SRCS_MIN+= LTO/LTO.cpp SRCS_MIN+= LTO/LTOBackend.cpp SRCS_EXL+= LTO/LTOCodeGenerator.cpp SRCS_EXL+= LTO/LTOModule.cpp SRCS_EXL+= LTO/ThinLTOCodeGenerator.cpp SRCS_MIN+= LTO/UpdateCompilerUsed.cpp -SRCS_EXL+= LibDriver/LibDriver.cpp SRCS_MIN+= LineEditor/LineEditor.cpp SRCS_MIN+= Linker/IRMover.cpp SRCS_MIN+= Linker/LinkModules.cpp @@ -545,31 +599,35 @@ SRCS_MIN+= MC/MCSection.cpp SRCS_MIN+= MC/MCSectionCOFF.cpp SRCS_MIN+= MC/MCSectionELF.cpp SRCS_MIN+= MC/MCSectionMachO.cpp +SRCS_MIN+= MC/MCSectionWasm.cpp SRCS_MIN+= MC/MCStreamer.cpp SRCS_MIN+= MC/MCSubtargetInfo.cpp SRCS_MIN+= MC/MCSymbol.cpp SRCS_MIN+= MC/MCSymbolELF.cpp SRCS_MIN+= MC/MCTargetOptions.cpp SRCS_MIN+= MC/MCValue.cpp +SRCS_MIN+= MC/MCWasmStreamer.cpp SRCS_MIN+= MC/MCWin64EH.cpp +SRCS_MIN+= MC/MCWinCOFFStreamer.cpp SRCS_MIN+= MC/MCWinEH.cpp SRCS_MIN+= MC/MachObjectWriter.cpp SRCS_MIN+= MC/StringTableBuilder.cpp SRCS_MIN+= MC/SubtargetFeature.cpp SRCS_MIN+= MC/WinCOFFObjectWriter.cpp -SRCS_MIN+= MC/WinCOFFStreamer.cpp SRCS_MIN+= Object/Archive.cpp SRCS_MIN+= Object/ArchiveWriter.cpp SRCS_MIN+= Object/Binary.cpp +SRCS_EXT+= Object/COFFImportFile.cpp +SRCS_EXT+= Object/COFFModuleDefinition.cpp SRCS_MIN+= Object/COFFObjectFile.cpp SRCS_MIN+= Object/Decompressor.cpp SRCS_MIN+= Object/ELF.cpp SRCS_MIN+= Object/ELFObjectFile.cpp SRCS_MIN+= Object/Error.cpp SRCS_MIN+= Object/IRObjectFile.cpp +SRCS_MIN+= Object/IRSymtab.cpp SRCS_MIN+= Object/MachOObjectFile.cpp SRCS_MIN+= Object/MachOUniversal.cpp -SRCS_MIN+= Object/ModuleSummaryIndexObjectFile.cpp SRCS_MIN+= Object/ModuleSymbolTable.cpp SRCS_EXT+= Object/Object.cpp SRCS_MIN+= Object/ObjectFile.cpp @@ -577,10 +635,15 @@ SRCS_MIN+= Object/RecordStreamer.cpp SRCS_MIW+= Object/SymbolSize.cpp SRCS_MIN+= Object/SymbolicFile.cpp SRCS_MIN+= Object/WasmObjectFile.cpp +SRCS_MIW+= Object/WindowsResource.cpp SRCS_MIN+= ObjectYAML/COFFYAML.cpp +SRCS_EXT+= ObjectYAML/CodeViewYAMLDebugSections.cpp +SRCS_EXT+= ObjectYAML/CodeViewYAMLSymbols.cpp +SRCS_EXT+= ObjectYAML/CodeViewYAMLTypes.cpp SRCS_MIN+= ObjectYAML/DWARFYAML.cpp SRCS_MIN+= ObjectYAML/ELFYAML.cpp SRCS_MIN+= ObjectYAML/MachOYAML.cpp +SRCS_EXT+= ObjectYAML/YAML.cpp SRCS_MIN+= Option/Arg.cpp SRCS_MIN+= Option/ArgList.cpp SRCS_MIN+= Option/OptTable.cpp @@ -599,9 +662,14 @@ SRCS_EXT+= ProfileData/SampleProfWriter.cpp SRCS_MIN+= Support/APFloat.cpp SRCS_MIN+= Support/APInt.cpp SRCS_MIN+= Support/APSInt.cpp +SRCS_MIN+= Support/ARMAttributeParser.cpp SRCS_MIN+= Support/ARMBuildAttrs.cpp SRCS_MIN+= Support/Allocator.cpp SRCS_MIN+= Support/Atomic.cpp +SRCS_MIN+= Support/BinaryStreamError.cpp +SRCS_MIN+= Support/BinaryStreamReader.cpp +SRCS_MIN+= Support/BinaryStreamRef.cpp +SRCS_MIN+= Support/BinaryStreamWriter.cpp SRCS_MIN+= Support/BlockFrequency.cpp SRCS_MIN+= Support/BranchProbability.cpp SRCS_EXT+= Support/COM.cpp @@ -615,8 +683,8 @@ SRCS_MIN+= Support/CrashRecoveryContext.cpp SRCS_MIN+= Support/DAGDeltaAlgorithm.cpp SRCS_MIN+= Support/DataExtractor.cpp SRCS_MIN+= Support/Debug.cpp +SRCS_MIN+= Support/DebugCounter.cpp SRCS_MIN+= Support/DeltaAlgorithm.cpp -SRCS_MIN+= Support/Dwarf.cpp SRCS_MIN+= Support/DynamicLibrary.cpp SRCS_MIN+= Support/Errno.cpp SRCS_MIN+= Support/Error.cpp @@ -637,6 +705,7 @@ SRCS_MIN+= Support/LEB128.cpp SRCS_MIN+= Support/LineIterator.cpp SRCS_MIN+= Support/Locale.cpp SRCS_MIN+= Support/LockFileManager.cpp +SRCS_MIN+= Support/LowLevelType.cpp SRCS_MIN+= Support/MD5.cpp SRCS_MIN+= Support/ManagedStatic.cpp SRCS_MIN+= Support/MathExtras.cpp @@ -645,6 +714,7 @@ SRCS_MIN+= Support/MemoryBuffer.cpp SRCS_MIN+= Support/Mutex.cpp SRCS_MIN+= Support/NativeFormatting.cpp SRCS_MIN+= Support/Options.cpp +SRCS_LLD+= Support/Parallel.cpp SRCS_MIN+= Support/Path.cpp SRCS_MIN+= Support/PluginLoader.cpp SRCS_MIN+= Support/PrettyStackTrace.cpp @@ -656,7 +726,6 @@ SRCS_MIN+= Support/Regex.cpp SRCS_MIN+= Support/SHA1.cpp SRCS_MIN+= Support/ScaledNumber.cpp SRCS_MIN+= Support/ScopedPrinter.cpp -SRCS_MIN+= Support/SearchForAddressOfSpecialSymbol.cpp SRCS_MIN+= Support/Signals.cpp SRCS_MIN+= Support/SmallPtrSet.cpp SRCS_MIN+= Support/SmallVector.cpp @@ -702,25 +771,31 @@ SRCS_MIN+= TableGen/TGParser.cpp SRCS_MIN+= TableGen/TableGenBackend.cpp SRCS_MIN+= Target/AArch64/AArch64A53Fix835769.cpp SRCS_MIN+= Target/AArch64/AArch64A57FPLoadBalancing.cpp -SRCS_MIN+= Target/AArch64/AArch64AddressTypePromotion.cpp SRCS_MIN+= Target/AArch64/AArch64AdvSIMDScalarPass.cpp SRCS_MIN+= Target/AArch64/AArch64AsmPrinter.cpp +SRCS_MIN+= Target/AArch64/AArch64CallLowering.cpp SRCS_MIN+= Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp SRCS_MIN+= Target/AArch64/AArch64CollectLOH.cpp +SRCS_MIN+= Target/AArch64/AArch64CondBrTuning.cpp SRCS_MIN+= Target/AArch64/AArch64ConditionOptimizer.cpp SRCS_MIN+= Target/AArch64/AArch64ConditionalCompares.cpp SRCS_MIN+= Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp SRCS_MIN+= Target/AArch64/AArch64ExpandPseudoInsts.cpp +SRCS_MIN+= Target/AArch64/AArch64FalkorHWPFFix.cpp SRCS_MIN+= Target/AArch64/AArch64FastISel.cpp SRCS_MIN+= Target/AArch64/AArch64FrameLowering.cpp SRCS_MIN+= Target/AArch64/AArch64ISelDAGToDAG.cpp SRCS_MIN+= Target/AArch64/AArch64ISelLowering.cpp SRCS_MIN+= Target/AArch64/AArch64InstrInfo.cpp +SRCS_MIN+= Target/AArch64/AArch64InstructionSelector.cpp +SRCS_MIN+= Target/AArch64/AArch64LegalizerInfo.cpp SRCS_MIN+= Target/AArch64/AArch64LoadStoreOptimizer.cpp SRCS_MIN+= Target/AArch64/AArch64MCInstLower.cpp +SRCS_MIN+= Target/AArch64/AArch64MacroFusion.cpp SRCS_MIN+= Target/AArch64/AArch64PBQPRegAlloc.cpp SRCS_MIN+= Target/AArch64/AArch64PromoteConstant.cpp SRCS_MIN+= Target/AArch64/AArch64RedundantCopyElimination.cpp +SRCS_MIN+= Target/AArch64/AArch64RegisterBankInfo.cpp SRCS_MIN+= Target/AArch64/AArch64RegisterInfo.cpp SRCS_MIN+= Target/AArch64/AArch64SelectionDAGInfo.cpp SRCS_MIN+= Target/AArch64/AArch64StorePairSuppress.cpp @@ -742,12 +817,15 @@ SRCS_MIN+= Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp SRCS_MIN+= Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp SRCS_MIN+= Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp SRCS_MIN+= Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp +SRCS_MIN+= Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp +SRCS_MIN+= Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp SRCS_MIN+= Target/AArch64/TargetInfo/AArch64TargetInfo.cpp SRCS_MIN+= Target/AArch64/Utils/AArch64BaseInfo.cpp SRCS_MIN+= Target/ARM/A15SDOptimizer.cpp SRCS_MIN+= Target/ARM/ARMAsmPrinter.cpp SRCS_MIN+= Target/ARM/ARMBaseInstrInfo.cpp SRCS_MIN+= Target/ARM/ARMBaseRegisterInfo.cpp +SRCS_MIN+= Target/ARM/ARMCallLowering.cpp SRCS_MIN+= Target/ARM/ARMComputeBlockSize.cpp SRCS_MIN+= Target/ARM/ARMConstantIslandPass.cpp SRCS_MIN+= Target/ARM/ARMConstantPoolValue.cpp @@ -758,10 +836,14 @@ SRCS_MIN+= Target/ARM/ARMHazardRecognizer.cpp SRCS_MIN+= Target/ARM/ARMISelDAGToDAG.cpp SRCS_MIN+= Target/ARM/ARMISelLowering.cpp SRCS_MIN+= Target/ARM/ARMInstrInfo.cpp +SRCS_MIN+= Target/ARM/ARMInstructionSelector.cpp +SRCS_MIN+= Target/ARM/ARMLegalizerInfo.cpp SRCS_MIN+= Target/ARM/ARMLoadStoreOptimizer.cpp SRCS_MIN+= Target/ARM/ARMMCInstLower.cpp SRCS_MIN+= Target/ARM/ARMMachineFunctionInfo.cpp +SRCS_MIN+= Target/ARM/ARMMacroFusion.cpp SRCS_MIN+= Target/ARM/ARMOptimizeBarriersPass.cpp +SRCS_MIN+= Target/ARM/ARMRegisterBankInfo.cpp SRCS_MIN+= Target/ARM/ARMRegisterInfo.cpp SRCS_MIN+= Target/ARM/ARMSelectionDAGInfo.cpp SRCS_MIN+= Target/ARM/ARMSubtarget.cpp @@ -807,6 +889,7 @@ SRCS_MIN+= Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp SRCS_MIN+= Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp SRCS_MIN+= Target/Mips/MCTargetDesc/MipsOptionRecord.cpp SRCS_MIN+= Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp +SRCS_MIN+= Target/Mips/MicroMipsSizeReduction.cpp SRCS_MIN+= Target/Mips/Mips16FrameLowering.cpp SRCS_MIN+= Target/Mips/Mips16HardFloat.cpp SRCS_MIN+= Target/Mips/Mips16HardFloatInfo.cpp @@ -858,6 +941,7 @@ SRCS_MIN+= Target/PowerPC/PPCBranchSelector.cpp SRCS_MIN+= Target/PowerPC/PPCCCState.cpp SRCS_MIN+= Target/PowerPC/PPCCTRLoops.cpp SRCS_MIN+= Target/PowerPC/PPCEarlyReturn.cpp +SRCS_MIN+= Target/PowerPC/PPCExpandISEL.cpp SRCS_MIN+= Target/PowerPC/PPCFastISel.cpp SRCS_MIN+= Target/PowerPC/PPCFrameLowering.cpp SRCS_MIN+= Target/PowerPC/PPCHazardRecognizers.cpp @@ -928,7 +1012,9 @@ SRCS_MIN+= Target/X86/TargetInfo/X86TargetInfo.cpp SRCS_MIN+= Target/X86/Utils/X86ShuffleDecode.cpp SRCS_MIN+= Target/X86/X86AsmPrinter.cpp SRCS_MIN+= Target/X86/X86CallFrameOptimization.cpp +SRCS_MIN+= Target/X86/X86CallLowering.cpp SRCS_MIN+= Target/X86/X86CallingConv.cpp +SRCS_MIN+= Target/X86/X86CmovConversion.cpp SRCS_MIN+= Target/X86/X86EvexToVex.cpp SRCS_MIN+= Target/X86/X86ExpandPseudo.cpp SRCS_MIN+= Target/X86/X86FastISel.cpp @@ -941,11 +1027,15 @@ SRCS_MIN+= Target/X86/X86ISelDAGToDAG.cpp SRCS_MIN+= Target/X86/X86ISelLowering.cpp SRCS_MIN+= Target/X86/X86InstrFMA3Info.cpp SRCS_MIN+= Target/X86/X86InstrInfo.cpp +SRCS_MIN+= Target/X86/X86InstructionSelector.cpp SRCS_MIN+= Target/X86/X86InterleavedAccess.cpp +SRCS_MIN+= Target/X86/X86LegalizerInfo.cpp SRCS_MIN+= Target/X86/X86MCInstLower.cpp SRCS_MIN+= Target/X86/X86MachineFunctionInfo.cpp +SRCS_MIN+= Target/X86/X86MacroFusion.cpp SRCS_MIN+= Target/X86/X86OptimizeLEAs.cpp SRCS_MIN+= Target/X86/X86PadShortFunction.cpp +SRCS_MIN+= Target/X86/X86RegisterBankInfo.cpp SRCS_MIN+= Target/X86/X86RegisterInfo.cpp SRCS_MIN+= Target/X86/X86SelectionDAGInfo.cpp SRCS_MIN+= Target/X86/X86ShuffleDecodeConstantPool.cpp @@ -956,6 +1046,8 @@ SRCS_MIN+= Target/X86/X86TargetTransformInfo.cpp SRCS_MIN+= Target/X86/X86VZeroUpper.cpp SRCS_MIN+= Target/X86/X86WinAllocaExpander.cpp SRCS_MIN+= Target/X86/X86WinEHState.cpp +SRCS_EXT+= ToolDrivers/llvm-dlltool/DlltoolDriver.cpp +SRCS_EXL+= ToolDrivers/llvm-lib/LibDriver.cpp SRCS_MIN+= Transforms/Coroutines/CoroCleanup.cpp SRCS_MIN+= Transforms/Coroutines/CoroEarly.cpp SRCS_MIN+= Transforms/Coroutines/CoroElide.cpp @@ -1016,6 +1108,7 @@ SRCS_MIN+= Transforms/Instrumentation/InstrProfiling.cpp SRCS_MIN+= Transforms/Instrumentation/Instrumentation.cpp SRCS_MIN+= Transforms/Instrumentation/MemorySanitizer.cpp SRCS_MIN+= Transforms/Instrumentation/PGOInstrumentation.cpp +SRCS_MIN+= Transforms/Instrumentation/PGOMemOPSizeOpt.cpp SRCS_MIN+= Transforms/Instrumentation/SanitizerCoverage.cpp SRCS_MIN+= Transforms/Instrumentation/ThreadSanitizer.cpp SRCS_MIN+= Transforms/ObjCARC/DependencyAnalysis.cpp @@ -1040,13 +1133,14 @@ SRCS_MIN+= Transforms/Scalar/FlattenCFGPass.cpp SRCS_MIN+= Transforms/Scalar/Float2Int.cpp SRCS_MIN+= Transforms/Scalar/GVN.cpp SRCS_MIN+= Transforms/Scalar/GVNHoist.cpp +SRCS_MIN+= Transforms/Scalar/GVNSink.cpp SRCS_MIN+= Transforms/Scalar/GuardWidening.cpp SRCS_MIN+= Transforms/Scalar/IVUsersPrinter.cpp SRCS_MIN+= Transforms/Scalar/IndVarSimplify.cpp SRCS_MIN+= Transforms/Scalar/InductiveRangeCheckElimination.cpp +SRCS_EXT+= Transforms/Scalar/InferAddressSpaces.cpp SRCS_MIN+= Transforms/Scalar/JumpThreading.cpp SRCS_MIN+= Transforms/Scalar/LICM.cpp -SRCS_MIN+= Transforms/Scalar/LoadCombine.cpp SRCS_MIN+= Transforms/Scalar/LoopAccessAnalysisPrinter.cpp SRCS_MIN+= Transforms/Scalar/LoopDataPrefetch.cpp SRCS_MIN+= Transforms/Scalar/LoopDeletion.cpp @@ -1056,6 +1150,7 @@ SRCS_MIN+= Transforms/Scalar/LoopInstSimplify.cpp SRCS_MIN+= Transforms/Scalar/LoopInterchange.cpp SRCS_MIN+= Transforms/Scalar/LoopLoadElimination.cpp SRCS_MIN+= Transforms/Scalar/LoopPassManager.cpp +SRCS_MIN+= Transforms/Scalar/LoopPredication.cpp SRCS_MIN+= Transforms/Scalar/LoopRerollPass.cpp SRCS_MIN+= Transforms/Scalar/LoopRotation.cpp SRCS_MIN+= Transforms/Scalar/LoopSimplifyCFG.cpp @@ -1081,6 +1176,7 @@ SRCS_MIN+= Transforms/Scalar/SROA.cpp SRCS_EXT+= Transforms/Scalar/Scalar.cpp SRCS_MIN+= Transforms/Scalar/Scalarizer.cpp SRCS_MIN+= Transforms/Scalar/SeparateConstOffsetFromGEP.cpp +SRCS_MIN+= Transforms/Scalar/SimpleLoopUnswitch.cpp SRCS_MIN+= Transforms/Scalar/SimplifyCFGPass.cpp SRCS_MIN+= Transforms/Scalar/Sink.cpp SRCS_MIN+= Transforms/Scalar/SpeculativeExecution.cpp @@ -1121,10 +1217,11 @@ SRCS_MIN+= Transforms/Utils/LoopVersioning.cpp SRCS_MIN+= Transforms/Utils/LowerInvoke.cpp SRCS_MIN+= Transforms/Utils/LowerSwitch.cpp SRCS_MIN+= Transforms/Utils/Mem2Reg.cpp -SRCS_MIN+= Transforms/Utils/MemorySSA.cpp SRCS_MIN+= Transforms/Utils/MetaRenamer.cpp SRCS_MIN+= Transforms/Utils/ModuleUtils.cpp SRCS_MIN+= Transforms/Utils/NameAnonGlobals.cpp +SRCS_MIN+= Transforms/Utils/OrderedInstructions.cpp +SRCS_MIN+= Transforms/Utils/PredicateInfo.cpp SRCS_MIN+= Transforms/Utils/PromoteMemoryToRegister.cpp SRCS_MIN+= Transforms/Utils/SSAUpdater.cpp SRCS_MIN+= Transforms/Utils/SanitizerStats.cpp @@ -1138,12 +1235,13 @@ SRCS_MIN+= Transforms/Utils/StripNonLineTableDebugInfo.cpp SRCS_MIN+= Transforms/Utils/SymbolRewriter.cpp SRCS_MIN+= Transforms/Utils/UnifyFunctionExitNodes.cpp SRCS_EXT+= Transforms/Utils/Utils.cpp +SRCS_MIN+= Transforms/Utils/VNCoercion.cpp SRCS_MIN+= Transforms/Utils/ValueMapper.cpp -SRCS_MIN+= Transforms/Vectorize/BBVectorize.cpp SRCS_MIN+= Transforms/Vectorize/LoadStoreVectorizer.cpp SRCS_MIN+= Transforms/Vectorize/LoopVectorize.cpp SRCS_MIN+= Transforms/Vectorize/SLPVectorizer.cpp SRCS_EXT+= Transforms/Vectorize/Vectorize.cpp +SRCS_EXT+= XRay/InstrumentationMap.cpp SRCS_ALL+= ${SRCS_MIN} .if !defined(TOOLS_PREFIX) || ${MK_LLD_IS_LD} != "no" @@ -1174,27 +1272,45 @@ SRCS+= ${SRCS_ALL:O} llvm/IR/Attributes.gen: ${LLVM_SRCS}/include/llvm/IR/Attributes.td ${LLVM_TBLGEN} -gen-attrs \ - -I ${LLVM_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + -I ${LLVM_SRCS}/include -d ${.TARGET}.d -o ${.TARGET} \ ${LLVM_SRCS}/include/llvm/IR/Attributes.td TGHDRS+= llvm/IR/Attributes.gen llvm/IR/Intrinsics.gen: ${LLVM_SRCS}/include/llvm/IR/Intrinsics.td ${LLVM_TBLGEN} -gen-intrinsic \ - -I ${LLVM_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + -I ${LLVM_SRCS}/include -d ${.TARGET}.d -o ${.TARGET} \ ${LLVM_SRCS}/include/llvm/IR/Intrinsics.td TGHDRS+= llvm/IR/Intrinsics.gen AttributesCompatFunc.inc: ${LLVM_SRCS}/lib/IR/AttributesCompatFunc.td ${LLVM_TBLGEN} -gen-attrs \ - -I ${LLVM_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + -I ${LLVM_SRCS}/include -d ${.TARGET}.d -o ${.TARGET} \ ${LLVM_SRCS}/lib/IR/AttributesCompatFunc.td TGHDRS+= AttributesCompatFunc.inc -Options.inc: ${LLVM_SRCS}/lib/LibDriver/Options.td +llvm-lib/Options.inc: ${LLVM_SRCS}/lib/ToolDrivers/llvm-lib/Options.td ${LLVM_TBLGEN} -gen-opt-parser-defs \ - -I ${LLVM_SRCS}/include -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ - ${LLVM_SRCS}/lib/LibDriver/Options.td -TGHDRS+= Options.inc + -I ${LLVM_SRCS}/include -d ${.TARGET}.d -o ${.TARGET} \ + ${LLVM_SRCS}/lib/ToolDrivers/llvm-lib/Options.td +TGHDRS+= llvm-lib/Options.inc +CFLAGS.LibDriver.cpp+= -I${.OBJDIR}/llvm-lib + +llvm-dlltool/Options.inc: ${LLVM_SRCS}/lib/ToolDrivers/llvm-dlltool/Options.td + ${LLVM_TBLGEN} -gen-opt-parser-defs \ + -I ${LLVM_SRCS}/include -d ${.TARGET}.d -o ${.TARGET} \ + ${LLVM_SRCS}/lib/ToolDrivers/llvm-dlltool/Options.td +TGHDRS+= llvm-dlltool/Options.inc +CFLAGS.DlltoolDriver.cpp+= -I${.OBJDIR}/llvm-dlltool + +beforebuild: +# 20170724 remove stale Options.inc file, of which there are two different +# versions after upstream r308421, one for llvm-lib, one for llvm-dlltool +.for f in Options.inc +.if exists(${f}) || exists(${f}.d) + @echo Removing stale generated ${f} files + @rm -f ${f} ${f}.d +.endif +.endfor # Note: some rules are superfluous, not every combination is valid. .for arch in \ @@ -1207,17 +1323,20 @@ TGHDRS+= Options.inc CodeEmitter/-gen-emitter \ DAGISel/-gen-dag-isel \ DisassemblerTables/-gen-disassembler \ + EVEX2VEXTables/-gen-x86-EVEX2VEX-tables \ FastISel/-gen-fast-isel \ + GlobalISel/-gen-global-isel \ InstrInfo/-gen-instr-info \ MCCodeEmitter/-gen-emitter \ MCPseudoLowering/-gen-pseudo-lowering \ + RegisterBank/-gen-register-bank \ RegisterInfo/-gen-register-info \ SubtargetInfo/-gen-subtarget \ SystemOperands/-gen-searchable-tables ${arch:T}Gen${hdr:H}.inc: ${LLVM_SRCS}/lib/Target/${arch:H}/${arch:T}.td ${LLVM_TBLGEN} ${hdr:T:C/,/ /g} \ -I ${LLVM_SRCS}/include -I ${LLVM_SRCS}/lib/Target/${arch:H} \ - -d ${.TARGET:C/$/.d/} -o ${.TARGET} \ + -d ${.TARGET}.d -o ${.TARGET} \ ${LLVM_SRCS}/lib/Target/${arch:H}/${arch:T}.td . endfor .endfor @@ -1228,9 +1347,11 @@ TGHDRS+= AArch64GenCallingConv.inc TGHDRS+= AArch64GenDAGISel.inc TGHDRS+= AArch64GenDisassemblerTables.inc TGHDRS+= AArch64GenFastISel.inc +TGHDRS+= AArch64GenGlobalISel.inc TGHDRS+= AArch64GenInstrInfo.inc TGHDRS+= AArch64GenMCCodeEmitter.inc TGHDRS+= AArch64GenMCPseudoLowering.inc +TGHDRS+= AArch64GenRegisterBank.inc TGHDRS+= AArch64GenRegisterInfo.inc TGHDRS+= AArch64GenSubtargetInfo.inc TGHDRS+= AArch64GenSystemOperands.inc @@ -1240,9 +1361,11 @@ TGHDRS+= ARMGenCallingConv.inc TGHDRS+= ARMGenDAGISel.inc TGHDRS+= ARMGenDisassemblerTables.inc TGHDRS+= ARMGenFastISel.inc +TGHDRS+= ARMGenGlobalISel.inc TGHDRS+= ARMGenInstrInfo.inc TGHDRS+= ARMGenMCCodeEmitter.inc TGHDRS+= ARMGenMCPseudoLowering.inc +TGHDRS+= ARMGenRegisterBank.inc TGHDRS+= ARMGenRegisterInfo.inc TGHDRS+= ARMGenSubtargetInfo.inc TGHDRS+= MipsGenAsmMatcher.inc @@ -1281,8 +1404,11 @@ TGHDRS+= X86GenAsmWriter1.inc TGHDRS+= X86GenCallingConv.inc TGHDRS+= X86GenDAGISel.inc TGHDRS+= X86GenDisassemblerTables.inc +TGHDRS+= X86GenEVEX2VEXTables.inc TGHDRS+= X86GenFastISel.inc +TGHDRS+= X86GenGlobalISel.inc TGHDRS+= X86GenInstrInfo.inc +TGHDRS+= X86GenRegisterBank.inc TGHDRS+= X86GenRegisterInfo.inc TGHDRS+= X86GenSubtargetInfo.inc diff --git a/lib/clang/libllvmminimal/Makefile b/lib/clang/libllvmminimal/Makefile index fc16034..804d856 100644 --- a/lib/clang/libllvmminimal/Makefile +++ b/lib/clang/libllvmminimal/Makefile @@ -6,6 +6,7 @@ LIB= llvmminimal INTERNALLIB= SRCDIR= lib +SRCS+= Support/APFloat.cpp SRCS+= Support/APInt.cpp SRCS+= Support/Atomic.cpp SRCS+= Support/CommandLine.cpp @@ -21,6 +22,8 @@ SRCS+= Support/Hashing.cpp SRCS+= Support/Host.cpp SRCS+= Support/IntEqClasses.cpp SRCS+= Support/Locale.cpp +SRCS+= Support/LowLevelType.cpp +SRCS+= Support/MD5.cpp SRCS+= Support/ManagedStatic.cpp SRCS+= Support/MemoryBuffer.cpp SRCS+= Support/Mutex.cpp diff --git a/lib/clang/llvm.build.mk b/lib/clang/llvm.build.mk index 04a2451..f5838cf 100644 --- a/lib/clang/llvm.build.mk +++ b/lib/clang/llvm.build.mk @@ -12,8 +12,7 @@ CFLAGS+= -I${SRCTOP}/lib/clang/include CFLAGS+= -I${LLVM_SRCS}/include -CFLAGS+= -DLLVM_ON_UNIX -CFLAGS+= -DLLVM_ON_FREEBSD +CFLAGS+= -DLLVM_BUILD_GLOBAL_ISEL CFLAGS+= -D__STDC_LIMIT_MACROS CFLAGS+= -D__STDC_CONSTANT_MACROS CFLAGS+= -DNDEBUG diff --git a/lib/libc++/Makefile b/lib/libc++/Makefile index 35cc88c..da1247d 100644 --- a/lib/libc++/Makefile +++ b/lib/libc++/Makefile @@ -24,6 +24,7 @@ SRCS+= chrono.cpp SRCS+= condition_variable.cpp SRCS+= debug.cpp SRCS+= exception.cpp +SRCS+= functional.cpp SRCS+= future.cpp SRCS+= hash.cpp SRCS+= ios.cpp @@ -45,6 +46,7 @@ SRCS+= typeinfo.cpp SRCS+= utility.cpp SRCS+= valarray.cpp SRCS+= variant.cpp +SRCS+= vector.cpp CXXRT_SRCS+= auxhelper.cc CXXRT_SRCS+= dynamic_cast.cc @@ -64,7 +66,12 @@ cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA .endfor WARNS= 0 -CFLAGS+= -isystem ${HDRDIR} -isystem ${_LIBCXXRTDIR} -nostdinc++ -nostdlib -D_LIBCPP_BUILDING_LIBRARY -DLIBCXXRT +CFLAGS+= -isystem ${HDRDIR} +CFLAGS+= -isystem ${_LIBCXXRTDIR} +CFLAGS+= -nostdinc++ +CFLAGS+= -nostdlib +CFLAGS+= -D_LIBCPP_BUILDING_LIBRARY +CFLAGS+= -DLIBCXXRT .if empty(CXXFLAGS:M-std=*) CXXFLAGS+= -std=c++11 .endif @@ -85,7 +92,6 @@ STD_HEADERS+= __libcpp_version STD_HEADERS+= __locale STD_HEADERS+= __mutex_base STD_HEADERS+= __nullptr -STD_HEADERS+= __refstring STD_HEADERS+= __split_buffer STD_HEADERS+= __sso_allocator STD_HEADERS+= __std_stream @@ -93,7 +99,7 @@ STD_HEADERS+= __string STD_HEADERS+= __threading_support STD_HEADERS+= __tree STD_HEADERS+= __tuple -STD_HEADERS+= __undef_min_max +STD_HEADERS+= __undef_macros STD_HEADERS+= algorithm STD_HEADERS+= any STD_HEADERS+= array @@ -214,6 +220,7 @@ EXP_HEADERS+= __memory EXP_HEADERS+= algorithm EXP_HEADERS+= any EXP_HEADERS+= chrono +EXP_HEADERS+= coroutine EXP_HEADERS+= deque EXP_HEADERS+= dynarray EXP_HEADERS+= filesystem diff --git a/lib/libclang_rt/Makefile.inc b/lib/libclang_rt/Makefile.inc index 08ab48f..9d915dd 100644 --- a/lib/libclang_rt/Makefile.inc +++ b/lib/libclang_rt/Makefile.inc @@ -7,7 +7,7 @@ CRTSRC= ${SRCTOP}/contrib/compiler-rt .PATH: ${CRTSRC}/lib -CLANGDIR= /usr/lib/clang/4.0.0 +CLANGDIR= /usr/lib/clang/5.0.1 LIBDIR= ${CLANGDIR}/lib/freebsd NO_PIC= diff --git a/lib/libclang_rt/asan/Makefile b/lib/libclang_rt/asan/Makefile index e8a98f5..8c11338 100644 --- a/lib/libclang_rt/asan/Makefile +++ b/lib/libclang_rt/asan/Makefile @@ -37,18 +37,16 @@ SRCS+= sanitizer_common/sancov_flags.cc SRCS+= sanitizer_common/sanitizer_allocator.cc SRCS+= sanitizer_common/sanitizer_common.cc SRCS+= sanitizer_common/sanitizer_common_libcdep.cc -SRCS+= sanitizer_common/sanitizer_coverage_libcdep.cc SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cc -SRCS+= sanitizer_common/sanitizer_coverage_mapping_libcdep.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc SRCS+= sanitizer_common/sanitizer_flag_parser.cc SRCS+= sanitizer_common/sanitizer_flags.cc SRCS+= sanitizer_common/sanitizer_libc.cc SRCS+= sanitizer_common/sanitizer_libignore.cc SRCS+= sanitizer_common/sanitizer_linux.cc SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc -SRCS+= sanitizer_common/sanitizer_linux_x86_64.S SRCS+= sanitizer_common/sanitizer_mac.cc SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc diff --git a/lib/libclang_rt/asan_dynamic/Makefile b/lib/libclang_rt/asan_dynamic/Makefile index 118fa1b..9ef7dc4 100644 --- a/lib/libclang_rt/asan_dynamic/Makefile +++ b/lib/libclang_rt/asan_dynamic/Makefile @@ -38,9 +38,7 @@ SRCS+= sanitizer_common/sancov_flags.cc SRCS+= sanitizer_common/sanitizer_allocator.cc SRCS+= sanitizer_common/sanitizer_common.cc SRCS+= sanitizer_common/sanitizer_common_libcdep.cc -SRCS+= sanitizer_common/sanitizer_coverage_libcdep.cc SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cc -SRCS+= sanitizer_common/sanitizer_coverage_mapping_libcdep.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc SRCS+= sanitizer_common/sanitizer_flag_parser.cc @@ -49,7 +47,6 @@ SRCS+= sanitizer_common/sanitizer_libc.cc SRCS+= sanitizer_common/sanitizer_libignore.cc SRCS+= sanitizer_common/sanitizer_linux.cc SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc -SRCS+= sanitizer_common/sanitizer_linux_x86_64.S SRCS+= sanitizer_common/sanitizer_mac.cc SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc diff --git a/lib/libclang_rt/include/Makefile b/lib/libclang_rt/include/Makefile index 412063a..7e855ea 100644 --- a/lib/libclang_rt/include/Makefile +++ b/lib/libclang_rt/include/Makefile @@ -15,6 +15,7 @@ INCS+= esan_interface.h INCS+= linux_syscall_hooks.h INCS+= lsan_interface.h INCS+= msan_interface.h +INCS+= tsan_interface.h INCS+= tsan_interface_atomic.h .include <bsd.prog.mk> diff --git a/lib/libclang_rt/profile/Makefile b/lib/libclang_rt/profile/Makefile index 74e79ce..f5860a6 100644 --- a/lib/libclang_rt/profile/Makefile +++ b/lib/libclang_rt/profile/Makefile @@ -13,6 +13,7 @@ SRCS+= profile/InstrProfilingBuffer.c SRCS+= profile/InstrProfilingFile.c SRCS+= profile/InstrProfilingMerge.c SRCS+= profile/InstrProfilingMergeFile.c +SRCS+= profile/InstrProfilingNameVar.c SRCS+= profile/InstrProfilingPlatformDarwin.c SRCS+= profile/InstrProfilingPlatformLinux.c SRCS+= profile/InstrProfilingPlatformOther.c diff --git a/lib/libclang_rt/safestack/Makefile b/lib/libclang_rt/safestack/Makefile index 6612120..fd305e6 100644 --- a/lib/libclang_rt/safestack/Makefile +++ b/lib/libclang_rt/safestack/Makefile @@ -14,12 +14,12 @@ SRCS+= sanitizer_common/sanitizer_common.cc SRCS+= sanitizer_common/sanitizer_common_nolibc.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc SRCS+= sanitizer_common/sanitizer_flag_parser.cc SRCS+= sanitizer_common/sanitizer_flags.cc SRCS+= sanitizer_common/sanitizer_libc.cc SRCS+= sanitizer_common/sanitizer_libignore.cc SRCS+= sanitizer_common/sanitizer_linux.cc -SRCS+= sanitizer_common/sanitizer_linux_x86_64.S SRCS+= sanitizer_common/sanitizer_mac.cc SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc diff --git a/lib/libclang_rt/stats/Makefile b/lib/libclang_rt/stats/Makefile index 8487281..dd214cf 100644 --- a/lib/libclang_rt/stats/Makefile +++ b/lib/libclang_rt/stats/Makefile @@ -8,18 +8,16 @@ SRCS+= sanitizer_common/sancov_flags.cc SRCS+= sanitizer_common/sanitizer_allocator.cc SRCS+= sanitizer_common/sanitizer_common.cc SRCS+= sanitizer_common/sanitizer_common_libcdep.cc -SRCS+= sanitizer_common/sanitizer_coverage_libcdep.cc SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cc -SRCS+= sanitizer_common/sanitizer_coverage_mapping_libcdep.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc SRCS+= sanitizer_common/sanitizer_flag_parser.cc SRCS+= sanitizer_common/sanitizer_flags.cc SRCS+= sanitizer_common/sanitizer_libc.cc SRCS+= sanitizer_common/sanitizer_libignore.cc SRCS+= sanitizer_common/sanitizer_linux.cc SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc -SRCS+= sanitizer_common/sanitizer_linux_x86_64.S SRCS+= sanitizer_common/sanitizer_mac.cc SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc diff --git a/lib/libclang_rt/ubsan_standalone/Makefile b/lib/libclang_rt/ubsan_standalone/Makefile index ed008e5..75f5268 100644 --- a/lib/libclang_rt/ubsan_standalone/Makefile +++ b/lib/libclang_rt/ubsan_standalone/Makefile @@ -8,18 +8,16 @@ SRCS+= sanitizer_common/sancov_flags.cc SRCS+= sanitizer_common/sanitizer_allocator.cc SRCS+= sanitizer_common/sanitizer_common.cc SRCS+= sanitizer_common/sanitizer_common_libcdep.cc -SRCS+= sanitizer_common/sanitizer_coverage_libcdep.cc SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cc -SRCS+= sanitizer_common/sanitizer_coverage_mapping_libcdep.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc SRCS+= sanitizer_common/sanitizer_flag_parser.cc SRCS+= sanitizer_common/sanitizer_flags.cc SRCS+= sanitizer_common/sanitizer_libc.cc SRCS+= sanitizer_common/sanitizer_libignore.cc SRCS+= sanitizer_common/sanitizer_linux.cc SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc -SRCS+= sanitizer_common/sanitizer_linux_x86_64.S SRCS+= sanitizer_common/sanitizer_mac.cc SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc diff --git a/lib/libcompiler_rt/Makefile.inc b/lib/libcompiler_rt/Makefile.inc index 3d05eed..69e14d6 100644 --- a/lib/libcompiler_rt/Makefile.inc +++ b/lib/libcompiler_rt/Makefile.inc @@ -39,6 +39,7 @@ SRCF+= enable_execute_stack SRCF+= eprintf SRCF+= extendhfsf2 SRCF+= ffsdi2 +SRCF+= ffssi2 SRCF+= ffsti2 SRCF+= fixdfdi SRCF+= fixdfti @@ -219,3 +220,10 @@ SRCS+= switch8.S SRCS+= switchu8.S SRCS+= sync_synchronize.S .endif + +# GCC-6.3 on mips32 requires bswap32 built-in. +.if ${MACHINE_CPUARCH} == "mips" +SRCS+= bswapdi2.c +SRCS+= bswapsi2.c +.endif + diff --git a/lib/libgpio/gpio.c b/lib/libgpio/gpio.c index 8170822..48642f5 100644 --- a/lib/libgpio/gpio.c +++ b/lib/libgpio/gpio.c @@ -276,3 +276,44 @@ gpio_pin_pulsate(gpio_handle_t handle, gpio_pin_t pin) { return (gpio_pin_set_flag(handle, pin, GPIO_PIN_PULSATE)); } + +int +gpio_pin_pwm(gpio_handle_t handle, gpio_pin_t pin) +{ + return (gpio_pin_set_flag(handle, pin, GPIO_PIN_PWM)); +} + +int +gpio_pwm_get(gpio_handle_t handle, gpio_pwm_t pwm, gpio_pin_t pin, + uint32_t reg, uint32_t *value) +{ + struct gpio_pwm_req pwmreq; + + bzero(&pwmreq, sizeof(pwmreq)); + pwmreq.gp_pwm = pwm; + pwmreq.gp_pwm_pin = pin; + pwmreq.gp_pwm_reg = reg; + if (ioctl(handle, GPIOPWMGET, &pwmreq) < 0) + return (-1); + *value = pwmreq.gp_pwm_value; + + return (0); + +} + +int +gpio_pwm_set(gpio_handle_t handle, gpio_pwm_t pwm, gpio_pin_t pin, + uint32_t reg, uint32_t value) +{ + struct gpio_pwm_req pwmreq; + + bzero(&pwmreq, sizeof(pwmreq)); + pwmreq.gp_pwm = pwm; + pwmreq.gp_pwm_pin = pin; + pwmreq.gp_pwm_reg = reg; + pwmreq.gp_pwm_value = value; + if (ioctl(handle, GPIOPWMSET, &pwmreq) < 0) + return (-1); + + return (0); +} diff --git a/lib/libgpio/libgpio.h b/lib/libgpio/libgpio.h index a832234..6cc258e 100644 --- a/lib/libgpio/libgpio.h +++ b/lib/libgpio/libgpio.h @@ -35,6 +35,7 @@ __BEGIN_DECLS #define GPIO_INVALID_HANDLE -1 typedef int gpio_handle_t; +typedef int32_t gpio_pwm_t; typedef uint32_t gpio_pin_t; /* @@ -104,6 +105,13 @@ int gpio_pin_pulldown(gpio_handle_t, gpio_pin_t); int gpio_pin_invin(gpio_handle_t, gpio_pin_t); int gpio_pin_invout(gpio_handle_t, gpio_pin_t); int gpio_pin_pulsate(gpio_handle_t, gpio_pin_t); +int gpio_pin_pwm(gpio_handle_t, gpio_pin_t); + +/* PWM Settings. */ +int gpio_pwm_get(gpio_handle_t, gpio_pwm_t pwm, gpio_pin_t, + uint32_t, uint32_t *); +int gpio_pwm_set(gpio_handle_t, gpio_pwm_t pwm, gpio_pin_t, + uint32_t, uint32_t); __END_DECLS diff --git a/lib/msun/Makefile b/lib/msun/Makefile index 820855c..99ab57e 100644 --- a/lib/msun/Makefile +++ b/lib/msun/Makefile @@ -13,11 +13,7 @@ # PACKAGE= clibs -.if ${MACHINE_CPUARCH} == "i386" -ARCH_SUBDIR= i387 -.else -ARCH_SUBDIR= ${MACHINE_CPUARCH} -.endif +ARCH_SUBDIR= ${MACHINE_CPUARCH:S/i386/i387/} .include "${ARCH_SUBDIR}/Makefile.inc" @@ -67,8 +63,8 @@ COMMON_SRCS= b_exp.c b_log.c b_tgamma.c \ s_exp2.c s_exp2f.c s_expm1.c s_expm1f.c s_fabsf.c s_fdim.c \ s_finite.c s_finitef.c \ s_floor.c s_floorf.c s_fma.c s_fmaf.c \ - s_fmax.c s_fmaxf.c s_fmaxl.c s_fmin.c \ - s_fminf.c s_fminl.c s_frexp.c s_frexpf.c s_ilogb.c s_ilogbf.c \ + s_fmax.c s_fmaxf.c s_fmin.c \ + s_fminf.c s_frexp.c s_frexpf.c s_ilogb.c s_ilogbf.c \ s_ilogbl.c s_isfinite.c s_isnan.c s_isnormal.c \ s_llrint.c s_llrintf.c s_llround.c s_llroundf.c s_llroundl.c \ s_log1p.c s_log1pf.c s_logb.c s_logbf.c s_lrint.c s_lrintf.c \ @@ -77,7 +73,8 @@ COMMON_SRCS= b_exp.c b_log.c b_tgamma.c \ s_nexttowardf.c s_remquo.c s_remquof.c \ s_rint.c s_rintf.c s_round.c s_roundf.c \ s_scalbln.c s_scalbn.c s_scalbnf.c s_signbit.c \ - s_signgam.c s_significand.c s_significandf.c s_sin.c s_sinf.c \ + s_signgam.c s_significand.c s_significandf.c s_sin.c \ + s_sincos.c s_sincosf.c s_sinf.c \ s_tan.c s_tanf.c s_tanh.c s_tanhf.c s_tgammaf.c s_trunc.c s_truncf.c \ w_cabs.c w_cabsf.c w_drem.c w_dremf.c @@ -98,16 +95,18 @@ SYMBOL_MAPS= ${SYM_MAPS} COMMON_SRCS+= s_copysignl.c s_fabsl.c s_llrintl.c s_lrintl.c s_modfl.c .if ${LDBL_PREC} != 53 # If long double != double use these; otherwise, we alias the double versions. -COMMON_SRCS+= e_acoshl.c e_acosl.c e_asinl.c e_atan2l.c e_atanhl.c \ +COMMON_SRCS+= catrigl.c \ + e_acoshl.c e_acosl.c e_asinl.c e_atan2l.c e_atanhl.c \ e_coshl.c e_fmodl.c e_hypotl.c \ e_lgammal.c e_lgammal_r.c \ e_remainderl.c e_sinhl.c e_sqrtl.c \ invtrig.c k_cosl.c k_sinl.c k_tanl.c \ s_asinhl.c s_atanl.c s_cbrtl.c s_ceill.c s_cosl.c s_cprojl.c \ s_csqrtl.c s_erfl.c s_exp2l.c s_expl.c s_floorl.c s_fmal.c \ - s_frexpl.c s_logbl.c s_logl.c s_nanl.c s_nextafterl.c \ - s_nexttoward.c s_remquol.c s_rintl.c s_roundl.c s_scalbnl.c \ - s_sinl.c s_tanhl.c s_tanl.c s_truncl.c w_cabsl.c + s_fmaxl.c s_fminl.c s_frexpl.c s_logbl.c s_logl.c s_nanl.c \ + s_nextafterl.c s_nexttoward.c s_remquol.c s_rintl.c s_roundl.c \ + s_scalbnl.c s_sinl.c s_sincosl.c \ + s_tanhl.c s_tanl.c s_truncl.c w_cabsl.c .endif # C99 complex functions @@ -140,7 +139,8 @@ MAN= acos.3 acosh.3 asin.3 asinh.3 atan.3 atan2.3 atanh.3 \ fma.3 fmax.3 fmod.3 hypot.3 ieee.3 ieee_test.3 ilogb.3 j0.3 \ lgamma.3 log.3 lrint.3 lround.3 math.3 nan.3 \ nextafter.3 remainder.3 rint.3 \ - round.3 scalbn.3 signbit.3 sin.3 sinh.3 sqrt.3 tan.3 tanh.3 trunc.3 \ + round.3 scalbn.3 signbit.3 sin.3 sincos.3 \ + sinh.3 sqrt.3 tan.3 tanh.3 trunc.3 \ complex.3 MLINKS+=acos.3 acosf.3 acos.3 acosl.3 @@ -151,9 +151,12 @@ MLINKS+=atan.3 atanf.3 atan.3 atanl.3 MLINKS+=atanh.3 atanhf.3 atanh.3 atanhl.3 MLINKS+=atan2.3 atan2f.3 atan2.3 atan2l.3 \ atan2.3 carg.3 atan2.3 cargf.3 atan2.3 cargl.3 -MLINKS+=cacos.3 cacosf.3 cacos.3 cacosh.3 cacos.3 cacoshf.3 \ - cacos.3 casin.3 cacos.3 casinf.3 cacos.3 casinh.3 cacos.3 casinhf.3 \ - cacos.3 catan.3 cacos.3 catanf.3 cacos.3 catanh.3 cacos.3 catanhf.3 +MLINKS+=cacos.3 cacosf.3 cacos.3 cacosl.3 \ + cacos.3 cacosh.3 cacos.3 cacoshf.3 cacos.3 cacoshl.3 \ + cacos.3 casin.3 cacos.3 casinf.3 cacos.3 casinl.3 \ + cacos.3 casinh.3 cacos.3 casinhf.3 cacos.3 casinhl.3 \ + cacos.3 catan.3 cacos.3 catanf.3 cacos.3 catanl.3 \ + cacos.3 catanh.3 cacos.3 catanhf.3 cacos.3 catanhl.3 MLINKS+=ccos.3 ccosf.3 ccos.3 csin.3 ccos.3 csinf.3 ccos.3 ctan.3 ccos.3 ctanf.3 MLINKS+=ccosh.3 ccoshf.3 ccosh.3 csinh.3 ccosh.3 csinhf.3 \ ccosh.3 ctanh.3 ccosh.3 ctanhf.3 @@ -215,6 +218,7 @@ MLINKS+=round.3 roundf.3 round.3 roundl.3 MLINKS+=scalbn.3 scalbln.3 scalbn.3 scalblnf.3 scalbn.3 scalblnl.3 MLINKS+=scalbn.3 scalbnf.3 scalbn.3 scalbnl.3 MLINKS+=sin.3 sinf.3 sin.3 sinl.3 +MLINKS+=sincos.3 sincosf.3 sin.3 sincosl.3 MLINKS+=sinh.3 sinhf.3 sinh.3 sinhl.3 MLINKS+=sqrt.3 cbrt.3 sqrt.3 cbrtf.3 sqrt.3 cbrtl.3 sqrt.3 sqrtf.3 \ sqrt.3 sqrtl.3 diff --git a/lib/msun/Symbol.map b/lib/msun/Symbol.map index d5b7f46..f7d9e03 100644 --- a/lib/msun/Symbol.map +++ b/lib/msun/Symbol.map @@ -285,3 +285,16 @@ FBSD_1.3 { FBSD_1.4 { lgammal_r; }; + +/* First added in 12.0-CURRENT */ +FBSD_1.5 { + cacoshl; + cacosl; + casinhl; + casinl; + catanl; + catanhl; + sincos; + sincosf; + sincosl; +}; diff --git a/lib/msun/amd64/Makefile.inc b/lib/msun/amd64/Makefile.inc index 6ad2276..02264c4 100644 --- a/lib/msun/amd64/Makefile.inc +++ b/lib/msun/amd64/Makefile.inc @@ -1,6 +1,7 @@ # $FreeBSD$ -ARCH_SRCS = e_remainder.S e_remainderf.S e_remainderl.S \ +ARCH_SRCS = e_fmod.S e_fmodf.S e_fmodl.S \ + e_remainder.S e_remainderf.S e_remainderl.S \ e_sqrt.S e_sqrtf.S e_sqrtl.S \ s_llrint.S s_llrintf.S s_llrintl.S \ s_logbl.S s_lrint.S s_lrintf.S s_lrintl.S \ diff --git a/lib/msun/amd64/e_fmod.S b/lib/msun/amd64/e_fmod.S new file mode 100644 index 0000000..6163134 --- /dev/null +++ b/lib/msun/amd64/e_fmod.S @@ -0,0 +1,54 @@ +/* + * Copyright (c) 1993,94 Winning Strategies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Based on the i387 version written by: + * J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +#include <machine/asm.h> +__FBSDID("$FreeBSD$") + +ENTRY(fmod) + movsd %xmm0,-8(%rsp) + movsd %xmm1,-16(%rsp) + fldl -16(%rsp) + fldl -8(%rsp) +1: fprem + fstsw %ax + testw $0x400,%ax + jne 1b + fstpl -8(%rsp) + movsd -8(%rsp),%xmm0 + fstp %st + ret +END(fmod) + + .section .note.GNU-stack,"",%progbits diff --git a/lib/msun/amd64/e_fmodf.S b/lib/msun/amd64/e_fmodf.S new file mode 100644 index 0000000..4b52040 --- /dev/null +++ b/lib/msun/amd64/e_fmodf.S @@ -0,0 +1,24 @@ +/* + * Based on the i387 version written by J.T. Conklin <jtc@netbsd.org>. + * Public domain. + */ + +#include <machine/asm.h> +__FBSDID("$FreeBSD$") + +ENTRY(fmodf) + movss %xmm0,-4(%rsp) + movss %xmm1,-8(%rsp) + flds -8(%rsp) + flds -4(%rsp) +1: fprem + fstsw %ax + testw $0x400,%ax + jne 1b + fstps -4(%rsp) + movss -4(%rsp),%xmm0 + fstp %st + ret +END(fmodf) + + .section .note.GNU-stack,"",%progbits diff --git a/lib/msun/amd64/e_fmodl.S b/lib/msun/amd64/e_fmodl.S new file mode 100644 index 0000000..8f7a3b5 --- /dev/null +++ b/lib/msun/amd64/e_fmodl.S @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1993,94 Winning Strategies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Based on the i387 version written by: + * J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +#include <machine/asm.h> +__FBSDID("$FreeBSD$") + +ENTRY(fmodl) + fldt 24(%rsp) + fldt 8(%rsp) +1: fprem + fstsw %ax + testw $0x400,%ax + jne 1b + fstp %st(1) + ret +END(fmodl) + + .section .note.GNU-stack,"",%progbits diff --git a/lib/msun/i387/Makefile.inc b/lib/msun/i387/Makefile.inc index f387e90..daa93f6 100644 --- a/lib/msun/i387/Makefile.inc +++ b/lib/msun/i387/Makefile.inc @@ -2,18 +2,19 @@ ARCH_SRCS = e_exp.S e_fmod.S e_log.S e_log10.S \ e_remainder.S e_sqrt.S s_ceil.S s_copysign.S \ - s_cos.S s_finite.S s_floor.S s_llrint.S s_logb.S s_lrint.S \ - s_remquo.S s_rint.S s_scalbn.S s_significand.S s_sin.S s_tan.S \ + s_finite.S s_floor.S s_llrint.S s_logb.S s_lrint.S \ + s_remquo.S s_rint.S s_scalbn.S s_significand.S \ s_trunc.S # float counterparts -ARCH_SRCS+= e_log10f.S e_logf.S e_remainderf.S \ +ARCH_SRCS+= e_fmodf.S e_log10f.S e_logf.S e_remainderf.S \ e_sqrtf.S s_ceilf.S s_copysignf.S s_floorf.S \ s_llrintf.S s_logbf.S s_lrintf.S \ s_remquof.S s_rintf.S s_scalbnf.S s_significandf.S s_truncf.S # long double counterparts -ARCH_SRCS+= e_remainderl.S e_sqrtl.S s_ceill.S s_copysignl.S \ +ARCH_SRCS+= e_fmodl.S \ + e_remainderl.S e_sqrtl.S s_ceill.S s_copysignl.S \ s_floorl.S s_llrintl.S \ s_logbl.S s_lrintl.S s_remquol.S s_rintl.S s_scalbnl.S s_truncl.S diff --git a/lib/msun/i387/e_fmodf.S b/lib/msun/i387/e_fmodf.S new file mode 100644 index 0000000..e269447 --- /dev/null +++ b/lib/msun/i387/e_fmodf.S @@ -0,0 +1,20 @@ +/* + * Written by J.T. Conklin <jtc@netbsd.org>. + * Public domain. + */ + +#include <machine/asm.h> +__FBSDID("$FreeBSD$") + +ENTRY(fmodf) + flds 8(%esp) + flds 4(%esp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret +END(fmodf) + + .section .note.GNU-stack,"",%progbits diff --git a/lib/msun/i387/e_fmodl.S b/lib/msun/i387/e_fmodl.S new file mode 100644 index 0000000..57e986c --- /dev/null +++ b/lib/msun/i387/e_fmodl.S @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1993,94 Winning Strategies, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Written by: + * J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +#include <machine/asm.h> +__FBSDID("$FreeBSD$") + +ENTRY(fmodl) + fldt 16(%esp) + fldt 4(%esp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret +END(fmodl) + + .section .note.GNU-stack,"",%progbits diff --git a/lib/msun/ld80/e_lgammal_r.c b/lib/msun/ld80/e_lgammal_r.c index 1e65769..f56758b 100644 --- a/lib/msun/ld80/e_lgammal_r.c +++ b/lib/msun/ld80/e_lgammal_r.c @@ -249,7 +249,7 @@ sin_pil(long double x) long double lgammal_r(long double x, int *signgamp) { - long double nadj,p,p1,p2,p3,q,r,t,w,y,z; + long double nadj,p,p1,p2,q,r,t,w,y,z; uint64_t lx; int i; uint16_t hx,ix; diff --git a/lib/msun/ld80/k_expl.h b/lib/msun/ld80/k_expl.h index 9b081fa..1c2213e 100644 --- a/lib/msun/ld80/k_expl.h +++ b/lib/msun/ld80/k_expl.h @@ -75,140 +75,140 @@ static const struct { double hi; double lo; } tbl[INTERVALS] = { - 0x1p+0, 0x0p+0, + { 0x1p+0, 0x0p+0 }, /* * XXX hi is rounded down, and the formatting is not quite normal. * But I rather like both. The 0x1.*p format is good for 4N+1 * mantissa bits. Rounding down makes the lo terms positive, * so that the columnar formatting can be simpler. */ - 0x1.0163da9fb3335p+0, 0x1.b61299ab8cdb7p-54, - 0x1.02c9a3e778060p+0, 0x1.dcdef95949ef4p-53, - 0x1.04315e86e7f84p+0, 0x1.7ae71f3441b49p-53, - 0x1.059b0d3158574p+0, 0x1.d73e2a475b465p-55, - 0x1.0706b29ddf6ddp+0, 0x1.8db880753b0f6p-53, - 0x1.0874518759bc8p+0, 0x1.186be4bb284ffp-57, - 0x1.09e3ecac6f383p+0, 0x1.1487818316136p-54, - 0x1.0b5586cf9890fp+0, 0x1.8a62e4adc610bp-54, - 0x1.0cc922b7247f7p+0, 0x1.01edc16e24f71p-54, - 0x1.0e3ec32d3d1a2p+0, 0x1.03a1727c57b53p-59, - 0x1.0fb66affed31ap+0, 0x1.e464123bb1428p-53, - 0x1.11301d0125b50p+0, 0x1.49d77e35db263p-53, - 0x1.12abdc06c31cbp+0, 0x1.f72575a649ad2p-53, - 0x1.1429aaea92ddfp+0, 0x1.66820328764b1p-53, - 0x1.15a98c8a58e51p+0, 0x1.2406ab9eeab0ap-55, - 0x1.172b83c7d517ap+0, 0x1.b9bef918a1d63p-53, - 0x1.18af9388c8de9p+0, 0x1.777ee1734784ap-53, - 0x1.1a35beb6fcb75p+0, 0x1.e5b4c7b4968e4p-55, - 0x1.1bbe084045cd3p+0, 0x1.3563ce56884fcp-53, - 0x1.1d4873168b9aap+0, 0x1.e016e00a2643cp-54, - 0x1.1ed5022fcd91cp+0, 0x1.71033fec2243ap-53, - 0x1.2063b88628cd6p+0, 0x1.dc775814a8495p-55, - 0x1.21f49917ddc96p+0, 0x1.2a97e9494a5eep-55, - 0x1.2387a6e756238p+0, 0x1.9b07eb6c70573p-54, - 0x1.251ce4fb2a63fp+0, 0x1.ac155bef4f4a4p-55, - 0x1.26b4565e27cddp+0, 0x1.2bd339940e9d9p-55, - 0x1.284dfe1f56380p+0, 0x1.2d9e2b9e07941p-53, - 0x1.29e9df51fdee1p+0, 0x1.612e8afad1255p-55, - 0x1.2b87fd0dad98fp+0, 0x1.fbbd48ca71f95p-53, - 0x1.2d285a6e4030bp+0, 0x1.0024754db41d5p-54, - 0x1.2ecafa93e2f56p+0, 0x1.1ca0f45d52383p-56, - 0x1.306fe0a31b715p+0, 0x1.6f46ad23182e4p-55, - 0x1.32170fc4cd831p+0, 0x1.a9ce78e18047cp-55, - 0x1.33c08b26416ffp+0, 0x1.32721843659a6p-54, - 0x1.356c55f929ff0p+0, 0x1.928c468ec6e76p-53, - 0x1.371a7373aa9cap+0, 0x1.4e28aa05e8a8fp-53, - 0x1.38cae6d05d865p+0, 0x1.0b53961b37da2p-53, - 0x1.3a7db34e59ff6p+0, 0x1.d43792533c144p-53, - 0x1.3c32dc313a8e4p+0, 0x1.08003e4516b1ep-53, - 0x1.3dea64c123422p+0, 0x1.ada0911f09ebcp-55, - 0x1.3fa4504ac801bp+0, 0x1.417ee03548306p-53, - 0x1.4160a21f72e29p+0, 0x1.f0864b71e7b6cp-53, - 0x1.431f5d950a896p+0, 0x1.b8e088728219ap-53, - 0x1.44e086061892dp+0, 0x1.89b7a04ef80d0p-59, - 0x1.46a41ed1d0057p+0, 0x1.c944bd1648a76p-54, - 0x1.486a2b5c13cd0p+0, 0x1.3c1a3b69062f0p-56, - 0x1.4a32af0d7d3dep+0, 0x1.9cb62f3d1be56p-54, - 0x1.4bfdad5362a27p+0, 0x1.d4397afec42e2p-56, - 0x1.4dcb299fddd0dp+0, 0x1.8ecdbbc6a7833p-54, - 0x1.4f9b2769d2ca6p+0, 0x1.5a67b16d3540ep-53, - 0x1.516daa2cf6641p+0, 0x1.8225ea5909b04p-53, - 0x1.5342b569d4f81p+0, 0x1.be1507893b0d5p-53, - 0x1.551a4ca5d920ep+0, 0x1.8a5d8c4048699p-53, - 0x1.56f4736b527dap+0, 0x1.9bb2c011d93adp-54, - 0x1.58d12d497c7fdp+0, 0x1.295e15b9a1de8p-55, - 0x1.5ab07dd485429p+0, 0x1.6324c054647adp-54, - 0x1.5c9268a5946b7p+0, 0x1.c4b1b816986a2p-60, - 0x1.5e76f15ad2148p+0, 0x1.ba6f93080e65ep-54, - 0x1.605e1b976dc08p+0, 0x1.60edeb25490dcp-53, - 0x1.6247eb03a5584p+0, 0x1.63e1f40dfa5b5p-53, - 0x1.6434634ccc31fp+0, 0x1.8edf0e2989db3p-53, - 0x1.6623882552224p+0, 0x1.224fb3c5371e6p-53, - 0x1.68155d44ca973p+0, 0x1.038ae44f73e65p-57, - 0x1.6a09e667f3bccp+0, 0x1.21165f626cdd5p-53, - 0x1.6c012750bdabep+0, 0x1.daed533001e9ep-53, - 0x1.6dfb23c651a2ep+0, 0x1.e441c597c3775p-53, - 0x1.6ff7df9519483p+0, 0x1.9f0fc369e7c42p-53, - 0x1.71f75e8ec5f73p+0, 0x1.ba46e1e5de15ap-53, - 0x1.73f9a48a58173p+0, 0x1.7ab9349cd1562p-53, - 0x1.75feb564267c8p+0, 0x1.7edd354674916p-53, - 0x1.780694fde5d3fp+0, 0x1.866b80a02162dp-54, - 0x1.7a11473eb0186p+0, 0x1.afaa2047ed9b4p-53, - 0x1.7c1ed0130c132p+0, 0x1.f124cd1164dd6p-54, - 0x1.7e2f336cf4e62p+0, 0x1.05d02ba15797ep-56, - 0x1.80427543e1a11p+0, 0x1.6c1bccec9346bp-53, - 0x1.82589994cce12p+0, 0x1.159f115f56694p-53, - 0x1.8471a4623c7acp+0, 0x1.9ca5ed72f8c81p-53, - 0x1.868d99b4492ecp+0, 0x1.01c83b21584a3p-53, - 0x1.88ac7d98a6699p+0, 0x1.994c2f37cb53ap-54, - 0x1.8ace5422aa0dbp+0, 0x1.6e9f156864b27p-54, - 0x1.8cf3216b5448bp+0, 0x1.de55439a2c38bp-53, - 0x1.8f1ae99157736p+0, 0x1.5cc13a2e3976cp-55, - 0x1.9145b0b91ffc5p+0, 0x1.114c368d3ed6ep-53, - 0x1.93737b0cdc5e4p+0, 0x1.e8a0387e4a814p-53, - 0x1.95a44cbc8520ep+0, 0x1.d36906d2b41f9p-53, - 0x1.97d829fde4e4fp+0, 0x1.173d241f23d18p-53, - 0x1.9a0f170ca07b9p+0, 0x1.7462137188ce7p-53, - 0x1.9c49182a3f090p+0, 0x1.c7c46b071f2bep-56, - 0x1.9e86319e32323p+0, 0x1.824ca78e64c6ep-56, - 0x1.a0c667b5de564p+0, 0x1.6535b51719567p-53, - 0x1.a309bec4a2d33p+0, 0x1.6305c7ddc36abp-54, - 0x1.a5503b23e255cp+0, 0x1.1684892395f0fp-53, - 0x1.a799e1330b358p+0, 0x1.bcb7ecac563c7p-54, - 0x1.a9e6b5579fdbfp+0, 0x1.0fac90ef7fd31p-54, - 0x1.ac36bbfd3f379p+0, 0x1.81b72cd4624ccp-53, - 0x1.ae89f995ad3adp+0, 0x1.7a1cd345dcc81p-54, - 0x1.b0e07298db665p+0, 0x1.2108559bf8deep-53, - 0x1.b33a2b84f15fap+0, 0x1.ed7fa1cf7b290p-53, - 0x1.b59728de55939p+0, 0x1.1c7102222c90ep-53, - 0x1.b7f76f2fb5e46p+0, 0x1.d54f610356a79p-53, - 0x1.ba5b030a10649p+0, 0x1.0819678d5eb69p-53, - 0x1.bcc1e904bc1d2p+0, 0x1.23dd07a2d9e84p-55, - 0x1.bf2c25bd71e08p+0, 0x1.0811ae04a31c7p-53, - 0x1.c199bdd85529cp+0, 0x1.11065895048ddp-55, - 0x1.c40ab5fffd07ap+0, 0x1.b4537e083c60ap-54, - 0x1.c67f12e57d14bp+0, 0x1.2884dff483cadp-54, - 0x1.c8f6d9406e7b5p+0, 0x1.1acbc48805c44p-56, - 0x1.cb720dcef9069p+0, 0x1.503cbd1e949dbp-56, - 0x1.cdf0b555dc3f9p+0, 0x1.889f12b1f58a3p-53, - 0x1.d072d4a07897bp+0, 0x1.1a1e45e4342b2p-53, - 0x1.d2f87080d89f1p+0, 0x1.15bc247313d44p-53, - 0x1.d5818dcfba487p+0, 0x1.2ed02d75b3707p-55, - 0x1.d80e316c98397p+0, 0x1.7709f3a09100cp-53, - 0x1.da9e603db3285p+0, 0x1.c2300696db532p-54, - 0x1.dd321f301b460p+0, 0x1.2da5778f018c3p-54, - 0x1.dfc97337b9b5ep+0, 0x1.72d195873da52p-53, - 0x1.e264614f5a128p+0, 0x1.424ec3f42f5b5p-53, - 0x1.e502ee78b3ff6p+0, 0x1.39e8980a9cc8fp-55, - 0x1.e7a51fbc74c83p+0, 0x1.2d522ca0c8de2p-54, - 0x1.ea4afa2a490d9p+0, 0x1.0b1ee7431ebb6p-53, - 0x1.ecf482d8e67f0p+0, 0x1.1b60625f7293ap-53, - 0x1.efa1bee615a27p+0, 0x1.dc7f486a4b6b0p-54, - 0x1.f252b376bba97p+0, 0x1.3a1a5bf0d8e43p-54, - 0x1.f50765b6e4540p+0, 0x1.9d3e12dd8a18bp-54, - 0x1.f7bfdad9cbe13p+0, 0x1.1227697fce57bp-53, - 0x1.fa7c1819e90d8p+0, 0x1.74853f3a5931ep-55, - 0x1.fd3c22b8f71f1p+0, 0x1.2eb74966579e7p-57 + { 0x1.0163da9fb3335p+0, 0x1.b61299ab8cdb7p-54 }, + { 0x1.02c9a3e778060p+0, 0x1.dcdef95949ef4p-53 }, + { 0x1.04315e86e7f84p+0, 0x1.7ae71f3441b49p-53 }, + { 0x1.059b0d3158574p+0, 0x1.d73e2a475b465p-55 }, + { 0x1.0706b29ddf6ddp+0, 0x1.8db880753b0f6p-53 }, + { 0x1.0874518759bc8p+0, 0x1.186be4bb284ffp-57 }, + { 0x1.09e3ecac6f383p+0, 0x1.1487818316136p-54 }, + { 0x1.0b5586cf9890fp+0, 0x1.8a62e4adc610bp-54 }, + { 0x1.0cc922b7247f7p+0, 0x1.01edc16e24f71p-54 }, + { 0x1.0e3ec32d3d1a2p+0, 0x1.03a1727c57b53p-59 }, + { 0x1.0fb66affed31ap+0, 0x1.e464123bb1428p-53 }, + { 0x1.11301d0125b50p+0, 0x1.49d77e35db263p-53 }, + { 0x1.12abdc06c31cbp+0, 0x1.f72575a649ad2p-53 }, + { 0x1.1429aaea92ddfp+0, 0x1.66820328764b1p-53 }, + { 0x1.15a98c8a58e51p+0, 0x1.2406ab9eeab0ap-55 }, + { 0x1.172b83c7d517ap+0, 0x1.b9bef918a1d63p-53 }, + { 0x1.18af9388c8de9p+0, 0x1.777ee1734784ap-53 }, + { 0x1.1a35beb6fcb75p+0, 0x1.e5b4c7b4968e4p-55 }, + { 0x1.1bbe084045cd3p+0, 0x1.3563ce56884fcp-53 }, + { 0x1.1d4873168b9aap+0, 0x1.e016e00a2643cp-54 }, + { 0x1.1ed5022fcd91cp+0, 0x1.71033fec2243ap-53 }, + { 0x1.2063b88628cd6p+0, 0x1.dc775814a8495p-55 }, + { 0x1.21f49917ddc96p+0, 0x1.2a97e9494a5eep-55 }, + { 0x1.2387a6e756238p+0, 0x1.9b07eb6c70573p-54 }, + { 0x1.251ce4fb2a63fp+0, 0x1.ac155bef4f4a4p-55 }, + { 0x1.26b4565e27cddp+0, 0x1.2bd339940e9d9p-55 }, + { 0x1.284dfe1f56380p+0, 0x1.2d9e2b9e07941p-53 }, + { 0x1.29e9df51fdee1p+0, 0x1.612e8afad1255p-55 }, + { 0x1.2b87fd0dad98fp+0, 0x1.fbbd48ca71f95p-53 }, + { 0x1.2d285a6e4030bp+0, 0x1.0024754db41d5p-54 }, + { 0x1.2ecafa93e2f56p+0, 0x1.1ca0f45d52383p-56 }, + { 0x1.306fe0a31b715p+0, 0x1.6f46ad23182e4p-55 }, + { 0x1.32170fc4cd831p+0, 0x1.a9ce78e18047cp-55 }, + { 0x1.33c08b26416ffp+0, 0x1.32721843659a6p-54 }, + { 0x1.356c55f929ff0p+0, 0x1.928c468ec6e76p-53 }, + { 0x1.371a7373aa9cap+0, 0x1.4e28aa05e8a8fp-53 }, + { 0x1.38cae6d05d865p+0, 0x1.0b53961b37da2p-53 }, + { 0x1.3a7db34e59ff6p+0, 0x1.d43792533c144p-53 }, + { 0x1.3c32dc313a8e4p+0, 0x1.08003e4516b1ep-53 }, + { 0x1.3dea64c123422p+0, 0x1.ada0911f09ebcp-55 }, + { 0x1.3fa4504ac801bp+0, 0x1.417ee03548306p-53 }, + { 0x1.4160a21f72e29p+0, 0x1.f0864b71e7b6cp-53 }, + { 0x1.431f5d950a896p+0, 0x1.b8e088728219ap-53 }, + { 0x1.44e086061892dp+0, 0x1.89b7a04ef80d0p-59 }, + { 0x1.46a41ed1d0057p+0, 0x1.c944bd1648a76p-54 }, + { 0x1.486a2b5c13cd0p+0, 0x1.3c1a3b69062f0p-56 }, + { 0x1.4a32af0d7d3dep+0, 0x1.9cb62f3d1be56p-54 }, + { 0x1.4bfdad5362a27p+0, 0x1.d4397afec42e2p-56 }, + { 0x1.4dcb299fddd0dp+0, 0x1.8ecdbbc6a7833p-54 }, + { 0x1.4f9b2769d2ca6p+0, 0x1.5a67b16d3540ep-53 }, + { 0x1.516daa2cf6641p+0, 0x1.8225ea5909b04p-53 }, + { 0x1.5342b569d4f81p+0, 0x1.be1507893b0d5p-53 }, + { 0x1.551a4ca5d920ep+0, 0x1.8a5d8c4048699p-53 }, + { 0x1.56f4736b527dap+0, 0x1.9bb2c011d93adp-54 }, + { 0x1.58d12d497c7fdp+0, 0x1.295e15b9a1de8p-55 }, + { 0x1.5ab07dd485429p+0, 0x1.6324c054647adp-54 }, + { 0x1.5c9268a5946b7p+0, 0x1.c4b1b816986a2p-60 }, + { 0x1.5e76f15ad2148p+0, 0x1.ba6f93080e65ep-54 }, + { 0x1.605e1b976dc08p+0, 0x1.60edeb25490dcp-53 }, + { 0x1.6247eb03a5584p+0, 0x1.63e1f40dfa5b5p-53 }, + { 0x1.6434634ccc31fp+0, 0x1.8edf0e2989db3p-53 }, + { 0x1.6623882552224p+0, 0x1.224fb3c5371e6p-53 }, + { 0x1.68155d44ca973p+0, 0x1.038ae44f73e65p-57 }, + { 0x1.6a09e667f3bccp+0, 0x1.21165f626cdd5p-53 }, + { 0x1.6c012750bdabep+0, 0x1.daed533001e9ep-53 }, + { 0x1.6dfb23c651a2ep+0, 0x1.e441c597c3775p-53 }, + { 0x1.6ff7df9519483p+0, 0x1.9f0fc369e7c42p-53 }, + { 0x1.71f75e8ec5f73p+0, 0x1.ba46e1e5de15ap-53 }, + { 0x1.73f9a48a58173p+0, 0x1.7ab9349cd1562p-53 }, + { 0x1.75feb564267c8p+0, 0x1.7edd354674916p-53 }, + { 0x1.780694fde5d3fp+0, 0x1.866b80a02162dp-54 }, + { 0x1.7a11473eb0186p+0, 0x1.afaa2047ed9b4p-53 }, + { 0x1.7c1ed0130c132p+0, 0x1.f124cd1164dd6p-54 }, + { 0x1.7e2f336cf4e62p+0, 0x1.05d02ba15797ep-56 }, + { 0x1.80427543e1a11p+0, 0x1.6c1bccec9346bp-53 }, + { 0x1.82589994cce12p+0, 0x1.159f115f56694p-53 }, + { 0x1.8471a4623c7acp+0, 0x1.9ca5ed72f8c81p-53 }, + { 0x1.868d99b4492ecp+0, 0x1.01c83b21584a3p-53 }, + { 0x1.88ac7d98a6699p+0, 0x1.994c2f37cb53ap-54 }, + { 0x1.8ace5422aa0dbp+0, 0x1.6e9f156864b27p-54 }, + { 0x1.8cf3216b5448bp+0, 0x1.de55439a2c38bp-53 }, + { 0x1.8f1ae99157736p+0, 0x1.5cc13a2e3976cp-55 }, + { 0x1.9145b0b91ffc5p+0, 0x1.114c368d3ed6ep-53 }, + { 0x1.93737b0cdc5e4p+0, 0x1.e8a0387e4a814p-53 }, + { 0x1.95a44cbc8520ep+0, 0x1.d36906d2b41f9p-53 }, + { 0x1.97d829fde4e4fp+0, 0x1.173d241f23d18p-53 }, + { 0x1.9a0f170ca07b9p+0, 0x1.7462137188ce7p-53 }, + { 0x1.9c49182a3f090p+0, 0x1.c7c46b071f2bep-56 }, + { 0x1.9e86319e32323p+0, 0x1.824ca78e64c6ep-56 }, + { 0x1.a0c667b5de564p+0, 0x1.6535b51719567p-53 }, + { 0x1.a309bec4a2d33p+0, 0x1.6305c7ddc36abp-54 }, + { 0x1.a5503b23e255cp+0, 0x1.1684892395f0fp-53 }, + { 0x1.a799e1330b358p+0, 0x1.bcb7ecac563c7p-54 }, + { 0x1.a9e6b5579fdbfp+0, 0x1.0fac90ef7fd31p-54 }, + { 0x1.ac36bbfd3f379p+0, 0x1.81b72cd4624ccp-53 }, + { 0x1.ae89f995ad3adp+0, 0x1.7a1cd345dcc81p-54 }, + { 0x1.b0e07298db665p+0, 0x1.2108559bf8deep-53 }, + { 0x1.b33a2b84f15fap+0, 0x1.ed7fa1cf7b290p-53 }, + { 0x1.b59728de55939p+0, 0x1.1c7102222c90ep-53 }, + { 0x1.b7f76f2fb5e46p+0, 0x1.d54f610356a79p-53 }, + { 0x1.ba5b030a10649p+0, 0x1.0819678d5eb69p-53 }, + { 0x1.bcc1e904bc1d2p+0, 0x1.23dd07a2d9e84p-55 }, + { 0x1.bf2c25bd71e08p+0, 0x1.0811ae04a31c7p-53 }, + { 0x1.c199bdd85529cp+0, 0x1.11065895048ddp-55 }, + { 0x1.c40ab5fffd07ap+0, 0x1.b4537e083c60ap-54 }, + { 0x1.c67f12e57d14bp+0, 0x1.2884dff483cadp-54 }, + { 0x1.c8f6d9406e7b5p+0, 0x1.1acbc48805c44p-56 }, + { 0x1.cb720dcef9069p+0, 0x1.503cbd1e949dbp-56 }, + { 0x1.cdf0b555dc3f9p+0, 0x1.889f12b1f58a3p-53 }, + { 0x1.d072d4a07897bp+0, 0x1.1a1e45e4342b2p-53 }, + { 0x1.d2f87080d89f1p+0, 0x1.15bc247313d44p-53 }, + { 0x1.d5818dcfba487p+0, 0x1.2ed02d75b3707p-55 }, + { 0x1.d80e316c98397p+0, 0x1.7709f3a09100cp-53 }, + { 0x1.da9e603db3285p+0, 0x1.c2300696db532p-54 }, + { 0x1.dd321f301b460p+0, 0x1.2da5778f018c3p-54 }, + { 0x1.dfc97337b9b5ep+0, 0x1.72d195873da52p-53 }, + { 0x1.e264614f5a128p+0, 0x1.424ec3f42f5b5p-53 }, + { 0x1.e502ee78b3ff6p+0, 0x1.39e8980a9cc8fp-55 }, + { 0x1.e7a51fbc74c83p+0, 0x1.2d522ca0c8de2p-54 }, + { 0x1.ea4afa2a490d9p+0, 0x1.0b1ee7431ebb6p-53 }, + { 0x1.ecf482d8e67f0p+0, 0x1.1b60625f7293ap-53 }, + { 0x1.efa1bee615a27p+0, 0x1.dc7f486a4b6b0p-54 }, + { 0x1.f252b376bba97p+0, 0x1.3a1a5bf0d8e43p-54 }, + { 0x1.f50765b6e4540p+0, 0x1.9d3e12dd8a18bp-54 }, + { 0x1.f7bfdad9cbe13p+0, 0x1.1227697fce57bp-53 }, + { 0x1.fa7c1819e90d8p+0, 0x1.74853f3a5931ep-55 }, + { 0x1.fd3c22b8f71f1p+0, 0x1.2eb74966579e7p-57 } }; /* diff --git a/lib/msun/ld80/s_logl.c b/lib/msun/ld80/s_logl.c index 3a35753..e0daed7 100644 --- a/lib/msun/ld80/s_logl.c +++ b/lib/msun/ld80/s_logl.c @@ -152,135 +152,135 @@ static const struct { * mainly to minimize the size of the table. Using all 24 bits * in a float for it automatically satisfies the above constraints. */ - 0x800000.0p-23, 0, 0, - 0xfe0000.0p-24, 0x8080ac.0p-30, -0x14ee431dae6675.0p-84, - 0xfc0000.0p-24, 0x8102b3.0p-29, -0x1db29ee2d83718.0p-84, - 0xfa0000.0p-24, 0xc24929.0p-29, 0x1191957d173698.0p-83, - 0xf80000.0p-24, 0x820aec.0p-28, 0x13ce8888e02e79.0p-82, - 0xf60000.0p-24, 0xa33577.0p-28, -0x17a4382ce6eb7c.0p-82, - 0xf48000.0p-24, 0xbc42cb.0p-28, -0x172a21161a1076.0p-83, - 0xf30000.0p-24, 0xd57797.0p-28, -0x1e09de07cb9589.0p-82, - 0xf10000.0p-24, 0xf7518e.0p-28, 0x1ae1eec1b036c5.0p-91, - 0xef0000.0p-24, 0x8cb9df.0p-27, -0x1d7355325d560e.0p-81, - 0xed8000.0p-24, 0x999ec0.0p-27, -0x1f9f02d256d503.0p-82, - 0xec0000.0p-24, 0xa6988b.0p-27, -0x16fc0a9d12c17a.0p-83, - 0xea0000.0p-24, 0xb80698.0p-27, 0x15d581c1e8da9a.0p-81, - 0xe80000.0p-24, 0xc99af3.0p-27, -0x1535b3ba8f150b.0p-83, - 0xe70000.0p-24, 0xd273b2.0p-27, 0x163786f5251af0.0p-85, - 0xe50000.0p-24, 0xe442c0.0p-27, 0x1bc4b2368e32d5.0p-84, - 0xe38000.0p-24, 0xf1b83f.0p-27, 0x1c6090f684e676.0p-81, - 0xe20000.0p-24, 0xff448a.0p-27, -0x1890aa69ac9f42.0p-82, - 0xe08000.0p-24, 0x8673f6.0p-26, 0x1b9985194b6b00.0p-80, - 0xdf0000.0p-24, 0x8d515c.0p-26, -0x1dc08d61c6ef1e.0p-83, - 0xdd8000.0p-24, 0x943a9e.0p-26, -0x1f72a2dac729b4.0p-82, - 0xdc0000.0p-24, 0x9b2fe6.0p-26, -0x1fd4dfd3a0afb9.0p-80, - 0xda8000.0p-24, 0xa2315d.0p-26, -0x11b26121629c47.0p-82, - 0xd90000.0p-24, 0xa93f2f.0p-26, 0x1286d633e8e569.0p-81, - 0xd78000.0p-24, 0xb05988.0p-26, 0x16128eba936770.0p-84, - 0xd60000.0p-24, 0xb78094.0p-26, 0x16ead577390d32.0p-80, - 0xd50000.0p-24, 0xbc4c6c.0p-26, 0x151131ccf7c7b7.0p-81, - 0xd38000.0p-24, 0xc3890a.0p-26, -0x115e2cd714bd06.0p-80, - 0xd20000.0p-24, 0xcad2d7.0p-26, -0x1847f406ebd3b0.0p-82, - 0xd10000.0p-24, 0xcfb620.0p-26, 0x1c2259904d6866.0p-81, - 0xcf8000.0p-24, 0xd71653.0p-26, 0x1ece57a8d5ae55.0p-80, - 0xce0000.0p-24, 0xde843a.0p-26, -0x1f109d4bc45954.0p-81, - 0xcd0000.0p-24, 0xe37fde.0p-26, 0x1bc03dc271a74d.0p-81, - 0xcb8000.0p-24, 0xeb050c.0p-26, -0x1bf2badc0df842.0p-85, - 0xca0000.0p-24, 0xf29878.0p-26, -0x18efededd89fbe.0p-87, - 0xc90000.0p-24, 0xf7ad6f.0p-26, 0x1373ff977baa69.0p-81, - 0xc80000.0p-24, 0xfcc8e3.0p-26, 0x196766f2fb3283.0p-80, - 0xc68000.0p-24, 0x823f30.0p-25, 0x19bd076f7c434e.0p-79, - 0xc58000.0p-24, 0x84d52c.0p-25, -0x1a327257af0f46.0p-79, - 0xc40000.0p-24, 0x88bc74.0p-25, 0x113f23def19c5a.0p-81, - 0xc30000.0p-24, 0x8b5ae6.0p-25, 0x1759f6e6b37de9.0p-79, - 0xc20000.0p-24, 0x8dfccb.0p-25, 0x1ad35ca6ed5148.0p-81, - 0xc10000.0p-24, 0x90a22b.0p-25, 0x1a1d71a87deba4.0p-79, - 0xbf8000.0p-24, 0x94a0d8.0p-25, -0x139e5210c2b731.0p-80, - 0xbe8000.0p-24, 0x974f16.0p-25, -0x18f6ebcff3ed73.0p-81, - 0xbd8000.0p-24, 0x9a00f1.0p-25, -0x1aa268be39aab7.0p-79, - 0xbc8000.0p-24, 0x9cb672.0p-25, -0x14c8815839c566.0p-79, - 0xbb0000.0p-24, 0xa0cda1.0p-25, 0x1eaf46390dbb24.0p-81, - 0xba0000.0p-24, 0xa38c6e.0p-25, 0x138e20d831f698.0p-81, - 0xb90000.0p-24, 0xa64f05.0p-25, -0x1e8d3c41123616.0p-82, - 0xb80000.0p-24, 0xa91570.0p-25, 0x1ce28f5f3840b2.0p-80, - 0xb70000.0p-24, 0xabdfbb.0p-25, -0x186e5c0a424234.0p-79, - 0xb60000.0p-24, 0xaeadef.0p-25, -0x14d41a0b2a08a4.0p-83, - 0xb50000.0p-24, 0xb18018.0p-25, 0x16755892770634.0p-79, - 0xb40000.0p-24, 0xb45642.0p-25, -0x16395ebe59b152.0p-82, - 0xb30000.0p-24, 0xb73077.0p-25, 0x1abc65c8595f09.0p-80, - 0xb20000.0p-24, 0xba0ec4.0p-25, -0x1273089d3dad89.0p-79, - 0xb10000.0p-24, 0xbcf133.0p-25, 0x10f9f67b1f4bbf.0p-79, - 0xb00000.0p-24, 0xbfd7d2.0p-25, -0x109fab90486409.0p-80, - 0xaf0000.0p-24, 0xc2c2ac.0p-25, -0x1124680aa43333.0p-79, - 0xae8000.0p-24, 0xc439b3.0p-25, -0x1f360cc4710fc0.0p-80, - 0xad8000.0p-24, 0xc72afd.0p-25, -0x132d91f21d89c9.0p-80, - 0xac8000.0p-24, 0xca20a2.0p-25, -0x16bf9b4d1f8da8.0p-79, - 0xab8000.0p-24, 0xcd1aae.0p-25, 0x19deb5ce6a6a87.0p-81, - 0xaa8000.0p-24, 0xd0192f.0p-25, 0x1a29fb48f7d3cb.0p-79, - 0xaa0000.0p-24, 0xd19a20.0p-25, 0x1127d3c6457f9d.0p-81, - 0xa90000.0p-24, 0xd49f6a.0p-25, -0x1ba930e486a0ac.0p-81, - 0xa80000.0p-24, 0xd7a94b.0p-25, -0x1b6e645f31549e.0p-79, - 0xa70000.0p-24, 0xdab7d0.0p-25, 0x1118a425494b61.0p-80, - 0xa68000.0p-24, 0xdc40d5.0p-25, 0x1966f24d29d3a3.0p-80, - 0xa58000.0p-24, 0xdf566d.0p-25, -0x1d8e52eb2248f1.0p-82, - 0xa48000.0p-24, 0xe270ce.0p-25, -0x1ee370f96e6b68.0p-80, - 0xa40000.0p-24, 0xe3ffce.0p-25, 0x1d155324911f57.0p-80, - 0xa30000.0p-24, 0xe72179.0p-25, -0x1fe6e2f2f867d9.0p-80, - 0xa20000.0p-24, 0xea4812.0p-25, 0x1b7be9add7f4d4.0p-80, - 0xa18000.0p-24, 0xebdd3d.0p-25, 0x1b3cfb3f7511dd.0p-79, - 0xa08000.0p-24, 0xef0b5b.0p-25, -0x1220de1f730190.0p-79, - 0xa00000.0p-24, 0xf0a451.0p-25, -0x176364c9ac81cd.0p-80, - 0x9f0000.0p-24, 0xf3da16.0p-25, 0x1eed6b9aafac8d.0p-81, - 0x9e8000.0p-24, 0xf576e9.0p-25, 0x1d593218675af2.0p-79, - 0x9d8000.0p-24, 0xf8b47c.0p-25, -0x13e8eb7da053e0.0p-84, - 0x9d0000.0p-24, 0xfa553f.0p-25, 0x1c063259bcade0.0p-79, - 0x9c0000.0p-24, 0xfd9ac5.0p-25, 0x1ef491085fa3c1.0p-79, - 0x9b8000.0p-24, 0xff3f8c.0p-25, 0x1d607a7c2b8c53.0p-79, - 0x9a8000.0p-24, 0x814697.0p-24, -0x12ad3817004f3f.0p-78, - 0x9a0000.0p-24, 0x821b06.0p-24, -0x189fc53117f9e5.0p-81, - 0x990000.0p-24, 0x83c5f8.0p-24, 0x14cf15a048907b.0p-79, - 0x988000.0p-24, 0x849c7d.0p-24, 0x1cbb1d35fb8287.0p-78, - 0x978000.0p-24, 0x864ba6.0p-24, 0x1128639b814f9c.0p-78, - 0x970000.0p-24, 0x87244c.0p-24, 0x184733853300f0.0p-79, - 0x968000.0p-24, 0x87fdaa.0p-24, 0x109d23aef77dd6.0p-80, - 0x958000.0p-24, 0x89b293.0p-24, -0x1a81ef367a59de.0p-78, - 0x950000.0p-24, 0x8a8e20.0p-24, -0x121ad3dbb2f452.0p-78, - 0x948000.0p-24, 0x8b6a6a.0p-24, -0x1cfb981628af72.0p-79, - 0x938000.0p-24, 0x8d253a.0p-24, -0x1d21730ea76cfe.0p-79, - 0x930000.0p-24, 0x8e03c2.0p-24, 0x135cc00e566f77.0p-78, - 0x928000.0p-24, 0x8ee30d.0p-24, -0x10fcb5df257a26.0p-80, - 0x918000.0p-24, 0x90a3ee.0p-24, -0x16e171b15433d7.0p-79, - 0x910000.0p-24, 0x918587.0p-24, -0x1d050da07f3237.0p-79, - 0x908000.0p-24, 0x9267e7.0p-24, 0x1be03669a5268d.0p-79, - 0x8f8000.0p-24, 0x942f04.0p-24, 0x10b28e0e26c337.0p-79, - 0x8f0000.0p-24, 0x9513c3.0p-24, 0x1a1d820da57cf3.0p-78, - 0x8e8000.0p-24, 0x95f950.0p-24, -0x19ef8f13ae3cf1.0p-79, - 0x8e0000.0p-24, 0x96dfab.0p-24, -0x109e417a6e507c.0p-78, - 0x8d0000.0p-24, 0x98aed2.0p-24, 0x10d01a2c5b0e98.0p-79, - 0x8c8000.0p-24, 0x9997a2.0p-24, -0x1d6a50d4b61ea7.0p-78, - 0x8c0000.0p-24, 0x9a8145.0p-24, 0x1b3b190b83f952.0p-78, - 0x8b8000.0p-24, 0x9b6bbf.0p-24, 0x13a69fad7e7abe.0p-78, - 0x8b0000.0p-24, 0x9c5711.0p-24, -0x11cd12316f576b.0p-78, - 0x8a8000.0p-24, 0x9d433b.0p-24, 0x1c95c444b807a2.0p-79, - 0x898000.0p-24, 0x9f1e22.0p-24, -0x1b9c224ea698c3.0p-79, - 0x890000.0p-24, 0xa00ce1.0p-24, 0x125ca93186cf0f.0p-81, - 0x888000.0p-24, 0xa0fc80.0p-24, -0x1ee38a7bc228b3.0p-79, - 0x880000.0p-24, 0xa1ed00.0p-24, -0x1a0db876613d20.0p-78, - 0x878000.0p-24, 0xa2de62.0p-24, 0x193224e8516c01.0p-79, - 0x870000.0p-24, 0xa3d0a9.0p-24, 0x1fa28b4d2541ad.0p-79, - 0x868000.0p-24, 0xa4c3d6.0p-24, 0x1c1b5760fb4572.0p-78, - 0x858000.0p-24, 0xa6acea.0p-24, 0x1fed5d0f65949c.0p-80, - 0x850000.0p-24, 0xa7a2d4.0p-24, 0x1ad270c9d74936.0p-80, - 0x848000.0p-24, 0xa899ab.0p-24, 0x199ff15ce53266.0p-79, - 0x840000.0p-24, 0xa99171.0p-24, 0x1a19e15ccc45d2.0p-79, - 0x838000.0p-24, 0xaa8a28.0p-24, -0x121a14ec532b36.0p-80, - 0x830000.0p-24, 0xab83d1.0p-24, 0x1aee319980bff3.0p-79, - 0x828000.0p-24, 0xac7e6f.0p-24, -0x18ffd9e3900346.0p-80, - 0x820000.0p-24, 0xad7a03.0p-24, -0x1e4db102ce29f8.0p-80, - 0x818000.0p-24, 0xae768f.0p-24, 0x17c35c55a04a83.0p-81, - 0x810000.0p-24, 0xaf7415.0p-24, 0x1448324047019b.0p-78, - 0x808000.0p-24, 0xb07298.0p-24, -0x1750ee3915a198.0p-78, - 0x800000.0p-24, 0xb17218.0p-24, -0x105c610ca86c39.0p-81, + { 0x800000.0p-23, 0, 0 }, + { 0xfe0000.0p-24, 0x8080ac.0p-30, -0x14ee431dae6675.0p-84 }, + { 0xfc0000.0p-24, 0x8102b3.0p-29, -0x1db29ee2d83718.0p-84 }, + { 0xfa0000.0p-24, 0xc24929.0p-29, 0x1191957d173698.0p-83 }, + { 0xf80000.0p-24, 0x820aec.0p-28, 0x13ce8888e02e79.0p-82 }, + { 0xf60000.0p-24, 0xa33577.0p-28, -0x17a4382ce6eb7c.0p-82 }, + { 0xf48000.0p-24, 0xbc42cb.0p-28, -0x172a21161a1076.0p-83 }, + { 0xf30000.0p-24, 0xd57797.0p-28, -0x1e09de07cb9589.0p-82 }, + { 0xf10000.0p-24, 0xf7518e.0p-28, 0x1ae1eec1b036c5.0p-91 }, + { 0xef0000.0p-24, 0x8cb9df.0p-27, -0x1d7355325d560e.0p-81 }, + { 0xed8000.0p-24, 0x999ec0.0p-27, -0x1f9f02d256d503.0p-82 }, + { 0xec0000.0p-24, 0xa6988b.0p-27, -0x16fc0a9d12c17a.0p-83 }, + { 0xea0000.0p-24, 0xb80698.0p-27, 0x15d581c1e8da9a.0p-81 }, + { 0xe80000.0p-24, 0xc99af3.0p-27, -0x1535b3ba8f150b.0p-83 }, + { 0xe70000.0p-24, 0xd273b2.0p-27, 0x163786f5251af0.0p-85 }, + { 0xe50000.0p-24, 0xe442c0.0p-27, 0x1bc4b2368e32d5.0p-84 }, + { 0xe38000.0p-24, 0xf1b83f.0p-27, 0x1c6090f684e676.0p-81 }, + { 0xe20000.0p-24, 0xff448a.0p-27, -0x1890aa69ac9f42.0p-82 }, + { 0xe08000.0p-24, 0x8673f6.0p-26, 0x1b9985194b6b00.0p-80 }, + { 0xdf0000.0p-24, 0x8d515c.0p-26, -0x1dc08d61c6ef1e.0p-83 }, + { 0xdd8000.0p-24, 0x943a9e.0p-26, -0x1f72a2dac729b4.0p-82 }, + { 0xdc0000.0p-24, 0x9b2fe6.0p-26, -0x1fd4dfd3a0afb9.0p-80 }, + { 0xda8000.0p-24, 0xa2315d.0p-26, -0x11b26121629c47.0p-82 }, + { 0xd90000.0p-24, 0xa93f2f.0p-26, 0x1286d633e8e569.0p-81 }, + { 0xd78000.0p-24, 0xb05988.0p-26, 0x16128eba936770.0p-84 }, + { 0xd60000.0p-24, 0xb78094.0p-26, 0x16ead577390d32.0p-80 }, + { 0xd50000.0p-24, 0xbc4c6c.0p-26, 0x151131ccf7c7b7.0p-81 }, + { 0xd38000.0p-24, 0xc3890a.0p-26, -0x115e2cd714bd06.0p-80 }, + { 0xd20000.0p-24, 0xcad2d7.0p-26, -0x1847f406ebd3b0.0p-82 }, + { 0xd10000.0p-24, 0xcfb620.0p-26, 0x1c2259904d6866.0p-81 }, + { 0xcf8000.0p-24, 0xd71653.0p-26, 0x1ece57a8d5ae55.0p-80 }, + { 0xce0000.0p-24, 0xde843a.0p-26, -0x1f109d4bc45954.0p-81 }, + { 0xcd0000.0p-24, 0xe37fde.0p-26, 0x1bc03dc271a74d.0p-81 }, + { 0xcb8000.0p-24, 0xeb050c.0p-26, -0x1bf2badc0df842.0p-85 }, + { 0xca0000.0p-24, 0xf29878.0p-26, -0x18efededd89fbe.0p-87 }, + { 0xc90000.0p-24, 0xf7ad6f.0p-26, 0x1373ff977baa69.0p-81 }, + { 0xc80000.0p-24, 0xfcc8e3.0p-26, 0x196766f2fb3283.0p-80 }, + { 0xc68000.0p-24, 0x823f30.0p-25, 0x19bd076f7c434e.0p-79 }, + { 0xc58000.0p-24, 0x84d52c.0p-25, -0x1a327257af0f46.0p-79 }, + { 0xc40000.0p-24, 0x88bc74.0p-25, 0x113f23def19c5a.0p-81 }, + { 0xc30000.0p-24, 0x8b5ae6.0p-25, 0x1759f6e6b37de9.0p-79 }, + { 0xc20000.0p-24, 0x8dfccb.0p-25, 0x1ad35ca6ed5148.0p-81 }, + { 0xc10000.0p-24, 0x90a22b.0p-25, 0x1a1d71a87deba4.0p-79 }, + { 0xbf8000.0p-24, 0x94a0d8.0p-25, -0x139e5210c2b731.0p-80 }, + { 0xbe8000.0p-24, 0x974f16.0p-25, -0x18f6ebcff3ed73.0p-81 }, + { 0xbd8000.0p-24, 0x9a00f1.0p-25, -0x1aa268be39aab7.0p-79 }, + { 0xbc8000.0p-24, 0x9cb672.0p-25, -0x14c8815839c566.0p-79 }, + { 0xbb0000.0p-24, 0xa0cda1.0p-25, 0x1eaf46390dbb24.0p-81 }, + { 0xba0000.0p-24, 0xa38c6e.0p-25, 0x138e20d831f698.0p-81 }, + { 0xb90000.0p-24, 0xa64f05.0p-25, -0x1e8d3c41123616.0p-82 }, + { 0xb80000.0p-24, 0xa91570.0p-25, 0x1ce28f5f3840b2.0p-80 }, + { 0xb70000.0p-24, 0xabdfbb.0p-25, -0x186e5c0a424234.0p-79 }, + { 0xb60000.0p-24, 0xaeadef.0p-25, -0x14d41a0b2a08a4.0p-83 }, + { 0xb50000.0p-24, 0xb18018.0p-25, 0x16755892770634.0p-79 }, + { 0xb40000.0p-24, 0xb45642.0p-25, -0x16395ebe59b152.0p-82 }, + { 0xb30000.0p-24, 0xb73077.0p-25, 0x1abc65c8595f09.0p-80 }, + { 0xb20000.0p-24, 0xba0ec4.0p-25, -0x1273089d3dad89.0p-79 }, + { 0xb10000.0p-24, 0xbcf133.0p-25, 0x10f9f67b1f4bbf.0p-79 }, + { 0xb00000.0p-24, 0xbfd7d2.0p-25, -0x109fab90486409.0p-80 }, + { 0xaf0000.0p-24, 0xc2c2ac.0p-25, -0x1124680aa43333.0p-79 }, + { 0xae8000.0p-24, 0xc439b3.0p-25, -0x1f360cc4710fc0.0p-80 }, + { 0xad8000.0p-24, 0xc72afd.0p-25, -0x132d91f21d89c9.0p-80 }, + { 0xac8000.0p-24, 0xca20a2.0p-25, -0x16bf9b4d1f8da8.0p-79 }, + { 0xab8000.0p-24, 0xcd1aae.0p-25, 0x19deb5ce6a6a87.0p-81 }, + { 0xaa8000.0p-24, 0xd0192f.0p-25, 0x1a29fb48f7d3cb.0p-79 }, + { 0xaa0000.0p-24, 0xd19a20.0p-25, 0x1127d3c6457f9d.0p-81 }, + { 0xa90000.0p-24, 0xd49f6a.0p-25, -0x1ba930e486a0ac.0p-81 }, + { 0xa80000.0p-24, 0xd7a94b.0p-25, -0x1b6e645f31549e.0p-79 }, + { 0xa70000.0p-24, 0xdab7d0.0p-25, 0x1118a425494b61.0p-80 }, + { 0xa68000.0p-24, 0xdc40d5.0p-25, 0x1966f24d29d3a3.0p-80 }, + { 0xa58000.0p-24, 0xdf566d.0p-25, -0x1d8e52eb2248f1.0p-82 }, + { 0xa48000.0p-24, 0xe270ce.0p-25, -0x1ee370f96e6b68.0p-80 }, + { 0xa40000.0p-24, 0xe3ffce.0p-25, 0x1d155324911f57.0p-80 }, + { 0xa30000.0p-24, 0xe72179.0p-25, -0x1fe6e2f2f867d9.0p-80 }, + { 0xa20000.0p-24, 0xea4812.0p-25, 0x1b7be9add7f4d4.0p-80 }, + { 0xa18000.0p-24, 0xebdd3d.0p-25, 0x1b3cfb3f7511dd.0p-79 }, + { 0xa08000.0p-24, 0xef0b5b.0p-25, -0x1220de1f730190.0p-79 }, + { 0xa00000.0p-24, 0xf0a451.0p-25, -0x176364c9ac81cd.0p-80 }, + { 0x9f0000.0p-24, 0xf3da16.0p-25, 0x1eed6b9aafac8d.0p-81 }, + { 0x9e8000.0p-24, 0xf576e9.0p-25, 0x1d593218675af2.0p-79 }, + { 0x9d8000.0p-24, 0xf8b47c.0p-25, -0x13e8eb7da053e0.0p-84 }, + { 0x9d0000.0p-24, 0xfa553f.0p-25, 0x1c063259bcade0.0p-79 }, + { 0x9c0000.0p-24, 0xfd9ac5.0p-25, 0x1ef491085fa3c1.0p-79 }, + { 0x9b8000.0p-24, 0xff3f8c.0p-25, 0x1d607a7c2b8c53.0p-79 }, + { 0x9a8000.0p-24, 0x814697.0p-24, -0x12ad3817004f3f.0p-78 }, + { 0x9a0000.0p-24, 0x821b06.0p-24, -0x189fc53117f9e5.0p-81 }, + { 0x990000.0p-24, 0x83c5f8.0p-24, 0x14cf15a048907b.0p-79 }, + { 0x988000.0p-24, 0x849c7d.0p-24, 0x1cbb1d35fb8287.0p-78 }, + { 0x978000.0p-24, 0x864ba6.0p-24, 0x1128639b814f9c.0p-78 }, + { 0x970000.0p-24, 0x87244c.0p-24, 0x184733853300f0.0p-79 }, + { 0x968000.0p-24, 0x87fdaa.0p-24, 0x109d23aef77dd6.0p-80 }, + { 0x958000.0p-24, 0x89b293.0p-24, -0x1a81ef367a59de.0p-78 }, + { 0x950000.0p-24, 0x8a8e20.0p-24, -0x121ad3dbb2f452.0p-78 }, + { 0x948000.0p-24, 0x8b6a6a.0p-24, -0x1cfb981628af72.0p-79 }, + { 0x938000.0p-24, 0x8d253a.0p-24, -0x1d21730ea76cfe.0p-79 }, + { 0x930000.0p-24, 0x8e03c2.0p-24, 0x135cc00e566f77.0p-78 }, + { 0x928000.0p-24, 0x8ee30d.0p-24, -0x10fcb5df257a26.0p-80 }, + { 0x918000.0p-24, 0x90a3ee.0p-24, -0x16e171b15433d7.0p-79 }, + { 0x910000.0p-24, 0x918587.0p-24, -0x1d050da07f3237.0p-79 }, + { 0x908000.0p-24, 0x9267e7.0p-24, 0x1be03669a5268d.0p-79 }, + { 0x8f8000.0p-24, 0x942f04.0p-24, 0x10b28e0e26c337.0p-79 }, + { 0x8f0000.0p-24, 0x9513c3.0p-24, 0x1a1d820da57cf3.0p-78 }, + { 0x8e8000.0p-24, 0x95f950.0p-24, -0x19ef8f13ae3cf1.0p-79 }, + { 0x8e0000.0p-24, 0x96dfab.0p-24, -0x109e417a6e507c.0p-78 }, + { 0x8d0000.0p-24, 0x98aed2.0p-24, 0x10d01a2c5b0e98.0p-79 }, + { 0x8c8000.0p-24, 0x9997a2.0p-24, -0x1d6a50d4b61ea7.0p-78 }, + { 0x8c0000.0p-24, 0x9a8145.0p-24, 0x1b3b190b83f952.0p-78 }, + { 0x8b8000.0p-24, 0x9b6bbf.0p-24, 0x13a69fad7e7abe.0p-78 }, + { 0x8b0000.0p-24, 0x9c5711.0p-24, -0x11cd12316f576b.0p-78 }, + { 0x8a8000.0p-24, 0x9d433b.0p-24, 0x1c95c444b807a2.0p-79 }, + { 0x898000.0p-24, 0x9f1e22.0p-24, -0x1b9c224ea698c3.0p-79 }, + { 0x890000.0p-24, 0xa00ce1.0p-24, 0x125ca93186cf0f.0p-81 }, + { 0x888000.0p-24, 0xa0fc80.0p-24, -0x1ee38a7bc228b3.0p-79 }, + { 0x880000.0p-24, 0xa1ed00.0p-24, -0x1a0db876613d20.0p-78 }, + { 0x878000.0p-24, 0xa2de62.0p-24, 0x193224e8516c01.0p-79 }, + { 0x870000.0p-24, 0xa3d0a9.0p-24, 0x1fa28b4d2541ad.0p-79 }, + { 0x868000.0p-24, 0xa4c3d6.0p-24, 0x1c1b5760fb4572.0p-78 }, + { 0x858000.0p-24, 0xa6acea.0p-24, 0x1fed5d0f65949c.0p-80 }, + { 0x850000.0p-24, 0xa7a2d4.0p-24, 0x1ad270c9d74936.0p-80 }, + { 0x848000.0p-24, 0xa899ab.0p-24, 0x199ff15ce53266.0p-79 }, + { 0x840000.0p-24, 0xa99171.0p-24, 0x1a19e15ccc45d2.0p-79 }, + { 0x838000.0p-24, 0xaa8a28.0p-24, -0x121a14ec532b36.0p-80 }, + { 0x830000.0p-24, 0xab83d1.0p-24, 0x1aee319980bff3.0p-79 }, + { 0x828000.0p-24, 0xac7e6f.0p-24, -0x18ffd9e3900346.0p-80 }, + { 0x820000.0p-24, 0xad7a03.0p-24, -0x1e4db102ce29f8.0p-80 }, + { 0x818000.0p-24, 0xae768f.0p-24, 0x17c35c55a04a83.0p-81 }, + { 0x810000.0p-24, 0xaf7415.0p-24, 0x1448324047019b.0p-78 }, + { 0x808000.0p-24, 0xb07298.0p-24, -0x1750ee3915a198.0p-78 }, + { 0x800000.0p-24, 0xb17218.0p-24, -0x105c610ca86c39.0p-81 }, }; #ifdef USE_UTAB @@ -288,135 +288,135 @@ static const struct { float H; /* 1 + i/INTERVALS (exact) */ float E; /* H(i) * G(i) - 1 (exact) */ } U[TSIZE] = { - 0x800000.0p-23, 0, - 0x810000.0p-23, -0x800000.0p-37, - 0x820000.0p-23, -0x800000.0p-35, - 0x830000.0p-23, -0x900000.0p-34, - 0x840000.0p-23, -0x800000.0p-33, - 0x850000.0p-23, -0xc80000.0p-33, - 0x860000.0p-23, -0xa00000.0p-36, - 0x870000.0p-23, 0x940000.0p-33, - 0x880000.0p-23, 0x800000.0p-35, - 0x890000.0p-23, -0xc80000.0p-34, - 0x8a0000.0p-23, 0xe00000.0p-36, - 0x8b0000.0p-23, 0x900000.0p-33, - 0x8c0000.0p-23, -0x800000.0p-35, - 0x8d0000.0p-23, -0xe00000.0p-33, - 0x8e0000.0p-23, 0x880000.0p-33, - 0x8f0000.0p-23, -0xa80000.0p-34, - 0x900000.0p-23, -0x800000.0p-35, - 0x910000.0p-23, 0x800000.0p-37, - 0x920000.0p-23, 0x900000.0p-35, - 0x930000.0p-23, 0xd00000.0p-35, - 0x940000.0p-23, 0xe00000.0p-35, - 0x950000.0p-23, 0xc00000.0p-35, - 0x960000.0p-23, 0xe00000.0p-36, - 0x970000.0p-23, -0x800000.0p-38, - 0x980000.0p-23, -0xc00000.0p-35, - 0x990000.0p-23, -0xd00000.0p-34, - 0x9a0000.0p-23, 0x880000.0p-33, - 0x9b0000.0p-23, 0xe80000.0p-35, - 0x9c0000.0p-23, -0x800000.0p-35, - 0x9d0000.0p-23, 0xb40000.0p-33, - 0x9e0000.0p-23, 0x880000.0p-34, - 0x9f0000.0p-23, -0xe00000.0p-35, - 0xa00000.0p-23, 0x800000.0p-33, - 0xa10000.0p-23, -0x900000.0p-36, - 0xa20000.0p-23, -0xb00000.0p-33, - 0xa30000.0p-23, -0xa00000.0p-36, - 0xa40000.0p-23, 0x800000.0p-33, - 0xa50000.0p-23, -0xf80000.0p-35, - 0xa60000.0p-23, 0x880000.0p-34, - 0xa70000.0p-23, -0x900000.0p-33, - 0xa80000.0p-23, -0x800000.0p-35, - 0xa90000.0p-23, 0x900000.0p-34, - 0xaa0000.0p-23, 0xa80000.0p-33, - 0xab0000.0p-23, -0xac0000.0p-34, - 0xac0000.0p-23, -0x800000.0p-37, - 0xad0000.0p-23, 0xf80000.0p-35, - 0xae0000.0p-23, 0xf80000.0p-34, - 0xaf0000.0p-23, -0xac0000.0p-33, - 0xb00000.0p-23, -0x800000.0p-33, - 0xb10000.0p-23, -0xb80000.0p-34, - 0xb20000.0p-23, -0x800000.0p-34, - 0xb30000.0p-23, -0xb00000.0p-35, - 0xb40000.0p-23, -0x800000.0p-35, - 0xb50000.0p-23, -0xe00000.0p-36, - 0xb60000.0p-23, -0x800000.0p-35, - 0xb70000.0p-23, -0xb00000.0p-35, - 0xb80000.0p-23, -0x800000.0p-34, - 0xb90000.0p-23, -0xb80000.0p-34, - 0xba0000.0p-23, -0x800000.0p-33, - 0xbb0000.0p-23, -0xac0000.0p-33, - 0xbc0000.0p-23, 0x980000.0p-33, - 0xbd0000.0p-23, 0xbc0000.0p-34, - 0xbe0000.0p-23, 0xe00000.0p-36, - 0xbf0000.0p-23, -0xb80000.0p-35, - 0xc00000.0p-23, -0x800000.0p-33, - 0xc10000.0p-23, 0xa80000.0p-33, - 0xc20000.0p-23, 0x900000.0p-34, - 0xc30000.0p-23, -0x800000.0p-35, - 0xc40000.0p-23, -0x900000.0p-33, - 0xc50000.0p-23, 0x820000.0p-33, - 0xc60000.0p-23, 0x800000.0p-38, - 0xc70000.0p-23, -0x820000.0p-33, - 0xc80000.0p-23, 0x800000.0p-33, - 0xc90000.0p-23, -0xa00000.0p-36, - 0xca0000.0p-23, -0xb00000.0p-33, - 0xcb0000.0p-23, 0x840000.0p-34, - 0xcc0000.0p-23, -0xd00000.0p-34, - 0xcd0000.0p-23, 0x800000.0p-33, - 0xce0000.0p-23, -0xe00000.0p-35, - 0xcf0000.0p-23, 0xa60000.0p-33, - 0xd00000.0p-23, -0x800000.0p-35, - 0xd10000.0p-23, 0xb40000.0p-33, - 0xd20000.0p-23, -0x800000.0p-35, - 0xd30000.0p-23, 0xaa0000.0p-33, - 0xd40000.0p-23, -0xe00000.0p-35, - 0xd50000.0p-23, 0x880000.0p-33, - 0xd60000.0p-23, -0xd00000.0p-34, - 0xd70000.0p-23, 0x9c0000.0p-34, - 0xd80000.0p-23, -0xb00000.0p-33, - 0xd90000.0p-23, -0x800000.0p-38, - 0xda0000.0p-23, 0xa40000.0p-33, - 0xdb0000.0p-23, -0xdc0000.0p-34, - 0xdc0000.0p-23, 0xc00000.0p-35, - 0xdd0000.0p-23, 0xca0000.0p-33, - 0xde0000.0p-23, -0xb80000.0p-34, - 0xdf0000.0p-23, 0xd00000.0p-35, - 0xe00000.0p-23, 0xc00000.0p-33, - 0xe10000.0p-23, -0xf40000.0p-34, - 0xe20000.0p-23, 0x800000.0p-37, - 0xe30000.0p-23, 0x860000.0p-33, - 0xe40000.0p-23, -0xc80000.0p-33, - 0xe50000.0p-23, -0xa80000.0p-34, - 0xe60000.0p-23, 0xe00000.0p-36, - 0xe70000.0p-23, 0x880000.0p-33, - 0xe80000.0p-23, -0xe00000.0p-33, - 0xe90000.0p-23, -0xfc0000.0p-34, - 0xea0000.0p-23, -0x800000.0p-35, - 0xeb0000.0p-23, 0xe80000.0p-35, - 0xec0000.0p-23, 0x900000.0p-33, - 0xed0000.0p-23, 0xe20000.0p-33, - 0xee0000.0p-23, -0xac0000.0p-33, - 0xef0000.0p-23, -0xc80000.0p-34, - 0xf00000.0p-23, -0x800000.0p-35, - 0xf10000.0p-23, 0x800000.0p-35, - 0xf20000.0p-23, 0xb80000.0p-34, - 0xf30000.0p-23, 0x940000.0p-33, - 0xf40000.0p-23, 0xc80000.0p-33, - 0xf50000.0p-23, -0xf20000.0p-33, - 0xf60000.0p-23, -0xc80000.0p-33, - 0xf70000.0p-23, -0xa20000.0p-33, - 0xf80000.0p-23, -0x800000.0p-33, - 0xf90000.0p-23, -0xc40000.0p-34, - 0xfa0000.0p-23, -0x900000.0p-34, - 0xfb0000.0p-23, -0xc80000.0p-35, - 0xfc0000.0p-23, -0x800000.0p-35, - 0xfd0000.0p-23, -0x900000.0p-36, - 0xfe0000.0p-23, -0x800000.0p-37, - 0xff0000.0p-23, -0x800000.0p-39, - 0x800000.0p-22, 0, + { 0x800000.0p-23, 0 }, + { 0x810000.0p-23, -0x800000.0p-37 }, + { 0x820000.0p-23, -0x800000.0p-35 }, + { 0x830000.0p-23, -0x900000.0p-34 }, + { 0x840000.0p-23, -0x800000.0p-33 }, + { 0x850000.0p-23, -0xc80000.0p-33 }, + { 0x860000.0p-23, -0xa00000.0p-36 }, + { 0x870000.0p-23, 0x940000.0p-33 }, + { 0x880000.0p-23, 0x800000.0p-35 }, + { 0x890000.0p-23, -0xc80000.0p-34 }, + { 0x8a0000.0p-23, 0xe00000.0p-36 }, + { 0x8b0000.0p-23, 0x900000.0p-33 }, + { 0x8c0000.0p-23, -0x800000.0p-35 }, + { 0x8d0000.0p-23, -0xe00000.0p-33 }, + { 0x8e0000.0p-23, 0x880000.0p-33 }, + { 0x8f0000.0p-23, -0xa80000.0p-34 }, + { 0x900000.0p-23, -0x800000.0p-35 }, + { 0x910000.0p-23, 0x800000.0p-37 }, + { 0x920000.0p-23, 0x900000.0p-35 }, + { 0x930000.0p-23, 0xd00000.0p-35 }, + { 0x940000.0p-23, 0xe00000.0p-35 }, + { 0x950000.0p-23, 0xc00000.0p-35 }, + { 0x960000.0p-23, 0xe00000.0p-36 }, + { 0x970000.0p-23, -0x800000.0p-38 }, + { 0x980000.0p-23, -0xc00000.0p-35 }, + { 0x990000.0p-23, -0xd00000.0p-34 }, + { 0x9a0000.0p-23, 0x880000.0p-33 }, + { 0x9b0000.0p-23, 0xe80000.0p-35 }, + { 0x9c0000.0p-23, -0x800000.0p-35 }, + { 0x9d0000.0p-23, 0xb40000.0p-33 }, + { 0x9e0000.0p-23, 0x880000.0p-34 }, + { 0x9f0000.0p-23, -0xe00000.0p-35 }, + { 0xa00000.0p-23, 0x800000.0p-33 }, + { 0xa10000.0p-23, -0x900000.0p-36 }, + { 0xa20000.0p-23, -0xb00000.0p-33 }, + { 0xa30000.0p-23, -0xa00000.0p-36 }, + { 0xa40000.0p-23, 0x800000.0p-33 }, + { 0xa50000.0p-23, -0xf80000.0p-35 }, + { 0xa60000.0p-23, 0x880000.0p-34 }, + { 0xa70000.0p-23, -0x900000.0p-33 }, + { 0xa80000.0p-23, -0x800000.0p-35 }, + { 0xa90000.0p-23, 0x900000.0p-34 }, + { 0xaa0000.0p-23, 0xa80000.0p-33 }, + { 0xab0000.0p-23, -0xac0000.0p-34 }, + { 0xac0000.0p-23, -0x800000.0p-37 }, + { 0xad0000.0p-23, 0xf80000.0p-35 }, + { 0xae0000.0p-23, 0xf80000.0p-34 }, + { 0xaf0000.0p-23, -0xac0000.0p-33 }, + { 0xb00000.0p-23, -0x800000.0p-33 }, + { 0xb10000.0p-23, -0xb80000.0p-34 }, + { 0xb20000.0p-23, -0x800000.0p-34 }, + { 0xb30000.0p-23, -0xb00000.0p-35 }, + { 0xb40000.0p-23, -0x800000.0p-35 }, + { 0xb50000.0p-23, -0xe00000.0p-36 }, + { 0xb60000.0p-23, -0x800000.0p-35 }, + { 0xb70000.0p-23, -0xb00000.0p-35 }, + { 0xb80000.0p-23, -0x800000.0p-34 }, + { 0xb90000.0p-23, -0xb80000.0p-34 }, + { 0xba0000.0p-23, -0x800000.0p-33 }, + { 0xbb0000.0p-23, -0xac0000.0p-33 }, + { 0xbc0000.0p-23, 0x980000.0p-33 }, + { 0xbd0000.0p-23, 0xbc0000.0p-34 }, + { 0xbe0000.0p-23, 0xe00000.0p-36 }, + { 0xbf0000.0p-23, -0xb80000.0p-35 }, + { 0xc00000.0p-23, -0x800000.0p-33 }, + { 0xc10000.0p-23, 0xa80000.0p-33 }, + { 0xc20000.0p-23, 0x900000.0p-34 }, + { 0xc30000.0p-23, -0x800000.0p-35 }, + { 0xc40000.0p-23, -0x900000.0p-33 }, + { 0xc50000.0p-23, 0x820000.0p-33 }, + { 0xc60000.0p-23, 0x800000.0p-38 }, + { 0xc70000.0p-23, -0x820000.0p-33 }, + { 0xc80000.0p-23, 0x800000.0p-33 }, + { 0xc90000.0p-23, -0xa00000.0p-36 }, + { 0xca0000.0p-23, -0xb00000.0p-33 }, + { 0xcb0000.0p-23, 0x840000.0p-34 }, + { 0xcc0000.0p-23, -0xd00000.0p-34 }, + { 0xcd0000.0p-23, 0x800000.0p-33 }, + { 0xce0000.0p-23, -0xe00000.0p-35 }, + { 0xcf0000.0p-23, 0xa60000.0p-33 }, + { 0xd00000.0p-23, -0x800000.0p-35 }, + { 0xd10000.0p-23, 0xb40000.0p-33 }, + { 0xd20000.0p-23, -0x800000.0p-35 }, + { 0xd30000.0p-23, 0xaa0000.0p-33 }, + { 0xd40000.0p-23, -0xe00000.0p-35 }, + { 0xd50000.0p-23, 0x880000.0p-33 }, + { 0xd60000.0p-23, -0xd00000.0p-34 }, + { 0xd70000.0p-23, 0x9c0000.0p-34 }, + { 0xd80000.0p-23, -0xb00000.0p-33 }, + { 0xd90000.0p-23, -0x800000.0p-38 }, + { 0xda0000.0p-23, 0xa40000.0p-33 }, + { 0xdb0000.0p-23, -0xdc0000.0p-34 }, + { 0xdc0000.0p-23, 0xc00000.0p-35 }, + { 0xdd0000.0p-23, 0xca0000.0p-33 }, + { 0xde0000.0p-23, -0xb80000.0p-34 }, + { 0xdf0000.0p-23, 0xd00000.0p-35 }, + { 0xe00000.0p-23, 0xc00000.0p-33 }, + { 0xe10000.0p-23, -0xf40000.0p-34 }, + { 0xe20000.0p-23, 0x800000.0p-37 }, + { 0xe30000.0p-23, 0x860000.0p-33 }, + { 0xe40000.0p-23, -0xc80000.0p-33 }, + { 0xe50000.0p-23, -0xa80000.0p-34 }, + { 0xe60000.0p-23, 0xe00000.0p-36 }, + { 0xe70000.0p-23, 0x880000.0p-33 }, + { 0xe80000.0p-23, -0xe00000.0p-33 }, + { 0xe90000.0p-23, -0xfc0000.0p-34 }, + { 0xea0000.0p-23, -0x800000.0p-35 }, + { 0xeb0000.0p-23, 0xe80000.0p-35 }, + { 0xec0000.0p-23, 0x900000.0p-33 }, + { 0xed0000.0p-23, 0xe20000.0p-33 }, + { 0xee0000.0p-23, -0xac0000.0p-33 }, + { 0xef0000.0p-23, -0xc80000.0p-34 }, + { 0xf00000.0p-23, -0x800000.0p-35 }, + { 0xf10000.0p-23, 0x800000.0p-35 }, + { 0xf20000.0p-23, 0xb80000.0p-34 }, + { 0xf30000.0p-23, 0x940000.0p-33 }, + { 0xf40000.0p-23, 0xc80000.0p-33 }, + { 0xf50000.0p-23, -0xf20000.0p-33 }, + { 0xf60000.0p-23, -0xc80000.0p-33 }, + { 0xf70000.0p-23, -0xa20000.0p-33 }, + { 0xf80000.0p-23, -0x800000.0p-33 }, + { 0xf90000.0p-23, -0xc40000.0p-34 }, + { 0xfa0000.0p-23, -0x900000.0p-34 }, + { 0xfb0000.0p-23, -0xc80000.0p-35 }, + { 0xfc0000.0p-23, -0x800000.0p-35 }, + { 0xfd0000.0p-23, -0x900000.0p-36 }, + { 0xfe0000.0p-23, -0x800000.0p-37 }, + { 0xff0000.0p-23, -0x800000.0p-39 }, + { 0x800000.0p-22, 0 }, }; #endif /* USE_UTAB */ diff --git a/lib/msun/man/cacos.3 b/lib/msun/man/cacos.3 index 02f3f74..6d9f20a 100644 --- a/lib/msun/man/cacos.3 +++ b/lib/msun/man/cacos.3 @@ -24,23 +24,29 @@ .\" .\" $FreeBSD$ .\" -.Dd Jul 14, 2015 +.Dd February 15, 2017 .Dt CACOS 3 .Os .Sh NAME .Nm cacos , .Nm cacosf , +.Nm cacosl , .Nm cacosh , .Nm cacoshf , +.Nm cacoshl , .Nm casin , -.Nm casinf +.Nm casinf , +.Nm casinl , .Nm casinh , -.Nm casinhf -.Nm catan , -.Nm catanf +.Nm casinhf , +.Nm casinhl , +.Nm catan , +.Nm catanf , +.Nm catanl , .Nm catanh , -.Nm catanhf -.Nd complex arc trigonometric and hyperbolic functions +.Nm catanhf , +.Nm catanhl +.Nd complex inverse trigonometric and hyperbolic functions .Sh LIBRARY .Lb libm .Sh SYNOPSIS @@ -49,26 +55,38 @@ .Fn cacos "double complex z" .Ft float complex .Fn cacosf "float complex z" +.Ft long double complex +.Fn cacosl "long double complex z" .Ft double complex .Fn cacosh "double complex z" .Ft float complex .Fn cacoshf "float complex z" +.Ft long double complex +.Fn cacoshl "long double complex z" .Ft double complex .Fn casin "double complex z" .Ft float complex .Fn casinf "float complex z" +.Ft long double complex +.Fn casinl "long double complex z" .Ft double complex .Fn casinh "double complex z" .Ft float complex .Fn casinhf "float complex z" +.Ft long double complex +.Fn casinhl "long double complex z" .Ft double complex .Fn catan "double complex z" .Ft float complex .Fn catanf "float complex z" +.Ft long double complex +.Fn catanl "long double complex z" .Ft double complex .Fn catanh "double complex z" .Ft float complex .Fn catanhf "float complex z" +.Ft long double complex +.Fn catanhl "long double complex z" .Sh DESCRIPTION The .Fn cacos , @@ -97,10 +115,22 @@ and functions perform the same operations in .Fa float precision. +The +.Fn cacosl , +.Fn casinl , +.Fn catanl +.Fn cacoshl , +.Fn casinhl , +and +.Fn catanhl +functions perform the same operations in +.Fa long double +precision. .Pp .ds Un \[cu] There is no universal convention for defining the principal values of -these functions. The following table gives the branch cuts, and the +these functions. +The following table gives the branch cuts, and the corresponding ranges for the return values, adopted by the C language. .Bl -column ".Sy Function" ".Sy (-\*(If*I, -I) \*(Un (I, \*(If*I)" ".Sy [-\*(Pi/2*I, \*(Pi/2*I]" .It Sy Function Ta Sy Branch Cut(s) Ta Sy Range diff --git a/lib/msun/man/sincos.3 b/lib/msun/man/sincos.3 new file mode 100644 index 0000000..9c42a96 --- /dev/null +++ b/lib/msun/man/sincos.3 @@ -0,0 +1,82 @@ +.\" Copyright (c) 2011 Steven G. Kargl. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd March 12, 2011 +.Dt SINCOS 3 +.Os +.Sh NAME +.Nm sincos , +.Nm sincosf , +.Nm sincosl +.Nd sine and cosine functions +.Sh LIBRARY +.Lb libm +.Sh SYNOPSIS +.In math.h +.Ft void +.Fn sincos "double x" "double *s" "double *c" +.Ft void +.Fn sincosf "float x" "float *s" "float *c" +.Ft void +.Fn sincosl "long double x" "long double *s" "long double *c" +.Sh DESCRIPTION +The +.Fn sincos , +.Fn sincosf , +and +.Fn sincosl +functions compute the sine and cosine of +.Fa x . +Using these functions allows argument reduction to occur only +once instead of twice with individual invocations of +.Fn sin +and +.Fn cos . +Like +.Fn sin +and +.Fn cos , +a large magnitude argument may yield a result with little +or no significance. +.Sh RETURN VALUES +Upon returning from +.Fn sincos , +.Fn sincosf , +and +.Fn sincosl , +the memory pointed to by +.Ar "*s" +and +.Ar "*c" +are assigned the values of sine and cosine, respectively. +.Sh SEE ALSO +.Xr cos 3 , +.Xr sin 3 , +.Sh HISTORY +These functions were added to +.Fx 9.0 +to aid in writing various complex function contained in +.St -isoC-99 . + diff --git a/lib/msun/src/catrig.c b/lib/msun/src/catrig.c index f392862..ebfe356 100644 --- a/lib/msun/src/catrig.c +++ b/lib/msun/src/catrig.c @@ -637,3 +637,12 @@ catan(double complex z) return (CMPLX(cimag(w), creal(w))); } + +#if LDBL_MANT_DIG == 53 +__weak_reference(cacosh, cacoshl); +__weak_reference(cacos, cacosl); +__weak_reference(casinh, casinhl); +__weak_reference(casin, casinl); +__weak_reference(catanh, catanhl); +__weak_reference(catan, catanl); +#endif diff --git a/lib/msun/src/catrigl.c b/lib/msun/src/catrigl.c new file mode 100644 index 0000000..b798570 --- /dev/null +++ b/lib/msun/src/catrigl.c @@ -0,0 +1,417 @@ +/*- + * Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG> + * Copyright (c) 2017 Mahdi Mokhtari <mmokhi@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * The algorithm is very close to that in "Implementing the complex arcsine + * and arccosine functions using exception handling" by T. E. Hull, Thomas F. + * Fairgrieve, and Ping Tak Peter Tang, published in ACM Transactions on + * Mathematical Software, Volume 23 Issue 3, 1997, Pages 299-335, + * http://dl.acm.org/citation.cfm?id=275324. + * + * See catrig.c for complete comments. + * + * XXX comments were removed automatically, and even short ones on the right + * of statements were removed (all of them), contrary to normal style. Only + * a few comments on the right of declarations remain. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <complex.h> +#include <float.h> + +#include "invtrig.h" +#include "math.h" +#include "math_private.h" + +#undef isinf +#define isinf(x) (fabsl(x) == INFINITY) +#undef isnan +#define isnan(x) ((x) != (x)) +#define raise_inexact() do { volatile float junk __unused = 1 + tiny; } while(0) +#undef signbit +#define signbit(x) (__builtin_signbitl(x)) + +#if LDBL_MAX_EXP != 0x4000 +#error "Unsupported long double format" +#endif + +static const long double +A_crossover = 10, +B_crossover = 0.6417, +FOUR_SQRT_MIN = 0x1p-8189L, +HALF_MAX = 0x1p16383L, +QUARTER_SQRT_MAX = 0x1p8189L, +RECIP_EPSILON = 1 / LDBL_EPSILON, +SQRT_MIN = 0x1p-8191L; + +#if LDBL_MANT_DIG == 64 +static const union IEEEl2bits +um_e = LD80C(0xadf85458a2bb4a9b, 1, 2.71828182845904523536e+0L), +um_ln2 = LD80C(0xb17217f7d1cf79ac, -1, 6.93147180559945309417e-1L); +#define m_e um_e.e +#define m_ln2 um_ln2.e +static const long double +/* The next 2 literals for non-i386. Misrounding them on i386 is harmless. */ +SQRT_3_EPSILON = 5.70316273435758915310e-10, /* 0x9cc470a0490973e8.0p-94 */ +SQRT_6_EPSILON = 8.06549008734932771664e-10; /* 0xddb3d742c265539e.0p-94 */ +#elif LDBL_MANT_DIG == 113 +static const long double +m_e = 2.71828182845904523536028747135266250e0L, /* 0x15bf0a8b1457695355fb8ac404e7a.0p-111 */ +m_ln2 = 6.93147180559945309417232121458176568e-1L, /* 0x162e42fefa39ef35793c7673007e6.0p-113 */ +SQRT_3_EPSILON = 2.40370335797945490975336727199878124e-17, /* 0x1bb67ae8584caa73b25742d7078b8.0p-168 */ +SQRT_6_EPSILON = 3.39934988877629587239082586223300391e-17; /* 0x13988e1409212e7d0321914321a55.0p-167 */ +#else +#error "Unsupported long double format" +#endif + +static const volatile float +tiny = 0x1p-100; + +static long double complex clog_for_large_values(long double complex z); + +static inline long double +f(long double a, long double b, long double hypot_a_b) +{ + if (b < 0) + return ((hypot_a_b - b) / 2); + if (b == 0) + return (a / 2); + return (a * a / (hypot_a_b + b) / 2); +} + +static inline void +do_hard_work(long double x, long double y, long double *rx, int *B_is_usable, + long double *B, long double *sqrt_A2my2, long double *new_y) +{ + long double R, S, A; + long double Am1, Amy; + + R = hypotl(x, y + 1); + S = hypotl(x, y - 1); + + A = (R + S) / 2; + if (A < 1) + A = 1; + + if (A < A_crossover) { + if (y == 1 && x < LDBL_EPSILON * LDBL_EPSILON / 128) { + *rx = sqrtl(x); + } else if (x >= LDBL_EPSILON * fabsl(y - 1)) { + Am1 = f(x, 1 + y, R) + f(x, 1 - y, S); + *rx = log1pl(Am1 + sqrtl(Am1 * (A + 1))); + } else if (y < 1) { + *rx = x / sqrtl((1 - y) * (1 + y)); + } else { + *rx = log1pl((y - 1) + sqrtl((y - 1) * (y + 1))); + } + } else { + *rx = logl(A + sqrtl(A * A - 1)); + } + + *new_y = y; + + if (y < FOUR_SQRT_MIN) { + *B_is_usable = 0; + *sqrt_A2my2 = A * (2 / LDBL_EPSILON); + *new_y = y * (2 / LDBL_EPSILON); + return; + } + + *B = y / A; + *B_is_usable = 1; + + if (*B > B_crossover) { + *B_is_usable = 0; + if (y == 1 && x < LDBL_EPSILON / 128) { + *sqrt_A2my2 = sqrtl(x) * sqrtl((A + y) / 2); + } else if (x >= LDBL_EPSILON * fabsl(y - 1)) { + Amy = f(x, y + 1, R) + f(x, y - 1, S); + *sqrt_A2my2 = sqrtl(Amy * (A + y)); + } else if (y > 1) { + *sqrt_A2my2 = x * (4 / LDBL_EPSILON / LDBL_EPSILON) * y / + sqrtl((y + 1) * (y - 1)); + *new_y = y * (4 / LDBL_EPSILON / LDBL_EPSILON); + } else { + *sqrt_A2my2 = sqrtl((1 - y) * (1 + y)); + } + } +} + +long double complex +casinhl(long double complex z) +{ + long double x, y, ax, ay, rx, ry, B, sqrt_A2my2, new_y; + int B_is_usable; + long double complex w; + + x = creall(z); + y = cimagl(z); + ax = fabsl(x); + ay = fabsl(y); + + if (isnan(x) || isnan(y)) { + if (isinf(x)) + return (CMPLXL(x, y + y)); + if (isinf(y)) + return (CMPLXL(y, x + x)); + if (y == 0) + return (CMPLXL(x + x, y)); + return (CMPLXL(x + 0.0L + (y + 0), x + 0.0L + (y + 0))); + } + + if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) { + if (signbit(x) == 0) + w = clog_for_large_values(z) + m_ln2; + else + w = clog_for_large_values(-z) + m_ln2; + return (CMPLXL(copysignl(creall(w), x), + copysignl(cimagl(w), y))); + } + + if (x == 0 && y == 0) + return (z); + + raise_inexact(); + + if (ax < SQRT_6_EPSILON / 4 && ay < SQRT_6_EPSILON / 4) + return (z); + + do_hard_work(ax, ay, &rx, &B_is_usable, &B, &sqrt_A2my2, &new_y); + if (B_is_usable) + ry = asinl(B); + else + ry = atan2l(new_y, sqrt_A2my2); + return (CMPLXL(copysignl(rx, x), copysignl(ry, y))); +} + +long double complex +casinl(long double complex z) +{ + long double complex w; + + w = casinhl(CMPLXL(cimagl(z), creall(z))); + return (CMPLXL(cimagl(w), creall(w))); +} + +long double complex +cacosl(long double complex z) +{ + long double x, y, ax, ay, rx, ry, B, sqrt_A2mx2, new_x; + int sx, sy; + int B_is_usable; + long double complex w; + + x = creall(z); + y = cimagl(z); + sx = signbit(x); + sy = signbit(y); + ax = fabsl(x); + ay = fabsl(y); + + if (isnan(x) || isnan(y)) { + if (isinf(x)) + return (CMPLXL(y + y, -INFINITY)); + if (isinf(y)) + return (CMPLXL(x + x, -y)); + if (x == 0) + return (CMPLXL(pio2_hi + pio2_lo, y + y)); + return (CMPLXL(x + 0.0L + (y + 0), x + 0.0L + (y + 0))); + } + + if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) { + w = clog_for_large_values(z); + rx = fabsl(cimagl(w)); + ry = creall(w) + m_ln2; + if (sy == 0) + ry = -ry; + return (CMPLXL(rx, ry)); + } + + if (x == 1 && y == 0) + return (CMPLXL(0, -y)); + + raise_inexact(); + + if (ax < SQRT_6_EPSILON / 4 && ay < SQRT_6_EPSILON / 4) + return (CMPLXL(pio2_hi - (x - pio2_lo), -y)); + + do_hard_work(ay, ax, &ry, &B_is_usable, &B, &sqrt_A2mx2, &new_x); + if (B_is_usable) { + if (sx == 0) + rx = acosl(B); + else + rx = acosl(-B); + } else { + if (sx == 0) + rx = atan2l(sqrt_A2mx2, new_x); + else + rx = atan2l(sqrt_A2mx2, -new_x); + } + if (sy == 0) + ry = -ry; + return (CMPLXL(rx, ry)); +} + +long double complex +cacoshl(long double complex z) +{ + long double complex w; + long double rx, ry; + + w = cacosl(z); + rx = creall(w); + ry = cimagl(w); + if (isnan(rx) && isnan(ry)) + return (CMPLXL(ry, rx)); + if (isnan(rx)) + return (CMPLXL(fabsl(ry), rx)); + if (isnan(ry)) + return (CMPLXL(ry, ry)); + return (CMPLXL(fabsl(ry), copysignl(rx, cimagl(z)))); +} + +static long double complex +clog_for_large_values(long double complex z) +{ + long double x, y; + long double ax, ay, t; + + x = creall(z); + y = cimagl(z); + ax = fabsl(x); + ay = fabsl(y); + if (ax < ay) { + t = ax; + ax = ay; + ay = t; + } + + if (ax > HALF_MAX) + return (CMPLXL(logl(hypotl(x / m_e, y / m_e)) + 1, + atan2l(y, x))); + + if (ax > QUARTER_SQRT_MAX || ay < SQRT_MIN) + return (CMPLXL(logl(hypotl(x, y)), atan2l(y, x))); + + return (CMPLXL(logl(ax * ax + ay * ay) / 2, atan2l(y, x))); +} + +static inline long double +sum_squares(long double x, long double y) +{ + + if (y < SQRT_MIN) + return (x * x); + + return (x * x + y * y); +} + +static inline long double +real_part_reciprocal(long double x, long double y) +{ + long double scale; + uint16_t hx, hy; + int16_t ix, iy; + + GET_LDBL_EXPSIGN(hx, x); + ix = hx & 0x7fff; + GET_LDBL_EXPSIGN(hy, y); + iy = hy & 0x7fff; +#define BIAS (LDBL_MAX_EXP - 1) +#define CUTOFF (LDBL_MANT_DIG / 2 + 1) + if (ix - iy >= CUTOFF || isinf(x)) + return (1 / x); + if (iy - ix >= CUTOFF) + return (x / y / y); + if (ix <= BIAS + LDBL_MAX_EXP / 2 - CUTOFF) + return (x / (x * x + y * y)); + scale = 1; + SET_LDBL_EXPSIGN(scale, 0x7fff - ix); + x *= scale; + y *= scale; + return (x / (x * x + y * y) * scale); +} + +long double complex +catanhl(long double complex z) +{ + long double x, y, ax, ay, rx, ry; + + x = creall(z); + y = cimagl(z); + ax = fabsl(x); + ay = fabsl(y); + + if (y == 0 && ax <= 1) + return (CMPLXL(atanhl(x), y)); + + if (x == 0) + return (CMPLXL(x, atanl(y))); + + if (isnan(x) || isnan(y)) { + if (isinf(x)) + return (CMPLXL(copysignl(0, x), y + y)); + if (isinf(y)) + return (CMPLXL(copysignl(0, x), + copysignl(pio2_hi + pio2_lo, y))); + return (CMPLXL(x + 0.0L + (y + 0), x + 0.0L + (y + 0))); + } + + if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) + return (CMPLXL(real_part_reciprocal(x, y), + copysignl(pio2_hi + pio2_lo, y))); + + if (ax < SQRT_3_EPSILON / 2 && ay < SQRT_3_EPSILON / 2) { + raise_inexact(); + return (z); + } + + if (ax == 1 && ay < LDBL_EPSILON) + rx = (m_ln2 - logl(ay)) / 2; + else + rx = log1pl(4 * ax / sum_squares(ax - 1, ay)) / 4; + + if (ax == 1) + ry = atan2l(2, -ay) / 2; + else if (ay < LDBL_EPSILON) + ry = atan2l(2 * ay, (1 - ax) * (1 + ax)) / 2; + else + ry = atan2l(2 * ay, (1 - ax) * (1 + ax) - ay * ay) / 2; + + return (CMPLXL(copysignl(rx, x), copysignl(ry, y))); +} + +long double complex +catanl(long double complex z) +{ + long double complex w; + + w = catanhl(CMPLXL(cimagl(z), creall(z))); + return (CMPLXL(cimagl(w), creall(w))); +} diff --git a/lib/msun/src/e_asin.c b/lib/msun/src/e_asin.c index 27de207..931b270 100644 --- a/lib/msun/src/e_asin.c +++ b/lib/msun/src/e_asin.c @@ -6,7 +6,7 @@ * * Developed at SunSoft, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ diff --git a/lib/msun/src/e_coshl.c b/lib/msun/src/e_coshl.c index 0a21277..4e3b283 100644 --- a/lib/msun/src/e_coshl.c +++ b/lib/msun/src/e_coshl.c @@ -86,7 +86,9 @@ long double coshl(long double x) { long double hi,lo,x2,x4; +#if LDBL_MANT_DIG == 113 double dx2; +#endif uint16_t ix; GET_LDBL_EXPSIGN(ix,x); diff --git a/lib/msun/src/e_lgammaf_r.c b/lib/msun/src/e_lgammaf_r.c index 9084e18..48346c33 100644 --- a/lib/msun/src/e_lgammaf_r.c +++ b/lib/msun/src/e_lgammaf_r.c @@ -122,7 +122,7 @@ sin_pif(float x) float __ieee754_lgammaf_r(float x, int *signgamp) { - float nadj,p,p1,p2,p3,q,r,t,w,y,z; + float nadj,p,p1,p2,q,r,t,w,y,z; int32_t hx; int i,ix; diff --git a/lib/msun/src/e_sinhl.c b/lib/msun/src/e_sinhl.c index ce7e333..38d3df1 100644 --- a/lib/msun/src/e_sinhl.c +++ b/lib/msun/src/e_sinhl.c @@ -85,7 +85,10 @@ long double sinhl(long double x) { long double hi,lo,x2,x4; - double dx2,s; +#if LDBL_MANT_DIG == 113 + double dx2; +#endif + double s; int16_t ix,jx; GET_LDBL_EXPSIGN(jx,x); diff --git a/lib/msun/src/k_sincos.h b/lib/msun/src/k_sincos.h new file mode 100644 index 0000000..6f03be2 --- /dev/null +++ b/lib/msun/src/k_sincos.h @@ -0,0 +1,52 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * k_sin.c and k_cos.c merged by Steven G. Kargl. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +static const double +S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */ +S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */ +S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */ +S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */ +S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */ +S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */ + +static const double +C1 = 4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */ +C2 = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */ +C3 = 2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */ +C4 = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */ +C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */ +C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */ + +static inline void +__kernel_sincos(double x, double y, int iy, double *sn, double *cs) +{ + double hz, r, v, w, z; + + z = x * x; + w = z * z; + r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6); + v = z * x; + + if (iy == 0) + *sn = x + v * (S1 + z * r); + else + *sn = x - ((z * (y / 2 - v * r) - y) - v * S1); + + r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6)); + hz = z / 2; + w = 1 - hz; + *cs = w + (((1 - w) - hz) + (z * r - x * y)); +} diff --git a/lib/msun/src/k_sincosf.h b/lib/msun/src/k_sincosf.h new file mode 100644 index 0000000..073986d --- /dev/null +++ b/lib/msun/src/k_sincosf.h @@ -0,0 +1,43 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * k_sinf.c and k_cosf.c merged by Steven G. Kargl. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */ +static const double +S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */ +S2 = 0x111110896efbb2.0p-59, /* 0.0083333293858894631756 */ +S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */ +S4 = 0x16cd878c3b46a7.0p-71; /* 0.0000027183114939898219064 */ + +/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */ +static const double +C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */ +C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */ +C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */ +C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */ + +static inline void +__kernel_sincosdf(double x, float *sn, float *cs) +{ + double r, s, w, z; + + z = x * x; + w = z * z; + r = S3 + z * S4; + s = z * x; + *sn = (x + s * (S1 + z * S2)) + s * w * r; + r = C2 + z * C3; + *cs = ((1 + z * C0) + w * C1) + (w * z) * r; +} diff --git a/lib/msun/src/k_sincosl.h b/lib/msun/src/k_sincosl.h new file mode 100644 index 0000000..3a609bc --- /dev/null +++ b/lib/msun/src/k_sincosl.h @@ -0,0 +1,134 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * k_sinl.c and k_cosl.c merged by Steven G. Kargl + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#if LDBL_MANT_DIG == 64 /* ld80 version of k_sincosl.c. */ + +#if defined(__amd64__) || defined(__i386__) +/* Long double constants are slow on these arches, and broken on i386. */ +static const volatile double +C1hi = 0.041666666666666664, /* 0x15555555555555.0p-57 */ +C1lo = 2.2598839032744733e-18, /* 0x14d80000000000.0p-111 */ +S1hi = -0.16666666666666666, /* -0x15555555555555.0p-55 */ +S1lo = -9.2563760475949941e-18; /* -0x15580000000000.0p-109 */ +#define S1 ((long double)S1hi + S1lo) +#define C1 ((long double)C1hi + C1lo) +#else +static const long double +C1 = 0.0416666666666666666136L; /* 0xaaaaaaaaaaaaaa9b.0p-68 */ +S1 = -0.166666666666666666671L, /* -0xaaaaaaaaaaaaaaab.0p-66 */ +#endif + +static const double +C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */ +C3 = 0.000024801587301571716, /* 0x1a01a01a018e22.0p-68 */ +C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */ +C5 = 0.0000000020876754400407278, /* 0x11eed8caaeccf1.0p-81 */ +C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */ +C7 = 4.7383039476436467e-14, /* 0x1aac9d9af5c43e.0p-97 */ +S2 = 0.0083333333333333332, /* 0x11111111111111.0p-59 */ +S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */ +S4 = 0.0000027557319223597490, /* 0x171de3a55560f7.0p-71 */ +S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */ +S6 = 1.6059006598854211e-10, /* 0x161242b90243b5.0p-85 */ +S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */ +S8 = 2.6174587166648325e-15; /* 0x179372ea0b3f64.0p-101 */ + +static inline void +__kernel_sincosl(long double x, long double y, int iy, long double *sn, + long double *cs) +{ + long double hz, r, v, w, z; + + z = x * x; + v = z * x; + /* + * XXX Replace Horner scheme with an algorithm suitable for CPUs + * with more complex pipelines. + */ + r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * S8))))); + + if (iy == 0) + *sn = x + v * (S1 + z * r); + else + *sn = x - ((z * (y / 2 - v * r) - y) - v * S1); + + hz = z / 2; + w = 1 - hz; + r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 + + z * C7)))))); + *cs = w + (((1 - w) - hz) + (z * r - x * y)); +} + +#elif LDBL_MANT_DIG == 113 /* ld128 version of k_sincosl.c. */ + +static const long double +C1 = 0.04166666666666666666666666666666658424671L, +C2 = -0.001388888888888888888888888888863490893732L, +C3 = 0.00002480158730158730158730158600795304914210L, +C4 = -0.2755731922398589065255474947078934284324e-6L, +C5 = 0.2087675698786809897659225313136400793948e-8L, +C6 = -0.1147074559772972315817149986812031204775e-10L, +C7 = 0.4779477332386808976875457937252120293400e-13L, +S1 = -0.16666666666666666666666666666666666606732416116558L, +S2 = 0.0083333333333333333333333333333331135404851288270047L, +S3 = -0.00019841269841269841269841269839935785325638310428717L, +S4 = 0.27557319223985890652557316053039946268333231205686e-5L, +S5 = -0.25052108385441718775048214826384312253862930064745e-7L, +S6 = 0.16059043836821614596571832194524392581082444805729e-9L, +S7 = -0.76471637318198151807063387954939213287488216303768e-12L, +S8 = 0.28114572543451292625024967174638477283187397621303e-14L; + +static const double +C8 = -0.1561920696721507929516718307820958119868e-15, +C9 = 0.4110317413744594971475941557607804508039e-18, +C10 = -0.8896592467191938803288521958313920156409e-21, +C11 = 0.1601061435794535138244346256065192782581e-23, +S9 = -0.82206352458348947812512122163446202498005154296863e-17, +S10 = 0.19572940011906109418080609928334380560135358385256e-19, +S11 = -0.38680813379701966970673724299207480965452616911420e-22, +S12 = 0.64038150078671872796678569586315881020659912139412e-25; + +static inline void +__kernel_sincosl(long double x, long double y, int iy, long double *sn, + long double *cs) +{ + long double hz, r, v, w, z; + + z = x * x; + v = z * x; + /* + * XXX Replace Horner scheme with an algorithm suitable for CPUs + * with more complex pipelines. + */ + r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * (S8 + + z * (S9 + z * (S10 + z * (S11 + z * S12))))))))); + + if (iy == 0) + *sn = x + v * (S1 + z * r); + else + *cs = x - ((z * (y / 2 - v * r) - y) - v * S1); + + hz = z / 2; + w = 1 - hz; + r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 + + z * (C7 + z * (C8 + z * (C9 + z * (C10 + z * C11)))))))))); + + *cs = w + (((1 - w) - hz) + (z * r - x * y)); +} +#else +#error "Unsupported long double format" +#endif diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h index 2214c07..a8f4554 100644 --- a/lib/msun/src/math.h +++ b/lib/msun/src/math.h @@ -500,6 +500,9 @@ long double truncl(long double); #if __BSD_VISIBLE long double lgammal_r(long double, int *); +void sincos(double, double *, double *); +void sincosf(float, float *, float *); +void sincosl(long double, long double *, long double *); #endif __END_DECLS diff --git a/lib/msun/src/math_private.h b/lib/msun/src/math_private.h index afaf201..7487902 100644 --- a/lib/msun/src/math_private.h +++ b/lib/msun/src/math_private.h @@ -306,9 +306,21 @@ do { \ fpsetprec(__oprec); \ RETURNF(__retval); \ } while (0) +#define ENTERV() \ + fp_prec_t __oprec; \ + \ + if ((__oprec = fpgetprec()) != FP_PE) \ + fpsetprec(FP_PE) +#define RETURNV() do { \ + if (__oprec != FP_PE) \ + fpsetprec(__oprec); \ + return; \ +} while (0) #else -#define ENTERI(x) +#define ENTERI() #define RETURNI(x) RETURNF(x) +#define ENTERV() +#define RETURNV() return #endif /* Default return statement if hack*_t() is not used. */ diff --git a/lib/msun/src/s_fabs.c b/lib/msun/src/s_fabs.c index 15529e5..48aab25 100644 --- a/lib/msun/src/s_fabs.c +++ b/lib/msun/src/s_fabs.c @@ -10,9 +10,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD$"; -#endif +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); /* * fabs(x) returns the absolute value of x. diff --git a/lib/msun/src/s_fmax.c b/lib/msun/src/s_fmax.c index b51b865..77e27be 100644 --- a/lib/msun/src/s_fmax.c +++ b/lib/msun/src/s_fmax.c @@ -27,6 +27,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <float.h> #include <math.h> #include "fpmath.h" @@ -51,3 +52,7 @@ fmax(double x, double y) return (x > y ? x : y); } + +#if (LDBL_MANT_DIG == 53) +__weak_reference(fmax, fmaxl); +#endif diff --git a/lib/msun/src/s_fmin.c b/lib/msun/src/s_fmin.c index 3500c84..5545ff2 100644 --- a/lib/msun/src/s_fmin.c +++ b/lib/msun/src/s_fmin.c @@ -27,6 +27,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <float.h> #include <math.h> #include "fpmath.h" @@ -51,3 +52,7 @@ fmin(double x, double y) return (x < y ? x : y); } + +#if (LDBL_MANT_DIG == 53) +__weak_reference(fmin, fminl); +#endif diff --git a/lib/msun/src/s_logbl.c b/lib/msun/src/s_logbl.c index 7e88e36..ee1a91f 100644 --- a/lib/msun/src/s_logbl.c +++ b/lib/msun/src/s_logbl.c @@ -10,9 +10,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD$"; -#endif +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); #include <float.h> #include <limits.h> diff --git a/lib/msun/src/s_scalbn.c b/lib/msun/src/s_scalbn.c index e7efaab..b048b05 100644 --- a/lib/msun/src/s_scalbn.c +++ b/lib/msun/src/s_scalbn.c @@ -10,9 +10,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD$"; -#endif +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); /* * scalbn (double x, int n) @@ -21,7 +20,6 @@ static char rcsid[] = "$FreeBSD$"; * exponentiation or a multiplication. */ -#include <sys/cdefs.h> #include <float.h> #include "math.h" @@ -51,10 +49,12 @@ scalbn (double x, int n) if (k > 0x7fe) return huge*copysign(huge,x); /* overflow */ if (k > 0) /* normal result */ {SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20)); return x;} - if (k <= -54) + if (k <= -54) { if (n > 50000) /* in case integer overflow in n+k */ return huge*copysign(huge,x); /*overflow*/ - else return tiny*copysign(tiny,x); /*underflow*/ + else + return tiny*copysign(tiny,x); /*underflow*/ + } k += 54; /* subnormal result */ SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20)); return x*twom54; diff --git a/lib/msun/src/s_scalbnf.c b/lib/msun/src/s_scalbnf.c index 7666c74..21d001c 100644 --- a/lib/msun/src/s_scalbnf.c +++ b/lib/msun/src/s_scalbnf.c @@ -13,11 +13,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD$"; -#endif - #include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); #include "math.h" #include "math_private.h" @@ -46,10 +43,12 @@ scalbnf (float x, int n) if (k > 0xfe) return huge*copysignf(huge,x); /* overflow */ if (k > 0) /* normal result */ {SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x;} - if (k <= -25) + if (k <= -25) { if (n > 50000) /* in case integer overflow in n+k */ return huge*copysignf(huge,x); /*overflow*/ - else return tiny*copysignf(tiny,x); /*underflow*/ + else + return tiny*copysignf(tiny,x); /*underflow*/ + } k += 25; /* subnormal result */ SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x*twom25; diff --git a/lib/msun/src/s_scalbnl.c b/lib/msun/src/s_scalbnl.c index fc89f8d..28b0cf9 100644 --- a/lib/msun/src/s_scalbnl.c +++ b/lib/msun/src/s_scalbnl.c @@ -10,9 +10,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD$"; -#endif +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); /* * scalbnl (long double x, int n) @@ -27,7 +26,6 @@ static char rcsid[] = "$FreeBSD$"; * for scalbn(), so we don't use this routine. */ -#include <sys/cdefs.h> #include <float.h> #include <math.h> @@ -59,10 +57,12 @@ scalbnl (long double x, int n) if (k >= 0x7fff) return huge*copysignl(huge,x); /* overflow */ if (k > 0) /* normal result */ {u.bits.exp = k; return u.e;} - if (k <= -128) + if (k <= -128) { if (n > 50000) /* in case integer overflow in n+k */ return huge*copysign(huge,x); /*overflow*/ - else return tiny*copysign(tiny,x); /*underflow*/ + else + return tiny*copysign(tiny,x); /*underflow*/ + } k += 128; /* subnormal result */ u.bits.exp = k; return u.e*0x1p-128; diff --git a/lib/msun/src/s_sincos.c b/lib/msun/src/s_sincos.c new file mode 100644 index 0000000..85e8d74 --- /dev/null +++ b/lib/msun/src/s_sincos.c @@ -0,0 +1,80 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * s_sin.c and s_cos.c merged by Steven G. Kargl. Descriptions of the + * algorithms are contained in the original files. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <float.h> + +#include "math.h" +#define INLINE_REM_PIO2 +#include "math_private.h" +#include "e_rem_pio2.c" +#include "k_sincos.h" + +void +sincos(double x, double *sn, double *cs) +{ + double y[2]; + int32_t n, ix; + + /* High word of x. */ + GET_HIGH_WORD(ix, x); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + if (ix <= 0x3fe921fb) { + if (ix < 0x3e400000) { /* |x| < 2**-27 */ + if ((int)x == 0) { /* Generate inexact. */ + *sn = x; + *cs = 1; + return; + } + } + __kernel_sincos(x, 0, 0, sn, cs); + return; + } + + /* If x = Inf or NaN, then sin(x) = NaN and cos(x) = NaN. */ + if (ix >= 0x7ff00000) { + *sn = x - x; + *cs = x - x; + return; + } + + /* Argument reduction. */ + n = __ieee754_rem_pio2(x, y); + + switch(n & 3) { + case 0: + __kernel_sincos(y[0], y[1], 1, sn, cs); + break; + case 1: + __kernel_sincos(y[0], y[1], 1, cs, sn); + *cs = -*cs; + break; + case 2: + __kernel_sincos(y[0], y[1], 1, sn, cs); + *sn = -*sn; + *cs = -*cs; + break; + default: + __kernel_sincos(y[0], y[1], 1, cs, sn); + *sn = -*sn; + } +} + +#if (LDBL_MANT_DIG == 53) +__weak_reference(sincos, sincosl); +#endif diff --git a/lib/msun/src/s_sincosf.c b/lib/msun/src/s_sincosf.c new file mode 100644 index 0000000..755ff05 --- /dev/null +++ b/lib/msun/src/s_sincosf.c @@ -0,0 +1,126 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* s_sincosf.c -- float version of s_sincos.c. + * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com. + * Optimized by Bruce D. Evans. + * Merged s_sinf.c and s_cosf.c by Steven G. Kargl. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <float.h> + +#include "math.h" +#define INLINE_REM_PIO2F +#include "math_private.h" +#include "e_rem_pio2f.c" +#include "k_sincosf.h" + +/* Small multiples of pi/2 rounded to double precision. */ +static const double +p1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */ +p2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */ +p3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */ +p4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */ + +void +sincosf(float x, float *sn, float *cs) +{ + float c, s; + double y; + int32_t n, hx, ix; + + GET_FLOAT_WORD(hx, x); + ix = hx & 0x7fffffff; + + if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ + if (ix < 0x39800000) { /* |x| < 2**-12 */ + if ((int)x == 0) { + *sn = x; /* x with inexact if x != 0 */ + *cs = 1; + return; + } + } + __kernel_sincosdf(x, sn, cs); + return; + } + + if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */ + if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */ + if (hx > 0) { + __kernel_sincosdf(x - p1pio2, cs, sn); + *cs = -*cs; + } else { + __kernel_sincosdf(x + p1pio2, cs, sn); + *sn = -*sn; + } + } else { + if (hx > 0) + __kernel_sincosdf(x - p2pio2, sn, cs); + else + __kernel_sincosdf(x + p2pio2, sn, cs); + *sn = -*sn; + *cs = -*cs; + } + return; + } + + if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */ + if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */ + if (hx > 0) { + __kernel_sincosdf(x - p3pio2, cs, sn); + *sn = -*sn; + } else { + __kernel_sincosdf(x + p3pio2, cs, sn); + *cs = -*cs; + } + } else { + if (hx > 0) + __kernel_sincosdf(x - p4pio2, sn, cs); + else + __kernel_sincosdf(x + p4pio2, sn, cs); + } + return; + } + + /* If x = Inf or NaN, then sin(x) = NaN and cos(x) = NaN. */ + if (ix >= 0x7f800000) { + *sn = x - x; + *cs = x - x; + return; + } + + /* Argument reduction. */ + n = __ieee754_rem_pio2f(x, &y); + __kernel_sincosdf(y, &s, &c); + + switch(n & 3) { + case 0: + *sn = s; + *cs = c; + break; + case 1: + *sn = c; + *cs = -s; + break; + case 2: + *sn = -s; + *cs = -c; + break; + default: + *sn = -c; + *cs = s; + } +} + + diff --git a/lib/msun/src/s_sincosl.c b/lib/msun/src/s_sincosl.c new file mode 100644 index 0000000..aef36c2 --- /dev/null +++ b/lib/msun/src/s_sincosl.c @@ -0,0 +1,105 @@ +/*- + * Copyright (c) 2007, 2010-2013 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * s_sinl.c and s_cosl.c merged by Steven G. Kargl. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <float.h> +#ifdef __i386__ +#include <ieeefp.h> +#endif + +#include "math.h" +#include "math_private.h" +#include "k_sincosl.h" + +#if LDBL_MANT_DIG == 64 +#include "../ld80/e_rem_pio2l.h" +#elif LDBL_MANT_DIG == 113 +#include "../ld128/e_rem_pio2l.h" +#else +#error "Unsupported long double format" +#endif + +void +sincosl(long double x, long double *sn, long double *cs) +{ + union IEEEl2bits z; + int e0, sgn; + long double y[2]; + + z.e = x; + sgn = z.bits.sign; + z.bits.sign = 0; + + ENTERV(); + + /* Optimize the case where x is already within range. */ + if (z.e < M_PI_4) { + /* + * If x = +-0 or x is a subnormal number, then sin(x) = x and + * cos(x) = 1. + */ + if (z.bits.exp == 0) { + *sn = x; + *cs = 1; + } else + __kernel_sincosl(x, 0, 0, sn, cs); + RETURNV(); + } + + /* If x = NaN or Inf, then sin(x) and cos(x) are NaN. */ + if (z.bits.exp == 32767) { + *sn = x - x; + *cs = x - x; + RETURNV(); + } + + /* Range reduction. */ + e0 = __ieee754_rem_pio2l(x, y); + + switch (e0 & 3) { + case 0: + __kernel_sincosl(y[0], y[1], 1, sn, cs); + break; + case 1: + __kernel_sincosl(y[0], y[1], 1, cs, sn); + *cs = -*cs; + break; + case 2: + __kernel_sincosl(y[0], y[1], 1, sn, cs); + *sn = -*sn; + *cs = -*cs; + break; + default: + __kernel_sincosl(y[0], y[1], 1, cs, sn); + *sn = -*sn; + } + + RETURNV(); +} diff --git a/lib/msun/src/s_tanhl.c b/lib/msun/src/s_tanhl.c index 886158b..b753186 100644 --- a/lib/msun/src/s_tanhl.c +++ b/lib/msun/src/s_tanhl.c @@ -113,7 +113,9 @@ long double tanhl(long double x) { long double hi,lo,s,x2,x4,z; +#if LDBL_MANT_DIG == 113 double dx2; +#endif int16_t jx,ix; GET_LDBL_EXPSIGN(jx,x); diff --git a/lib/msun/tests/ctrig_test.c b/lib/msun/tests/ctrig_test.c index 18c18f8..45b2b78 100644 --- a/lib/msun/tests/ctrig_test.c +++ b/lib/msun/tests/ctrig_test.c @@ -443,10 +443,6 @@ ATF_TC_BODY(test_large_inputs, tc) { long double complex z; -#ifdef __i386__ - atf_tc_expect_fail("test fails on i386 - bug 205446"); -#endif - /* tanh() uses a threshold around x=22, so check both sides. */ z = CMPLXL(21, 0.78539816339744830961566084581987572L); testall_odd_tol(ctanh, z, |