Load and store functions

Table 12 lists and explains the various parallel load-and-store functions that are available.

Table 12. Load and store functions
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