This page refers to the changes made in the 3.0.10 release of M-sim.
ld_load_prog (loader.[ch]) took a parameter for the size of the argument array (argv). Since argv is an std::vector, this isn't needed. ld_load_prog no longer takes argc as a parameter.
This also indicates that sim_load_prog (sim-outorder.c, main.c, sim.h) no longer need to take argc as a parameter.
The floating point fixes made in this version result in the following:
- Eon's output is different but still within acceptable parameters (all the outputs look like chairs of the appropriate brightness and detail)
- Swim's output is still different but within much closer range than previous releases
- Vpr not runs and generates acceptable output
The following benchmarks still have issues running under M-sim
- Sixtrack - this may not be significant but we have not done a full comparison of the output against the expected output
- Facerec - the output is very different. It may be technically correct but we aren't sure at this point.
The macro, FIX_DOUBLE attempts to correct the precision issues at hand. In some places, the code was rewritten slightly.
In machine.def, the following instructions were changed:
ITOFS CVTQS CVTQT CVTQL
In machine.def, the following instructions were changed to handle precision issues:
SQRTS ADDS SUBS MULS DIVS CVTQS
CVTST is missing from machine.def. Is this a problem?
The following instructions are not in the Version 4 Alpha Handbook but are in machine.def
ADDLV, ADDLVI SUBLV, SUBLVI ADDQV, ADDQVI SUBQV, SUBQVI