/* 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 */