diff --git a/sh4/ADDV Rm,Rn b/sh4/ADDV Rm,Rn index 006385b..afac48b 100644 --- a/sh4/ADDV Rm,Rn +++ b/sh4/ADDV Rm,Rn @@ -2,6 +2,6 @@ op1 ← SignExtend32(Rm); op2 ← SignExtend32(Rn); op2 ← op2 + op1; -t ← INT ((op2 < (- 231)) OR (op2 ≥ 231)); +t ← INT ((op2 < (- (1 << 31))) OR (op2 ≥ (1 << 31))); Rn ← Register(op2); T ← Bit(t); diff --git a/sh4/MAC.L @Rm+,@Rn+ b/sh4/MAC.L @Rm+,@Rn+ index 3b3b4a0..6677f92 100644 --- a/sh4/MAC.L @Rm+,@Rn+ +++ b/sh4/MAC.L @Rm+,@Rn+ @@ -21,9 +21,10 @@ result ← mac + mul; IF (s = 1) IF (((result ⊕ mac) ∧ (result ⊕ mul))< 63 FOR 1 > = 1) IF (mac< 63 FOR 1 > = 0) -result ← 247 - 1; +result ← (1 << 47) - 1; +ELSE +result ← - (1 << 47); ELSE -ELSEresult ← - 247; result ← SignedSaturate48(result); macl ← result; mach ← result >> 32; diff --git a/sh4/SUBV Rm,Rn b/sh4/SUBV Rm,Rn index 3add34c..bcf5083 100644 --- a/sh4/SUBV Rm,Rn +++ b/sh4/SUBV Rm,Rn @@ -2,6 +2,6 @@ op1 ← SignExtend32(Rm); op2 ← SignExtend32(Rn); op2 ← op2 - op1; -t ← INT ((op2 < (- 231)) OR (op2 ≥ 231)); +t ← INT ((op2 < (- (1 << 31))) OR (op2 ≥ (1 << 31))); Rn ← Register(op2); T ← Bit(t);