Blame view
arch/x86/math-emu/fpu_arith.c
2.94 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/*---------------------------------------------------------------------------+ | fpu_arith.c | | | | Code to implement the FPU register/register arithmetic instructions | | | | Copyright (C) 1992,1993,1997 | | W. Metzenthen, 22 Parker St, Ormond, Vic 3163, Australia | | E-mail billm@suburbia.net | | | | | +---------------------------------------------------------------------------*/ #include "fpu_system.h" #include "fpu_emu.h" #include "control_w.h" #include "status_w.h" |
1da177e4c Linux-2.6.12-rc2 |
17 18 |
void fadd__(void) { |
3d0d14f98 x86: lindent arch... |
19 20 21 22 |
/* fadd st,st(i) */ int i = FPU_rm; clear_C1(); FPU_add(&st(i), FPU_gettagi(i), 0, control_word); |
1da177e4c Linux-2.6.12-rc2 |
23 |
} |
1da177e4c Linux-2.6.12-rc2 |
24 25 |
void fmul__(void) { |
3d0d14f98 x86: lindent arch... |
26 27 28 29 |
/* fmul st,st(i) */ int i = FPU_rm; clear_C1(); FPU_mul(&st(i), FPU_gettagi(i), 0, control_word); |
1da177e4c Linux-2.6.12-rc2 |
30 |
} |
1da177e4c Linux-2.6.12-rc2 |
31 32 |
void fsub__(void) { |
3d0d14f98 x86: lindent arch... |
33 34 35 |
/* fsub st,st(i) */ clear_C1(); FPU_sub(0, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
36 |
} |
1da177e4c Linux-2.6.12-rc2 |
37 38 |
void fsubr_(void) { |
3d0d14f98 x86: lindent arch... |
39 40 41 |
/* fsubr st,st(i) */ clear_C1(); FPU_sub(REV, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
42 |
} |
1da177e4c Linux-2.6.12-rc2 |
43 44 |
void fdiv__(void) { |
3d0d14f98 x86: lindent arch... |
45 46 47 |
/* fdiv st,st(i) */ clear_C1(); FPU_div(0, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
48 |
} |
1da177e4c Linux-2.6.12-rc2 |
49 50 |
void fdivr_(void) { |
3d0d14f98 x86: lindent arch... |
51 52 53 |
/* fdivr st,st(i) */ clear_C1(); FPU_div(REV, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
54 |
} |
1da177e4c Linux-2.6.12-rc2 |
55 56 |
void fadd_i(void) { |
3d0d14f98 x86: lindent arch... |
57 58 59 60 |
/* fadd st(i),st */ int i = FPU_rm; clear_C1(); FPU_add(&st(i), FPU_gettagi(i), i, control_word); |
1da177e4c Linux-2.6.12-rc2 |
61 |
} |
1da177e4c Linux-2.6.12-rc2 |
62 63 |
void fmul_i(void) { |
3d0d14f98 x86: lindent arch... |
64 65 66 |
/* fmul st(i),st */ clear_C1(); FPU_mul(&st(0), FPU_gettag0(), FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
67 |
} |
1da177e4c Linux-2.6.12-rc2 |
68 69 |
void fsubri(void) { |
3d0d14f98 x86: lindent arch... |
70 71 72 |
/* fsubr st(i),st */ clear_C1(); FPU_sub(DEST_RM, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
73 |
} |
1da177e4c Linux-2.6.12-rc2 |
74 75 |
void fsub_i(void) { |
3d0d14f98 x86: lindent arch... |
76 77 78 |
/* fsub st(i),st */ clear_C1(); FPU_sub(REV | DEST_RM, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
79 |
} |
1da177e4c Linux-2.6.12-rc2 |
80 81 |
void fdivri(void) { |
3d0d14f98 x86: lindent arch... |
82 83 84 |
/* fdivr st(i),st */ clear_C1(); FPU_div(DEST_RM, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
85 |
} |
1da177e4c Linux-2.6.12-rc2 |
86 87 |
void fdiv_i(void) { |
3d0d14f98 x86: lindent arch... |
88 89 90 |
/* fdiv st(i),st */ clear_C1(); FPU_div(REV | DEST_RM, FPU_rm, control_word); |
1da177e4c Linux-2.6.12-rc2 |
91 |
} |
1da177e4c Linux-2.6.12-rc2 |
92 93 |
void faddp_(void) { |
3d0d14f98 x86: lindent arch... |
94 95 96 97 98 |
/* faddp st(i),st */ int i = FPU_rm; clear_C1(); if (FPU_add(&st(i), FPU_gettagi(i), i, control_word) >= 0) FPU_pop(); |
1da177e4c Linux-2.6.12-rc2 |
99 |
} |
1da177e4c Linux-2.6.12-rc2 |
100 101 |
void fmulp_(void) { |
3d0d14f98 x86: lindent arch... |
102 103 104 105 |
/* fmulp st(i),st */ clear_C1(); if (FPU_mul(&st(0), FPU_gettag0(), FPU_rm, control_word) >= 0) FPU_pop(); |
1da177e4c Linux-2.6.12-rc2 |
106 |
} |
1da177e4c Linux-2.6.12-rc2 |
107 108 |
void fsubrp(void) { |
3d0d14f98 x86: lindent arch... |
109 110 111 112 |
/* fsubrp st(i),st */ clear_C1(); if (FPU_sub(DEST_RM, FPU_rm, control_word) >= 0) FPU_pop(); |
1da177e4c Linux-2.6.12-rc2 |
113 |
} |
1da177e4c Linux-2.6.12-rc2 |
114 115 |
void fsubp_(void) { |
3d0d14f98 x86: lindent arch... |
116 117 118 119 |
/* fsubp st(i),st */ clear_C1(); if (FPU_sub(REV | DEST_RM, FPU_rm, control_word) >= 0) FPU_pop(); |
1da177e4c Linux-2.6.12-rc2 |
120 |
} |
1da177e4c Linux-2.6.12-rc2 |
121 122 |
void fdivrp(void) { |
3d0d14f98 x86: lindent arch... |
123 124 125 126 |
/* fdivrp st(i),st */ clear_C1(); if (FPU_div(DEST_RM, FPU_rm, control_word) >= 0) FPU_pop(); |
1da177e4c Linux-2.6.12-rc2 |
127 |
} |
1da177e4c Linux-2.6.12-rc2 |
128 129 |
void fdivp_(void) { |
3d0d14f98 x86: lindent arch... |
130 131 132 133 |
/* fdivp st(i),st */ clear_C1(); if (FPU_div(REV | DEST_RM, FPU_rm, control_word) >= 0) FPU_pop(); |
1da177e4c Linux-2.6.12-rc2 |
134 |
} |