Table 12 lists and explains the various parallel load-and-store functions that are available.
Function | Parallel load (single-precision): __lfps |
Purpose | Loads parallel single-precision values from the address of a , and converts the results to double-precision. The first word in address(a) is loaded into the primary element of the return value. The next word, at location address(a) +4, is loaded into the secondary element of the return value. |
Formula |
primary(result) = a[0] secondary(result) = a[1] |
C/C++ prototype | double _Complex __lfps (float * a); |
Fortran description | LOADFP(A)
where A is of type REAL(4) result is of type COMPLEX(8) |
Function | Cross load (single-precision): __lfxs |
Purpose | Loads single-precision values that have been converted to double-precision, from the address of a. The first word in address(a) is loaded into the secondary element of the return value. The next word, at location address(a) +4, is loaded into the primary element of the return value. |
Formula |
primary(result) = a[1] secondary(result) = a[0] |
C/C++ prototype | double _Complex __lfxs (float * a); |
Fortran description | LOADFX(A)
where A is of type REAL(4) result is of type COMPLEX(8) |
Function | Parallel load: __lfpd |
Purpose | Loads in parallel values from the address of a. The first word in address(a) is loaded into the primary element of the return value. The next word, at location address(a) +8, is loaded into the secondary element of the return value. |
Formula |
primary(result) = a[0] secondary(result) = a[1] |
C/C++ prototype | double _Complex __lfpd(double* a); |
Fortran description | LOADFP(A)
where A is of type REAL(8) result is of type COMPLEX(8) |
Function | Cross load: __lfxd |
Purpose | Loads values from the address of a. The first word in address(a) is loaded into the secondary element of the return value. The next word, at location address(a) +8, is loaded into the primary element of the return value. |
Formula |
primary(result) = a[1] secondary(result) = a[0] |
C/C++ prototype | double _Complex __lfxd (double * a); |
Fortran description | LOADFX(A)
where A is of type REAL(8) result is of type COMPLEX(8) |
Function | Parallel store (single-precision): __stfps |
Purpose | Stores in parallel double-precision values that have been converted to single-precision, into address(b). The primary element of a is converted to single-precision and stored as the first word in address(b). The secondary element of a is converted to single-precision and stored as the next word at location address(b) +4. |
Formula |
b[0] = primary(a) b[1] = secondary(a) |
C/C++ prototype | void __stfps (float * b, double _Complex a); |
Fortran description | STOREFP(B,A)
where B is of type REAL(4) where A is of type COMPLEX(8) result is none |
Function | Cross store (single-precision): __stfxs |
Purpose | Stores double-precision values that have been converted to single-precision, into address(b). The secondary element of a is converted to single-precision and stored as the first word in address(b). The primary element of a is converted to single-precision and stored as the next word at location address(b) +4. |
Formula | b[0] = secondary(a) b[1] = primary(a) |
C/C++ prototype | void __stfxs (float * b, double _Complex a); |
Fortran description | STOREFX(B,A)
where B is of type REAL(4) where A is of type COMPLEX(8) result is none |
Function | Parallel store: __stfpd |
Purpose | Stores in parallel values into address(b). The primary element of a is stored as the first double word in address(b). The secondary element of a is stored as the next double word at location address(b) +8. |
Formula |
b[0] = primary(a) b[1] = secondary(a) |
C/C++ prototype | void __stfpd (double * b, double _Complex a); |
Fortran description | STOREFP(B,A)
where B is of type REAL(8) where A is of type COMPLEX(8) result is none |
Function | Cross store: __stfxd |
Purpose | Stores values into address(b). The secondary element of a is stored as the first double word in address(b). The primary element of a is stored as the next double word at location address(b) +8. |
Formula |
b[0] = secondary(a) b[1] = primary(a) |
C/C++ prototype | void __stfxd (double * b, double _Complex a); |
Fortran description | STOREFP(B,A)
where B is of type REAL(8) where A is of type COMPLEX(8) result is none |
Function | Parallel store as integer: __stfpiw |
Purpose | Stores in parallel floating-point double-precision values into b as integer words. The lower-order 32 bits of the primary element of a are stored as the first integer word in address(b). The lower-order 32 bits of the secondary element of a are stored as the next integer word at location address(b) +4. This function is typically preceded by a call to the __fpctiw or __fpctiwz built-in functions, described in Unary functions, which perform parallel conversion of dual floating-point values to integers. |
Formula |
b[0] = primary(a) b[1] = secondary(a) |
C/C++ prototype | void __stfpiw (int * b, double _Complex a); |
Fortran description | STOREFP(B,A)
where B is of type INTEGER(4) where A is of type COMPLEX(8) result is none |