Commit 5e9ae189f8c5331aff011d91c2f54bd830663975
1 parent
be94c952
target-ppc: keep only the table version for mfrom
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6007 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
4 additions
and
18 deletions
target-ppc/op_helper.c
| ... | ... | @@ -1865,30 +1865,16 @@ void helper_rfsvc (void) |
| 1865 | 1865 | /* 602 specific instructions */ |
| 1866 | 1866 | /* mfrom is the most crazy instruction ever seen, imho ! */ |
| 1867 | 1867 | /* Real implementation uses a ROM table. Do the same */ |
| 1868 | +/* Extremly decomposed: | |
| 1869 | + * -arg / 256 | |
| 1870 | + * return 256 * log10(10 + 1.0) + 0.5 | |
| 1871 | + */ | |
| 1868 | 1872 | #if !defined (CONFIG_USER_ONLY) |
| 1869 | -#define USE_MFROM_ROM_TABLE | |
| 1870 | 1873 | target_ulong helper_602_mfrom (target_ulong arg) |
| 1871 | 1874 | { |
| 1872 | 1875 | if (likely(arg < 602)) { |
| 1873 | -#if defined(USE_MFROM_ROM_TABLE) | |
| 1874 | 1876 | #include "mfrom_table.c" |
| 1875 | 1877 | return mfrom_ROM_table[arg]; |
| 1876 | -#else | |
| 1877 | - double d; | |
| 1878 | - /* Extremly decomposed: | |
| 1879 | - * -arg / 256 | |
| 1880 | - * return 256 * log10(10 + 1.0) + 0.5 | |
| 1881 | - */ | |
| 1882 | - d = arg; | |
| 1883 | - d = float64_div(d, 256, &env->fp_status); | |
| 1884 | - d = float64_chs(d); | |
| 1885 | - d = exp10(d); // XXX: use float emulation function | |
| 1886 | - d = float64_add(d, 1.0, &env->fp_status); | |
| 1887 | - d = log10(d); // XXX: use float emulation function | |
| 1888 | - d = float64_mul(d, 256, &env->fp_status); | |
| 1889 | - d = float64_add(d, 0.5, &env->fp_status); | |
| 1890 | - return float64_round_to_int(d, &env->fp_status); | |
| 1891 | -#endif | |
| 1892 | 1878 | } else { |
| 1893 | 1879 | return 0; |
| 1894 | 1880 | } | ... | ... |