3b2: Fix critical MAU issues

- A bug in the Square Root implementation could lead to
  an infinite loop.

- Incorrect rounding was used when MAU destination register
  was single or double word.

- Fix Coverity-discovered issues.
This commit is contained in:
Seth Morabito 2019-07-19 16:33:23 -07:00
parent c1d9db8be7
commit 292898e9f4
2 changed files with 382 additions and 266 deletions

File diff suppressed because it is too large Load diff

View file

@ -282,6 +282,14 @@ typedef enum {
M_OP_NONE
} op_spec;
/*
* 128-bit value
*/
typedef struct {
t_uint64 low;
t_uint64 high;
} t_mau_128;
/*
* Not-a-Number Type
*/
@ -289,7 +297,7 @@ typedef struct {
t_bool sign;
t_uint64 high;
t_uint64 low;
} NAN_T;
} T_NAN;
/*
* Extended Precision (80 bits).