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
- The vector count leading zeros function
- The vector population count function
- Extended vector logical operations functions
- 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
- Vector add and subtract functions
- Vector max and min functions
- 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
- 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
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:
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 .