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

391 lines
10 KiB
C

// ******************************
// Intel Confidential
// ******************************
#ifndef _EM_INSTR_H
#define _EM_INSTR_H
#include "fepublic.h"
static EM_fp_reg_type
fp_ieee_recip(
EM_fp_reg_type den);
static EM_fp_reg_type
fp_ieee_recip_sqrt(
EM_fp_reg_type root);
// ********************************
// Instruction Pages Prototypes
// ********************************
// Floating-point Multiply Add
static INLINE void
_fma(EM_state_type *ps,
EM_opcode_pc_type pc,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f3,
EM_uint_t f4,
EM_uint_t f2);
// Floating-point Parallel Multiply Add
static INLINE void
_fpma(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f3,
EM_uint_t f4,
EM_uint_t f2);
// Floating-point Multiply Subtract
static INLINE void
_fms(EM_state_type *ps,
EM_opcode_pc_type pc,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f3,
EM_uint_t f4,
EM_uint_t f2);
// Floating-point Parallel Multiply Subtract
static INLINE void
_fpms(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f3,
EM_uint_t f4,
EM_uint_t f2);
// Floating-point Negative Multiply Add
static INLINE void
_fnma(EM_state_type *ps,
EM_opcode_pc_type pc,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f3,
EM_uint_t f4,
EM_uint_t f2);
// Floating-point Parallel Negative Multiply Add
static INLINE void
_fpnma(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f3,
EM_uint_t f4,
EM_uint_t f2);
// Floating-point Compare
static INLINE void
_fcmp(EM_state_type *ps,
EM_opcode_frel_type frel,
EM_opcode_ctype_type ctype,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t p1,
EM_uint_t p2,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Reciprocal Approximation
static INLINE void
_frcpa(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t p2,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Parallel Reciprocal Approximation
static INLINE void
_fprcpa(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t p2,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Reciprocal Square Root Approximation
static INLINE void
_frsqrta(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t p2,
EM_uint_t f3);
// Floating-point Parallel Reciprocal Square Root Approximation
static INLINE void
_fprsqrta(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t p2,
EM_uint_t f3);
// Floating-point Minimum
static INLINE void
_fmin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
static INLINE void
_fmax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Absolute Minimum
static INLINE void
_famin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Absolute Maximum
static INLINE void
_famax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Parallel Minimum
static INLINE void
_fpmin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Parallel Minimum
static INLINE void
_fpmax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Parallel Absolute Minimum
static INLINE void
_fpamin(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Parallel Absolute Maximum
static INLINE void
_fpamax(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Floating-point Parallel Compare
static INLINE void
_fpcmp(EM_state_type *ps,
EM_opcode_frel_type frel,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2,
EM_uint_t f3);
// Convert Floating-point to Integer
static INLINE void
_fcvt_fx(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2);
// Parallel Convert Floating-point to Integer
static INLINE void
_fpcvt_fx(EM_state_type *ps,
EM_opcode_sf_type sf,
EM_uint_t qp,
EM_uint_t f1,
EM_uint_t f2);
#endif
#undef GETSTATE_F1
#undef PUTSTATE_F1
#undef GETSTATE_F4
#undef PUTSTATE_F4
#undef GETSTATE_F6
#undef PUTSTATE_F6
#undef GETSTATE_F7
#undef PUTSTATE_F7
#undef GETSTATE_F8
#undef PUTSTATE_F8
#undef GETSTATE_F10
#undef PUTSTATE_F10
#define GETSTATE_F1(qp,f1,f3,f4,f2) _GETSTATE_F1(ps, qp,f1,f3,f4,f2)
#define PUTSTATE_F1(f1) _PUTSTATE_F1(ps, f1)
#define GETSTATE_F4(qp,p1,p2,f2,f3) _GETSTATE_F4(ps, qp,p1,p2,f2,f3)
#define PUTSTATE_F4(p1,p2) _PUTSTATE_F4(ps, p1,p2)
#define GETSTATE_F6(qp,f1,p2,f2,f3) _GETSTATE_F6(ps,qp,f1,p2,f2,f3)
#define PUTSTATE_F6(f1,p2) _PUTSTATE_F6(ps,f1,p2)
#define GETSTATE_F7(qp,f1,p2,f3) _GETSTATE_F7(ps, qp,f1,p2,f3)
#define PUTSTATE_F7(f1,p2) _PUTSTATE_F7(ps, f1,p2)
#define GETSTATE_F8(qp,f1,f2,f3) _GETSTATE_F8(ps, qp,f1,f2,f3)
#define PUTSTATE_F8(f1) _PUTSTATE_F8(ps, f1)
#define GETSTATE_F10(qp,f1,f2) _GETSTATE_F10(ps, qp,f1,f2)
#define PUTSTATE_F10(f1) _PUTSTATE_F10(ps, f1)
/***********************************************************
undefs
************************************************************/
#undef fp_reg_disabled
#undef fp_reg_read_hi
#undef fp_reg_read_lo
#undef fp_ieee_rnd_to_int
#undef fp_ieee_rnd_to_int_sp
#undef fp_ieee_round_sp
#undef fp_ieee_round
#undef fminmax_exception_fault_check
#undef fpminmax_exception_fault_check
#undef fcmp_exception_fault_check
#undef fpcmp_exception_fault_check
#undef fcvt_exception_fault_check
#undef fpcvt_exception_fault_check
#undef fma_exception_fault_check
#undef fpma_exception_fault_check
#undef fms_fnma_exception_fault_check
#undef fpms_fpnma_exception_fault_check
#undef frcpa_exception_fault_check
#undef fprcpa_exception_fault_check
#undef frsqrta_exception_fault_check
#undef fprsqrta_exception_fault_check
#undef illegal_operation_fault
#undef fp_check_target_register
#undef fp_exception_fault
#undef fp_exception_trap
#undef disabled_fp_register_fault
#undef fp_update_fpsr
#undef fp_update_psr
/***********************************************************
redefinitions
************************************************************/
#define fp_reg_disabled(f1,f2,f3,f4) fp82_fp_reg_disabled(ps, f1,f2,f3,f4)
#define fp_reg_read_hi(f2) fp82_reg_read_hi(ps,f2)
#define fp_reg_read_lo(f3) fp82_reg_read_lo(ps,f3)
#define fp_ieee_rnd_to_int(arg1,arg2) \
fp82_fp_ieee_rnd_to_int(ps, arg1, arg2)
#define fp_ieee_rnd_to_int_sp(arg1,arg2, arg3) \
fp82_fp_ieee_rnd_to_int_sp(ps, arg1, arg2, arg3)
#define fp_ieee_round_sp(arg1, arg2, arg3) \
fp82_fp_ieee_round_sp(ps, arg1, arg2, arg3)
#define fp_ieee_round(arg1, arg2) \
fp82_fp_ieee_round(ps, arg1, arg2)
#define fminmax_exception_fault_check(arg1, arg2, arg3, arg4) \
fp82_fminmax_exception_fault_check(ps, arg1, arg2, arg3, arg4)
#define fpminmax_exception_fault_check(arg1, arg2, arg3, arg4) \
fp82_fpminmax_exception_fault_check(ps, arg1, arg2, arg3, arg4)
#define fcmp_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fcmp_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define fpcmp_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fpcmp_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define fcvt_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fcvt_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define fpcvt_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fpcvt_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define fma_exception_fault_check(arg1, arg2, arg3, arg4, arg5, arg6) \
fp82_fma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5, arg6)
#define fpma_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fpma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define fms_fnma_exception_fault_check(arg1, arg2, arg3, arg4, arg5, arg6) \
fp82_fms_fnma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5, arg6)
#define fpms_fpnma_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fpms_fpnma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define frcpa_exception_fault_check(arg1, arg2, arg3, arg4) \
fp82_frcpa_exception_fault_check(ps, arg1, arg2, arg3, arg4)
#define fprcpa_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
fp82_fprcpa_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
#define frsqrta_exception_fault_check(arg1, arg2, arg3) \
fp82_frsqrta_exception_fault_check(ps, arg1, arg2, arg3)
#define fprsqrta_exception_fault_check(arg1, arg2, arg3, arg4) \
fp82_fprsqrta_exception_fault_check(ps, arg1, arg2, arg3, arg4)
#define illegal_operation_fault( NON_RS) \
fp82_illegal_operation_fault(ps, NON_RS)
#define fp_check_target_register( reg_specifier) \
fp82_fp_check_target_register(ps, reg_specifier)
#define fp_exception_fault( tmp) \
fp82_fp_exception_fault(ps, tmp)
#define fp_exception_trap( tmp) \
fp82_fp_exception_trap(ps, tmp)
#define disabled_fp_register_fault(isr_code, itype) \
fp82_disabled_fp_register_fault(ps, isr_code, itype)
#define fp_update_fpsr(sf, tmp_env) fp82_fp_update_fpsr(ps,sf, tmp_env)
#define fp_update_psr(dest_freg) fp82_fp_update_psr(ps,dest_freg)