?? math.c
字號:
FP_DECL_D(DA); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, val); FP_CONV (Q, D, 4, 2, QR, DA); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; return _fex;}/* Load lengthened float to long double */static int emu_lxebr (struct pt_regs *regs, int rx, int ry) { FP_DECL_S(SA); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[ry].f); FP_CONV (Q, S, 4, 1, QR, SA); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; return _fex;}/* Load lengthened float to long double */static int emu_lxeb (struct pt_regs *regs, int rx, float *val) { FP_DECL_S(SA); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, val); FP_CONV (Q, S, 4, 1, QR, SA); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; return _fex;}/* Load lengthened float to double */static int emu_ldebr (struct pt_regs *regs, int rx, int ry) { FP_DECL_S(SA); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[ry].f); FP_CONV (D, S, 2, 1, DR, SA); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); return _fex;}/* Load lengthened float to double */static int emu_ldeb (struct pt_regs *regs, int rx, float *val) { FP_DECL_S(SA); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, val); FP_CONV (D, S, 2, 1, DR, SA); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); return _fex;}/* Load negative long double */static int emu_lnxbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_Q(QA); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; cvt.w.high = current->thread.fp_regs.fprs[ry].ui; cvt.w.low = current->thread.fp_regs.fprs[ry+2].ui; FP_UNPACK_QP(QA, &cvt.ld); if (QA_s == 0) { FP_NEG_Q(QR, QA); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; } else { current->thread.fp_regs.fprs[rx].ui = current->thread.fp_regs.fprs[ry].ui; current->thread.fp_regs.fprs[rx+2].ui = current->thread.fp_regs.fprs[ry+2].ui; } emu_set_CC_cs(regs, QR_c, QR_s); return _fex;}/* Load negative double */static int emu_lndbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_D(DA); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[ry].d); if (DA_s == 0) { FP_NEG_D(DR, DA); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); } else current->thread.fp_regs.fprs[rx].ui = current->thread.fp_regs.fprs[ry].ui; emu_set_CC_cs(regs, DR_c, DR_s); return _fex;}/* Load negative float */static int emu_lnebr (struct pt_regs *regs, int rx, int ry) { FP_DECL_S(SA); FP_DECL_S(SR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[ry].f); if (SA_s == 0) { FP_NEG_S(SR, SA); FP_PACK_SP(¤t->thread.fp_regs.fprs[rx].f, SR); } else current->thread.fp_regs.fprs[rx].ui = current->thread.fp_regs.fprs[ry].ui; emu_set_CC_cs(regs, SR_c, SR_s); return _fex;}/* Load positive long double */static int emu_lpxbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_Q(QA); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; cvt.w.high = current->thread.fp_regs.fprs[ry].ui; cvt.w.low = current->thread.fp_regs.fprs[ry+2].ui; FP_UNPACK_QP(QA, &cvt.ld); if (QA_s != 0) { FP_NEG_Q(QR, QA); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; } else{ current->thread.fp_regs.fprs[rx].ui = current->thread.fp_regs.fprs[ry].ui; current->thread.fp_regs.fprs[rx+2].ui = current->thread.fp_regs.fprs[ry+2].ui; } emu_set_CC_cs(regs, QR_c, QR_s); return _fex;}/* Load positive double */static int emu_lpdbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_D(DA); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[ry].d); if (DA_s != 0) { FP_NEG_D(DR, DA); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); } else current->thread.fp_regs.fprs[rx].ui = current->thread.fp_regs.fprs[ry].ui; emu_set_CC_cs(regs, DR_c, DR_s); return _fex;}/* Load positive float */static int emu_lpebr (struct pt_regs *regs, int rx, int ry) { FP_DECL_S(SA); FP_DECL_S(SR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[ry].f); if (SA_s != 0) { FP_NEG_S(SR, SA); FP_PACK_SP(¤t->thread.fp_regs.fprs[rx].f, SR); } else current->thread.fp_regs.fprs[rx].ui = current->thread.fp_regs.fprs[ry].ui; emu_set_CC_cs(regs, SR_c, SR_s); return _fex;}/* Load rounded long double to double */static int emu_ldxbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_Q(QA); FP_DECL_D(DR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; cvt.w.high = current->thread.fp_regs.fprs[ry].ui; cvt.w.low = current->thread.fp_regs.fprs[ry+2].ui; FP_UNPACK_QP(QA, &cvt.ld); FP_CONV (D, Q, 2, 4, DR, QA); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].f, DR); return _fex;}/* Load rounded long double to float */static int emu_lexbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_Q(QA); FP_DECL_S(SR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; cvt.w.high = current->thread.fp_regs.fprs[ry].ui; cvt.w.low = current->thread.fp_regs.fprs[ry+2].ui; FP_UNPACK_QP(QA, &cvt.ld); FP_CONV (S, Q, 1, 4, SR, QA); FP_PACK_SP(¤t->thread.fp_regs.fprs[rx].f, SR); return _fex;}/* Load rounded double to float */static int emu_ledbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_D(DA); FP_DECL_S(SR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[ry].d); FP_CONV (S, D, 1, 2, SR, DA); FP_PACK_SP(¤t->thread.fp_regs.fprs[rx].f, SR); return _fex;}/* Multiply long double */static int emu_mxbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_Q(QA); FP_DECL_Q(QB); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; cvt.w.high = current->thread.fp_regs.fprs[rx].ui; cvt.w.low = current->thread.fp_regs.fprs[rx+2].ui; FP_UNPACK_QP(QA, &cvt.ld); cvt.w.high = current->thread.fp_regs.fprs[ry].ui; cvt.w.low = current->thread.fp_regs.fprs[ry+2].ui; FP_UNPACK_QP(QB, &cvt.ld); FP_MUL_Q(QR, QA, QB); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; return _fex;}/* Multiply double */static int emu_mdbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_D(DA); FP_DECL_D(DB); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[rx].d); FP_UNPACK_DP(DB, ¤t->thread.fp_regs.fprs[ry].d); FP_MUL_D(DR, DA, DB); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); return _fex;}/* Multiply double */static int emu_mdb (struct pt_regs *regs, int rx, double *val) { FP_DECL_D(DA); FP_DECL_D(DB); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[rx].d); FP_UNPACK_DP(DB, val); FP_MUL_D(DR, DA, DB); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); return _fex;}/* Multiply double to long double */static int emu_mxdbr (struct pt_regs *regs, int rx, int ry) { FP_DECL_D(DA); FP_DECL_Q(QA); FP_DECL_Q(QB); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[rx].d); FP_CONV (Q, D, 4, 2, QA, DA); FP_UNPACK_DP(DA, ¤t->thread.fp_regs.fprs[ry].d); FP_CONV (Q, D, 4, 2, QB, DA); FP_MUL_Q(QR, QA, QB); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; return _fex;}/* Multiply double to long double */static int emu_mxdb (struct pt_regs *regs, int rx, long double *val) { FP_DECL_Q(QA); FP_DECL_Q(QB); FP_DECL_Q(QR); FP_DECL_EX; mathemu_ldcv cvt; int mode; mode = current->thread.fp_regs.fpc & 3; cvt.w.high = current->thread.fp_regs.fprs[rx].ui; cvt.w.low = current->thread.fp_regs.fprs[rx+2].ui; FP_UNPACK_QP(QA, &cvt.ld); FP_UNPACK_QP(QB, val); FP_MUL_Q(QR, QA, QB); FP_PACK_QP(&cvt.ld, QR); current->thread.fp_regs.fprs[rx].ui = cvt.w.high; current->thread.fp_regs.fprs[rx+2].ui = cvt.w.low; return _fex;}/* Multiply float */static int emu_meebr (struct pt_regs *regs, int rx, int ry) { FP_DECL_S(SA); FP_DECL_S(SB); FP_DECL_S(SR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[rx].f); FP_UNPACK_SP(SB, ¤t->thread.fp_regs.fprs[ry].f); FP_MUL_S(SR, SA, SB); FP_PACK_SP(¤t->thread.fp_regs.fprs[rx].f, SR); return _fex;}/* Multiply float */static int emu_meeb (struct pt_regs *regs, int rx, float *val) { FP_DECL_S(SA); FP_DECL_S(SB); FP_DECL_S(SR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[rx].f); FP_UNPACK_SP(SB, val); FP_MUL_S(SR, SA, SB); FP_PACK_SP(¤t->thread.fp_regs.fprs[rx].f, SR); return _fex;}/* Multiply float to double */static int emu_mdebr (struct pt_regs *regs, int rx, int ry) { FP_DECL_S(SA); FP_DECL_D(DA); FP_DECL_D(DB); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[rx].f); FP_CONV (D, S, 2, 1, DA, SA); FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[ry].f); FP_CONV (D, S, 2, 1, DB, SA); FP_MUL_D(DR, DA, DB); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); return _fex;}/* Multiply float to double */static int emu_mdeb (struct pt_regs *regs, int rx, float *val) { FP_DECL_S(SA); FP_DECL_D(DA); FP_DECL_D(DB); FP_DECL_D(DR); FP_DECL_EX; int mode; mode = current->thread.fp_regs.fpc & 3; FP_UNPACK_SP(SA, ¤t->thread.fp_regs.fprs[rx].f); FP_CONV (D, S, 2, 1, DA, SA); FP_UNPACK_SP(SA, val); FP_CONV (D, S, 2, 1, DB, SA); FP_MUL_D(DR, DA, DB); FP_PACK_DP(¤t->thread.fp_regs.fprs[rx].d, DR); return _fex;}/* Multiply and add double */static int emu_madbr (struct pt_regs *regs, int rx, int ry, int rz) { FP_DECL_D(DA); FP_DECL_D(DB); FP_DECL_D(DC); FP_DECL_D(DR); FP_DECL_EX; int mode;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -