On 24.06.2017 14:15, Martin Husemann wrote: > On Sat, Jun 24, 2017 at 01:46:07PM +0200, Kamil Rytarowski wrote: >> To be clear, we now thinking only about i386 and amd64. Other OSes push >> also systemz machines to this competition. > > I have no idea what systemz machines are and why you are limiting the > arch coverage for this discussion arbitrarily. > systemz machines are IBM mainframes. I list i386/amd64/systemz as they enable float128 in clang frontend: https://github.com/NetBSD/src/blob/trunk/external/bsd/llvm/dist/clang/lib/Basic/Targets.cpp#L475 https://github.com/NetBSD/src/blob/trunk/external/bsd/llvm/dist/clang/lib/Basic/Targets.cpp#L491 NetBSD currently enables it on i386/amd64 and i64. Itanium is currently without LLVM backend support. $ git grep _GLIBCXX_USE_FLOAT128 arch/alpha/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/arm/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/armeb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/coldfire/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earm/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmeb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmhf/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmhfeb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv4/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv4eb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv6/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv6eb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv6hf/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv6hfeb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv7/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv7eb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv7hf/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/earmv7hfeb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/hppa/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/i386/c++config.h:#define _GLIBCXX_USE_FLOAT128 1 arch/ia64/c++config.h:#define _GLIBCXX_USE_FLOAT128 1 arch/m68000/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/m68k/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/mips64eb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/mips64el/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/mipseb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/mipsel/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/or1k/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/powerpc/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/powerpc64/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/riscv32/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/riscv64/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/sh3eb/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/sh3el/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/sparc/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/sparc64/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/vax/c++config.h:/* #undef _GLIBCXX_USE_FLOAT128 */ arch/x86_64/c++config.h:#define _GLIBCXX_USE_FLOAT128 1 > We have softfloat support for 128bit in userland, and could probably > use that for all architectures, but the downside would be that lots of > stupid configure scripts will start picking this up and use it, and > users will see a heavy performance degradation. > > That is why IMO providing the type and support functions is a bad idea > unless supported by hardware or forced by ABI. > SYSV ABI AMD64 notes float128 optionally and software emulated for at least order hardware. I assume that undefining it now would break ABI compatibility in x86 ports, and we should still enable it in libstdc++ with Clang/libtdc++. This is the default setup most people will get with using GCC in base and Clang from pkgsrc. > Martin >
Attachment:
signature.asc
Description: OpenPGP digital signature