Hexadecimal floating-point instructions

If the FLOAT(HEX) option is in effect, these functions are intended to generate hexadecimal floating-point instructions. For more information about the instructions themselves, see the topic of z/Architecture Principles of Operation.

If you want to use any of the following functions, your program must include builtins.h and be compiled with either the LANGLVL(EXTENDED) option or the LANGLVL(LIBEXT) and FLOAT(HEX) options.
Note: Some of these instructions also require that the ARCH option is set to a minimum level.
Table 1. Hexadecimal floating-point instruction prototypes
PROTOTYPE and Notes Sample Pseudo Assembly MIN ARCH
int __cfer(int *Op1, int M3, float Op2)

The return value is the condition code.

CFER R2,M3,Op2
LR   *Op3,R2
ARCH(3)
int __cfdr(int *Op1, int M3, double Op2)

The return value is the condition code.

CFDR R2,M3,Op2
LR   *Op3,R2
ARCH(3)
int __cfxr(int *Op1, int M3, long double Op2)

The return value is the condition code.

CFXR R2,M3,Op2
LR   *Op3,R2
ARCH(3)
float __fier(float Op2)

The return value is the result.

FIER F1,Op2 ARCH(3)
double __fidr(double Op2)

The return value is the result.

FIDR F1,Op2 ARCH(3)
long double __fixr(long double Op2)

The return value is the result.

FIXR F1,Op2 ARCH(3)
int __lnxr(long double *Op1, long double Op2)

The return value is the condition code.

LDR  F1,*Op1
LNXR F1,Op2
LDR  *Op1,F1
ARCH(3)
int __lndr(double *Op1, double Op2)

The return value is the condition code.

LDR  F1,*Op1
LNDR F1,Op2
LDR  *Op1,F1
ARCH(0)
int __lpdr(double *Op1, double Op2)

The return value is the condition code.

LDR  F1,*Op1
LPDR F1,Op2
LDR  *Op1,F1
ARCH(0)
int __lpxr(long double *Op1, long double Op2)

The return value is the condition code.

LDR  F1,*Op1
LPXR F1,Op2
LDR  *Op1,F1
ARCH(3)
int __lner(float *Op1, float Op2)

The return value is the condition code.

LER  F1,*Op1
LNER F1,Op2
LER  *Op1,F1
ARCH(0)
int __lper(float *Op1, float Op2)

The return value is the condition code.

LER  F1,*Op1
LPER F1,Op2
LER  *Op1,F1
ARCH(0)
float __sqer(float Op2)

The return value is the square root.

SQER F1,Op2 ARCH(0) or above
double __sqdr(double Op2)

The return value is the square root.

SQDR F1,Op2 ARCH(0) or above
long double __sqxr(long double Op2)

The return value is the square root.

SQXR F1,Op2 ARCH(3)