Built-in functions

The following major categories of built-in functions are new to this release.

POWER8 built-in functions for vector processing

The following vector built-in functions are added:
  • The vector gather-bits-by-bytes doubleword function
    • vec_gbb
  • The vector count leading zeros function
    • vec_cntlz
  • The vector population count function
    • vec_popcnt
  • Extended vector logical operations functions
    • vec_eqv
    • vec_nand
    • vec_orc
  • 128-bit integer add subtract functions
    • vec_add_u128
    • vec_sub_u128
    • vec_adde_u128
    • vec_sube_u128
    • vec_addc_u128
    • vec_subc_u128
    • vec_addec_u128
    • vec_subec_u128
    • vec_bperm
The following built-in functions are extended to support doubleword types:
  • Vector pack functions
    • vec_pack
    • vec_packs
    • vec_packsu
  • Vector unpack functions
    • vec_unpackh
    • vec_unpackl
  • Vector add and subtract functions
    • vec_add
    • vec_sub
  • Vector max and min functions
    • vec_max
    • vec_min
  • Vector shift and rotate functions
    • vec_rl
    • vec_sl
    • vec_sr
    • vec_sra
  • Vector compare functions
    • vec_cmpeq
    • vec_cmpgt
    • vec_cmpge
    • vec_cmplt
    • vec_cmple

POWER8 binary-coded decimal built-in functions

The following built-in functions are added to support binary-coded decimal (BCD) arithmetic and comparison:
  • BCD add and subtract functions
    • __bcdadd
    • __bcdsub
  • BCD test add and subtract for overflow functions
    • __bcdadd_ofl
    • __bcdsub_ofl
    • __bcd_invalid
  • BCD comparison functions
    • __bcdcmpeq
    • __bcdcmpgt
    • __bcdcmpge
    • __bcdcmplt
    • __bcdcmple
  • BCD load and store functions
    • __vec_ldrmb
    • __vec_strmb

POWER8 cryptography built-in functions

The following built-in functions are provided to perform cryptographic operations:
  • Advanced Encryption Standard (AES) functions
    • __vcipher
    • __vcipherlast
    • __vncipher
    • __vncipherlast
    • __vsbox
  • Secure Hash Algorithm (SHA) functions
    • __vshasigmad
    • __vshasigmaw
  • Miscellaneous functions
    • __vpmsumb
    • __vpmsumh
    • __vpmsumw
    • __vpmsumd
    • __vpermxor

POWER8 non-vector built-in functions

The following built-in functions are added to improve the efficiency of cache:
  • __dcbtna
  • __icbt
Load and store built-in functions are extended with the following functions to support more types:
  • __lqarx
  • __lharx
  • __lbarx
  • __stqcx
  • __sthcx
  • __stbcx

POWER8 transactional memory built-in functions

Transactional memory is a model for parallel programming. In this model, you can designate a block of instructions or statements to be treated atomically.

You can use the following built-in functions to mark the beginning or end of transactions, and to diagnose the reasons for failure:
  • Transaction begin and end functions
    • __TM_begin
    • __TM_end
    • __TM_simple_begin
  • Transaction abort functions
    • __TM_abort
    • __TM_named_abort
  • Transaction inquiry functions
    • __TM_failure_address
    • __TM_failure_code
    • __TM_is_conflict
    • __TM_is_failure_persistent
    • __TM_is_footprint_exceeded
    • __TM_is_illegal
    • __TM_is_named_user_abort
    • __TM_is_nested_too_deep
    • __TM_is_user_abort
    • __TM_nesting_depth

POWER8 prefetch built-in functions

The following built-in functions display the problem state control of the Data Stream Control Register (DSCR) in an intuitive, portable, and optimization-friendly way:
  • Transient attribute enable functions
    • __hardware_transient_enable
    • __load_transient_enable
    • __software_transient_enable
    • __store_transient_enable
  • Unit count enable and set functions
    • __hardware_unit_count_enable
    • __software_unit_count_enable
    • __set_prefetch_unit_count
  • Prefetch depth functions
    • __default_prefetch_depth
    • __depth_attainment_urgency
  • Load stream enable and disable functions
    • __load_stream_disable
    • __stride_n_stream_enable
  • DSCR functions
    • __prefetch_get_dscr_register
    • __prefetch_set_dscr_register
Note: POWER8™ built-in functions are valid only when -qarch is set to target POWER8 processors.

For more information about built-in functions provided by XL C/C++, see Compiler built-in functions .