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

Generated on Sat May 15 19:39:59 2004 for test by doxygen 1.3.7