windows-nt/Source/XPSP1/NT/base/ntos/ke/ia64/feproto.h
2020-09-26 16:20:57 +08:00

443 lines
10 KiB
C

/******************************
Intel Confidential
******************************/
#ifndef _EM_PROTOTYPES_H
#define _EM_PROTOTYPES_H
#ifndef INLINE
#define INLINE
#endif
#if !(defined(BIG_ENDIAN) || defined(LITTLE_ENDIAN))
#error Endianness not established; define BIG_ENDIAN or LITTLE_ENDIAN
#endif
/**********************************************/
/* Assembler Supported Instruction Prototypes */
/**********************************************/
/* Floating-point Absolute Maximum */
void
fp82_famax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Parallel Absolute Maximum */
void
fp82_fpamax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Absolute Minimum */
void
fp82_famin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Parallel Absolute Minimum */
void
fp82_fpamin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Compare */
void
fp82_fcmp_eq(EM_state_type *ps,
EM_opcode_ctype_type ctype,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_pred_reg_specifier p1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fcmp_lt(EM_state_type *ps,
EM_opcode_ctype_type ctype,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_pred_reg_specifier p1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fcmp_le(EM_state_type *ps,
EM_opcode_ctype_type ctype,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_pred_reg_specifier p1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fcmp_unord(EM_state_type *ps,
EM_opcode_ctype_type ctype,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_pred_reg_specifier p1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Paralel Compare */
void
fp82_fpcmp_eq(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_lt(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_le(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_unord(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_neq(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_nlt(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_nle(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
void
fp82_fpcmp_ord(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Convert Floating-point to Integer */
void
fp82_fcvt_fx(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
void
fp82_fcvt_fx_trunc(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
void
fp82_fcvt_fxu(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
void
fp82_fcvt_fxu_trunc(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
/* Parallel Convert Floating-point to Integer */
void
fp82_fpcvt_fx(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
void
fp82_fpcvt_fx_trunc(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
void
fp82_fpcvt_fxu(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
void
fp82_fpcvt_fxu_trunc(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2);
/* Floating-point Multiply Add */
void
fp82_fma(EM_state_type *ps,
EM_opcode_pc_type pc,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f3,
EM_fp_reg_specifier f4,
EM_fp_reg_specifier f2);
/* Floating Point Parallel Multiply Add */
void
fp82_fpma(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f3,
EM_fp_reg_specifier f4,
EM_fp_reg_specifier f2);
/* Floating-point Maximum */
void
fp82_fmax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Parallel Maximum */
void
fp82_fpmax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Minimum */
void
fp82_fmin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Parallel Minimum */
void
fp82_fpmin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Multiply Subtract */
void
fp82_fms(EM_state_type *ps,
EM_opcode_pc_type pc,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f3,
EM_fp_reg_specifier f4,
EM_fp_reg_specifier f2);
/* Floating-point Parallel Multiply Subtract */
void
fp82_fpms(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f3,
EM_fp_reg_specifier f4,
EM_fp_reg_specifier f2);
/* Floating-point Negative Multiply Add */
void
fp82_fnma(EM_state_type *ps,
EM_opcode_pc_type pc,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f3,
EM_fp_reg_specifier f4,
EM_fp_reg_specifier f2);
/* Floating-point Parallel Negative Multiply Add */
void
fp82_fpnma(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_fp_reg_specifier f3,
EM_fp_reg_specifier f4,
EM_fp_reg_specifier f2);
/* Floating-point Reciprocal Approximation */
void
fp82_frcpa(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Parallel Reciprocal Approximation */
void
fp82_fprcpa(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f2,
EM_fp_reg_specifier f3);
/* Floating-point Reciprocal Square Root Approximation */
void
fp82_frsqrta(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f3);
/* Floating-point Parallel Reciprocal Square Root Approximation */
void
fp82_fprsqrta(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_pred_reg_specifier qp,
EM_fp_reg_specifier f1,
EM_pred_reg_specifier p2,
EM_fp_reg_specifier f3);
/******************************************************************************/
/* Define macros to simplify access to the fp82_ functions. This is done so */
/* the namespace doesn't get cluttered, while retaining convenient access. */
/* The FP82_NO_SHORTCUTS macro can be defined to prevent creation of these. */
/******************************************************************************/
#ifndef FP82_NO_SHORTCUTS
#define famax fp82_famax
#define fpamax fp82_fpamax
#define famin fp82_famin
#define fpamin fp82_fpamin
#define fcmp_eq fp82_fcmp_eq
#define fcmp_lt fp82_fcmp_lt
#define fcmp_le fp82_fcmp_le
#define fcmp_unord fp82_fcmp_unord
#define fpcmp_eq fp82_fpcmp_eq
#define fpcmp_lt fp82_fpcmp_lt
#define fpcmp_le fp82_fpcmp_le
#define fpcmp_unord fp82_fpcmp_unord
#define fpcmp_neq fp82_fpcmp_neq
#define fpcmp_nlt fp82_fpcmp_nlt
#define fpcmp_nle fp82_fpcmp_nle
#define fpcmp_ord fp82_fpcmp_ord
#define fcvt_fx fp82_fcvt_fx
#define fcvt_fx_trunc fp82_fcvt_fx_trunc
#define fcvt_fxu fp82_fcvt_fxu
#define fcvt_fxu_trunc fp82_fcvt_fxu_trunc
#define fpcvt_fxu_trunc fp82_fpcvt_fxu_trunc
#define fpcvt_fxu fp82_fpcvt_fxu
#define fpcvt_fx fp82_fpcvt_fx
#define fpcvt_fx_trunc fp82_fpcvt_fx_trunc
#define fma fp82_fma
#define fpma fp82_fpma
#define fmax fp82_fmax
#define fpmax fp82_fpmax
#define fmin fp82_fmin
#define fpmin fp82_fpmin
#define fms fp82_fms
#define fpms fp82_fpms
#define fnma fp82_fnma
#define fpnma fp82_fpnma
#define frcpa fp82_frcpa
#define fprcpa fp82_fprcpa
#define frsqrta fp82_frsqrta
#define fprsqrta fp82_fprsqrta
#endif /* FP82_NO_SHORTCUTS */
#endif /* _EM_PROTOTYPES_H */