Skip to content

CLANG specific issues. #94

Description

@munroesj52
  • Can not tell what is up with Float128 support. FLOAT128 is not defined.
    • ./pveclib/vec_f128_ppc.h:209:17: error: cannot combine with previous declaration specifier
    • typedef vf128_t __float128;
    • Clang claims to support __float128 but may require explicit -mfloat128 for use.
      • Clang seems to require both -mcpu=power9 and -mfloat128 for clang-8
      • This defines FLOAT128 and enables the __float128 type
      • Otherwise you are not allowed to use or redefine (typedef) __float128
    • But Clang (attempts) to use the GCC/GLIBC installed math.h, stdlib.h ... headers which will get compile errors if -mcpu=power9 -mfloat128 is enabled.
      • Basically clang chokes on code in bits/floatn.h what uses attribute ((mode (KC)))
  • Seems to be still using long double == _IBM128 but the type constrains do not seem to be working.
  • No Decimal FP support. Had to disable BCD.
    • Can't even use in-line asm because clang does no recognize the constraints for FPR pairs (FPRp) required for _Decimal128.
  • No constant folding for __int128 for example:
    • (__int128 ) 10ll * (__int128 ) 1000000000000000000ll, /* 10**19 */
    • works on GCC for both scalar and vector initializers.
  • No support for vector bool _int128. GCC supports.
  • Does not support #pagma GCC target
  • vec_ld () does not handle vector __int128 (as specified in the Power Vector Intrinsic Programming Reference). CLang only supports the original VMX types. GCC support vector __int128 and long long.
  • Clang does not support __builtin_unpack_longdouble, should be a direct register transfer.
    • Again can't use in-line asm because clang does not support the FPR pair constaints
  • Code gen bug in clang8 for vec_sra vector long long.
  • Clang8 for -mcpu=power9 does not support inline asm for vmsumud which is a valid instruction and mnemonic. This cripples the implementation of quadword and multi-quadword precision multiply.
  • Before clang 9 clang miss assembled the DCMX of the Test Data Class instructions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions