trunk/src/emu/eminline.h
| r22944 | r22945 | |
| 155 | 155 | #ifndef div_64x32_rem |
| 156 | 156 | INLINE INT32 div_64x32_rem(INT64 a, INT32 b, INT32 *remainder) |
| 157 | 157 | { |
| 158 | | *remainder = a % (INT64)b; |
| 159 | | return a / (INT64)b; |
| 158 | INT32 res = div_64x32(a, b); |
| 159 | *remainder = a - ((INT64)b * res); |
| 160 | return res; |
| 160 | 161 | } |
| 161 | 162 | #endif |
| 162 | 163 | |
| r22944 | r22945 | |
| 170 | 171 | #ifndef divu_64x32_rem |
| 171 | 172 | INLINE UINT32 divu_64x32_rem(UINT64 a, UINT32 b, UINT32 *remainder) |
| 172 | 173 | { |
| 173 | | *remainder = a % (UINT64)b; |
| 174 | | return a / (UINT64)b; |
| 174 | UINT32 res = divu_64x32(a, b); |
| 175 | *remainder = a - ((UINT64)b * res); |
| 176 | return res; |
| 175 | 177 | } |
| 176 | 178 | #endif |
| 177 | 179 | |
| r22944 | r22945 | |
| 212 | 214 | #ifndef mod_64x32 |
| 213 | 215 | INLINE INT32 mod_64x32(INT64 a, INT32 b) |
| 214 | 216 | { |
| 215 | | return a % (INT64)b; |
| 217 | return a - (b * div_64x32(a, b)); |
| 216 | 218 | } |
| 217 | 219 | #endif |
| 218 | 220 | |
| r22944 | r22945 | |
| 225 | 227 | #ifndef modu_64x32 |
| 226 | 228 | INLINE UINT32 modu_64x32(UINT64 a, UINT32 b) |
| 227 | 229 | { |
| 228 | | return a % (UINT64)b; |
| 230 | return a - (b * divu_64x32(a, b)); |
| 229 | 231 | } |
| 230 | 232 | #endif |
| 231 | 233 | |