test: feinstr.h Source File

Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

# feinstr.h

Go to the documentation of this file.

    00001 // ******************************
    00002 // Intel Confidential
    00003 // ******************************
    00004
    00005 #ifndef _EM_INSTR_H
    00006 #define _EM_INSTR_H
    00007
    00008 #include "fepublic.h"
    00009
    00010 static EM_fp_reg_type
    00011 fp_ieee_recip(
    00012     EM_fp_reg_type den);
    00013
    00014 static EM_fp_reg_type
    00015 fp_ieee_recip_sqrt(
    00016     EM_fp_reg_type root);
    00017
    00018 // ********************************
    00019 // Instruction Pages Prototypes
    00020 // ********************************
    00021
    00022 // Floating-point Multiply Add
    00023 static INLINE void
    00024 _fma(EM_state_type *ps,
    00025     EM_opcode_pc_type pc,
    00026     EM_opcode_sf_type sf,
    00027     EM_uint_t qp,
    00028     EM_uint_t f1,
    00029     EM_uint_t f3,
    00030     EM_uint_t f4,
    00031     EM_uint_t f2);
    00032
    00033 // Floating-point Parallel Multiply Add
    00034 static INLINE void
    00035 _fpma(EM_state_type *ps,
    00036     EM_opcode_sf_type sf,
    00037     EM_uint_t qp,
    00038     EM_uint_t f1,
    00039     EM_uint_t f3,
    00040     EM_uint_t f4,
    00041     EM_uint_t f2);
    00042
    00043 // Floating-point Multiply Subtract
    00044 static INLINE void
    00045 _fms(EM_state_type *ps,
    00046     EM_opcode_pc_type pc,
    00047     EM_opcode_sf_type sf,
    00048     EM_uint_t qp,
    00049     EM_uint_t f1,
    00050     EM_uint_t f3,
    00051     EM_uint_t f4,
    00052     EM_uint_t f2);
    00053
    00054 // Floating-point Parallel Multiply Subtract
    00055 static INLINE void
    00056 _fpms(EM_state_type *ps,
    00057     EM_opcode_sf_type sf,
    00058     EM_uint_t qp,
    00059     EM_uint_t f1,
    00060     EM_uint_t f3,
    00061     EM_uint_t f4,
    00062     EM_uint_t f2);
    00063
    00064 // Floating-point Negative Multiply Add
    00065 static INLINE void
    00066 _fnma(EM_state_type *ps,
    00067     EM_opcode_pc_type pc,
    00068     EM_opcode_sf_type sf,
    00069     EM_uint_t qp,
    00070     EM_uint_t f1,
    00071     EM_uint_t f3,
    00072     EM_uint_t f4,
    00073     EM_uint_t f2);
    00074
    00075
    00076 // Floating-point Parallel Negative Multiply Add
    00077 static INLINE void
    00078 _fpnma(EM_state_type *ps,
    00079     EM_opcode_sf_type sf,
    00080     EM_uint_t qp,
    00081     EM_uint_t f1,
    00082     EM_uint_t f3,
    00083     EM_uint_t f4,
    00084     EM_uint_t f2);
    00085
    00086
    00087 // Floating-point Compare
    00088 static INLINE void
    00089 _fcmp(EM_state_type *ps,
    00090     EM_opcode_frel_type frel,
    00091     EM_opcode_ctype_type ctype,
    00092     EM_opcode_sf_type sf,
    00093     EM_uint_t qp,
    00094     EM_uint_t p1,
    00095     EM_uint_t p2,
    00096     EM_uint_t f2,
    00097     EM_uint_t f3);
    00098
    00099 // Floating-point Reciprocal Approximation
    00100 static INLINE void
    00101 _frcpa(EM_state_type *ps,
    00102     EM_opcode_sf_type sf,
    00103     EM_uint_t qp,
    00104     EM_uint_t f1,
    00105     EM_uint_t p2,
    00106     EM_uint_t f2,
    00107     EM_uint_t f3);
    00108
    00109 // Floating-point Parallel Reciprocal Approximation
    00110 static INLINE void
    00111 _fprcpa(EM_state_type *ps,
    00112     EM_opcode_sf_type sf,
    00113     EM_uint_t qp,
    00114     EM_uint_t f1,
    00115     EM_uint_t p2,
    00116     EM_uint_t f2,
    00117     EM_uint_t f3);
    00118
    00119 // Floating-point Reciprocal Square Root Approximation
    00120 static INLINE void
    00121 _frsqrta(EM_state_type *ps,
    00122     EM_opcode_sf_type sf,
    00123     EM_uint_t qp,
    00124     EM_uint_t f1,
    00125     EM_uint_t p2,
    00126     EM_uint_t f3);
    00127
    00128 // Floating-point Parallel Reciprocal Square Root Approximation
    00129 static INLINE void
    00130 _fprsqrta(EM_state_type *ps,
    00131     EM_opcode_sf_type sf,
    00132     EM_uint_t qp,
    00133     EM_uint_t f1,
    00134     EM_uint_t p2,
    00135     EM_uint_t f3);
    00136
    00137 // Floating-point Minimum
    00138 static INLINE void
    00139 _fmin(EM_state_type *ps,
    00140     EM_opcode_sf_type sf,
    00141     EM_uint_t qp,
    00142     EM_uint_t f1,
    00143     EM_uint_t f2,
    00144     EM_uint_t f3);
    00145
    00146 static INLINE void
    00147 _fmax(EM_state_type *ps,
    00148     EM_opcode_sf_type sf,
    00149     EM_uint_t qp,
    00150     EM_uint_t f1,
    00151     EM_uint_t f2,
    00152     EM_uint_t f3);
    00153
    00154 // Floating-point Absolute Minimum
    00155 static INLINE void
    00156 _famin(EM_state_type *ps,
    00157     EM_opcode_sf_type sf,
    00158     EM_uint_t qp,
    00159     EM_uint_t f1,
    00160     EM_uint_t f2,
    00161     EM_uint_t f3);
    00162
    00163 // Floating-point Absolute Maximum
    00164 static INLINE void
    00165 _famax(EM_state_type *ps,
    00166     EM_opcode_sf_type sf,
    00167     EM_uint_t qp,
    00168     EM_uint_t f1,
    00169     EM_uint_t f2,
    00170     EM_uint_t f3);
    00171
    00172 // Floating-point Parallel Minimum
    00173 static INLINE void
    00174 _fpmin(EM_state_type *ps,
    00175     EM_opcode_sf_type sf,
    00176     EM_uint_t qp,
    00177     EM_uint_t f1,
    00178     EM_uint_t f2,
    00179     EM_uint_t f3);
    00180
    00181 // Floating-point Parallel Minimum
    00182 static INLINE void
    00183 _fpmax(EM_state_type *ps,
    00184     EM_opcode_sf_type sf,
    00185     EM_uint_t qp,
    00186     EM_uint_t f1,
    00187     EM_uint_t f2,
    00188     EM_uint_t f3);
    00189
    00190
    00191 // Floating-point Parallel Absolute Minimum
    00192 static INLINE void
    00193 _fpamin(EM_state_type *ps,
    00194     EM_opcode_sf_type sf,
    00195     EM_uint_t qp,
    00196     EM_uint_t f1,
    00197     EM_uint_t f2,
    00198     EM_uint_t f3);
    00199
    00200 // Floating-point Parallel Absolute Maximum
    00201 static INLINE void
    00202 _fpamax(EM_state_type *ps,
    00203     EM_opcode_sf_type sf,
    00204     EM_uint_t qp,
    00205     EM_uint_t f1,
    00206     EM_uint_t f2,
    00207     EM_uint_t f3);
    00208
    00209 // Floating-point Parallel Compare
    00210 static INLINE void
    00211 _fpcmp(EM_state_type *ps,
    00212     EM_opcode_frel_type frel,
    00213     EM_opcode_sf_type sf,
    00214     EM_uint_t qp,
    00215     EM_uint_t f1,
    00216     EM_uint_t f2,
    00217     EM_uint_t f3);
    00218
    00219 // Convert Floating-point to Integer
    00220 static INLINE void
    00221 _fcvt_fx(EM_state_type *ps,
    00222     EM_opcode_sf_type sf,
    00223     EM_uint_t qp,
    00224     EM_uint_t f1,
    00225     EM_uint_t f2);
    00226
    00227 // Parallel Convert Floating-point to Integer
    00228 static INLINE void
    00229 _fpcvt_fx(EM_state_type *ps,
    00230     EM_opcode_sf_type sf,
    00231     EM_uint_t qp,
    00232     EM_uint_t f1,
    00233     EM_uint_t f2);
    00234
    00235 #endif
    00236
    00237 #undef GETSTATE_F1
    00238 #undef PUTSTATE_F1
    00239
    00240 #undef GETSTATE_F4
    00241 #undef PUTSTATE_F4
    00242
    00243 #undef GETSTATE_F6
    00244 #undef PUTSTATE_F6
    00245
    00246 #undef GETSTATE_F7
    00247 #undef PUTSTATE_F7
    00248
    00249 #undef GETSTATE_F8
    00250 #undef PUTSTATE_F8
    00251
    00252 #undef GETSTATE_F10
    00253 #undef PUTSTATE_F10
    00254
    00255 #define GETSTATE_F1(qp,f1,f3,f4,f2)        _GETSTATE_F1(ps, qp,f1,f3,f4,f2)
    00256 #define PUTSTATE_F1(f1)                    _PUTSTATE_F1(ps, f1)
    00257
    00258 #define GETSTATE_F4(qp,p1,p2,f2,f3)         _GETSTATE_F4(ps, qp,p1,p2,f2,f3)
    00259 #define PUTSTATE_F4(p1,p2)                  _PUTSTATE_F4(ps, p1,p2)
    00260
    00261 #define GETSTATE_F6(qp,f1,p2,f2,f3)         _GETSTATE_F6(ps,qp,f1,p2,f2,f3)
    00262 #define PUTSTATE_F6(f1,p2)                  _PUTSTATE_F6(ps,f1,p2)
    00263
    00264 #define GETSTATE_F7(qp,f1,p2,f3)            _GETSTATE_F7(ps, qp,f1,p2,f3)
    00265 #define PUTSTATE_F7(f1,p2)                  _PUTSTATE_F7(ps, f1,p2)
    00266
    00267 #define GETSTATE_F8(qp,f1,f2,f3)           _GETSTATE_F8(ps, qp,f1,f2,f3)
    00268 #define PUTSTATE_F8(f1)                    _PUTSTATE_F8(ps, f1)
    00269
    00270 #define GETSTATE_F10(qp,f1,f2)             _GETSTATE_F10(ps, qp,f1,f2)
    00271 #define PUTSTATE_F10(f1)                   _PUTSTATE_F10(ps, f1)
    00272
    00273 /***********************************************************
    00274 undefs
    00275 ************************************************************/
    00276
    00277 #undef fp_reg_disabled
    00278 #undef fp_reg_read_hi
    00279 #undef fp_reg_read_lo
    00280 #undef fp_ieee_rnd_to_int
    00281 #undef fp_ieee_rnd_to_int_sp
    00282 #undef fp_ieee_round_sp
    00283 #undef fp_ieee_round
    00284
    00285 #undef fminmax_exception_fault_check
    00286 #undef fpminmax_exception_fault_check
    00287 #undef fcmp_exception_fault_check
    00288 #undef fpcmp_exception_fault_check
    00289
    00290 #undef fcvt_exception_fault_check
    00291 #undef fpcvt_exception_fault_check
    00292
    00293 #undef fma_exception_fault_check
    00294 #undef fpma_exception_fault_check
    00295 #undef fms_fnma_exception_fault_check
    00296 #undef fpms_fpnma_exception_fault_check
    00297
    00298 #undef frcpa_exception_fault_check
    00299 #undef fprcpa_exception_fault_check
    00300 #undef frsqrta_exception_fault_check
    00301 #undef fprsqrta_exception_fault_check
    00302
    00303 #undef illegal_operation_fault
    00304 #undef fp_check_target_register
    00305
    00306 #undef fp_exception_fault
    00307 #undef fp_exception_trap
    00308
    00309 #undef disabled_fp_register_fault
    00310
    00311 #undef fp_update_fpsr
    00312 #undef fp_update_psr
    00313
    00314 /***********************************************************
    00315 redefinitions
    00316 ************************************************************/
    00317 #define fp_reg_disabled(f1,f2,f3,f4)         fp82_fp_reg_disabled(ps, f1,f2,f3,f4)
    00318
    00319
    00320 #define fp_reg_read_hi(f2)            fp82_reg_read_hi(ps,f2)
    00321 #define fp_reg_read_lo(f3)            fp82_reg_read_lo(ps,f3)
    00322
    00323 #define fp_ieee_rnd_to_int(arg1,arg2) \
    00324         fp82_fp_ieee_rnd_to_int(ps, arg1, arg2)
    00325 #define fp_ieee_rnd_to_int_sp(arg1,arg2, arg3) \
    00326         fp82_fp_ieee_rnd_to_int_sp(ps, arg1, arg2, arg3)
    00327
    00328
    00329 #define fp_ieee_round_sp(arg1, arg2, arg3) \
    00330         fp82_fp_ieee_round_sp(ps, arg1, arg2, arg3)
    00331 #define fp_ieee_round(arg1, arg2) \
    00332         fp82_fp_ieee_round(ps, arg1, arg2)
    00333
    00334 #define fminmax_exception_fault_check(arg1, arg2, arg3, arg4) \
    00335         fp82_fminmax_exception_fault_check(ps, arg1, arg2, arg3, arg4)
    00336 #define fpminmax_exception_fault_check(arg1, arg2, arg3, arg4) \
    00337         fp82_fpminmax_exception_fault_check(ps, arg1, arg2, arg3, arg4)
    00338
    00339 #define fcmp_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00340         fp82_fcmp_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00341 #define fpcmp_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00342         fp82_fpcmp_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00343
    00344 #define fcvt_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00345         fp82_fcvt_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00346 #define fpcvt_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00347         fp82_fpcvt_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00348
    00349 #define fma_exception_fault_check(arg1, arg2, arg3, arg4, arg5, arg6) \
    00350         fp82_fma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5, arg6)
    00351 #define fpma_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00352         fp82_fpma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00353
    00354 #define fms_fnma_exception_fault_check(arg1, arg2, arg3, arg4, arg5, arg6) \
    00355         fp82_fms_fnma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5, arg6)
    00356
    00357 #define fpms_fpnma_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00358         fp82_fpms_fpnma_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00359
    00360 #define frcpa_exception_fault_check(arg1, arg2, arg3, arg4) \
    00361         fp82_frcpa_exception_fault_check(ps, arg1, arg2, arg3, arg4)
    00362
    00363 #define fprcpa_exception_fault_check(arg1, arg2, arg3, arg4, arg5) \
    00364         fp82_fprcpa_exception_fault_check(ps, arg1, arg2, arg3, arg4, arg5)
    00365
    00366 #define frsqrta_exception_fault_check(arg1, arg2, arg3) \
    00367         fp82_frsqrta_exception_fault_check(ps, arg1, arg2, arg3)
    00368
    00369 #define fprsqrta_exception_fault_check(arg1, arg2, arg3, arg4) \
    00370         fp82_fprsqrta_exception_fault_check(ps, arg1, arg2, arg3, arg4)
    00371
    00372 #define illegal_operation_fault( NON_RS) \
    00373         fp82_illegal_operation_fault(ps, NON_RS)
    00374
    00375 #define fp_check_target_register( reg_specifier) \
    00376         fp82_fp_check_target_register(ps, reg_specifier)
    00377
    00378 #define fp_exception_fault( tmp) \
    00379         fp82_fp_exception_fault(ps, tmp)
    00380
    00381 #define fp_exception_trap( tmp) \
    00382         fp82_fp_exception_trap(ps, tmp)
    00383
    00384 #define disabled_fp_register_fault(isr_code, itype) \
    00385         fp82_disabled_fp_register_fault(ps, isr_code, itype)
    00386
    00387 #define fp_update_fpsr(sf, tmp_env)    fp82_fp_update_fpsr(ps,sf, tmp_env)
    00388 #define fp_update_psr(dest_freg)       fp82_fp_update_psr(ps,dest_freg)
    00389
    00390