From 42c87ed6c8cac6fc4856228326e5b8a88e41f9f0 Mon Sep 17 00:00:00 2001 From: Couriersud Date: Sat, 22 Nov 2008 11:55:51 +0000 Subject: [PATCH] Reverted case shifts --- src/emu/cpu/adsp2100/2100ops.c | 366 ++++++++++++++++----------------- 1 file changed, 183 insertions(+), 183 deletions(-) diff --git a/src/emu/cpu/adsp2100/2100ops.c b/src/emu/cpu/adsp2100/2100ops.c index 612a0ebf5f4..70603884337 100644 --- a/src/emu/cpu/adsp2100/2100ops.c +++ b/src/emu/cpu/adsp2100/2100ops.c @@ -699,14 +699,14 @@ static void alu_op_ar(adsp2100_state *adsp, int op) INT32 yop = (op >> 11) & 3; INT32 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* Y Clear when y = 0 */ res = ALU_GETYREG_UNSIGNED(adsp, yop); CALC_NZ(res); break; - case 0x01: + case 0x01<<13: /* Y + 1 PASS 1 when y = 0 */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop + 1; @@ -714,7 +714,7 @@ static void alu_op_ar(adsp2100_state *adsp, int op) if (yop == 0x7fff) SET_V; else if (yop == 0xffff) SET_C; break; - case 0x02: + case 0x02<<13: /* X + Y + C */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); @@ -722,19 +722,19 @@ static void alu_op_ar(adsp2100_state *adsp, int op) res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x03: + case 0x03<<13: /* X + Y X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x04: + case 0x04<<13: /* NOT Y */ res = ALU_GETYREG_UNSIGNED(adsp, yop) ^ 0xffff; CALC_NZ(res); break; - case 0x05: + case 0x05<<13: /* -Y */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = -yop; @@ -742,21 +742,21 @@ static void alu_op_ar(adsp2100_state *adsp, int op) if (yop == 0x8000) SET_V; if (yop == 0x0000) SET_C; break; - case 0x06: + case 0x06<<13: /* X - Y + C - 1 X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop - yop + (GET_C >> 3) - 1; CALC_NZVC_SUB(xop, yop, res); break; - case 0x07: + case 0x07<<13: /* X - Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop - yop; CALC_NZVC_SUB(xop, yop, res); break; - case 0x08: + case 0x08<<13: /* Y - 1 PASS -1 when y = 0 */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - 1; @@ -764,47 +764,47 @@ static void alu_op_ar(adsp2100_state *adsp, int op) if (yop == 0x8000) SET_V; else if (yop == 0x0000) SET_C; break; - case 0x09: + case 0x09<<13: /* Y - X -X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - xop; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0a: + case 0x0a<<13: /* Y - X + C - 1 -X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - xop + (GET_C >> 3) - 1; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0b: + case 0x0b<<13: /* NOT X */ res = ALU_GETXREG_UNSIGNED(adsp, xop) ^ 0xffff; CALC_NZ(res); break; - case 0x0c: + case 0x0c<<13: /* X AND Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop & yop; CALC_NZ(res); break; - case 0x0d: + case 0x0d<<13: /* X OR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop | yop; CALC_NZ(res); break; - case 0x0e: + case 0x0e<<13: /* X XOR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop ^ yop; CALC_NZ(res); break; - case 0x0f: + case 0x0f<<13: /* ABS X */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = (xop & 0x8000) ? -xop : xop; @@ -837,100 +837,100 @@ static void alu_op_ar_const(adsp2100_state *adsp, int op) INT32 yop = constants[((op >> 5) & 0x07) | ((op >> 8) & 0x18)]; INT32 res; - switch ((op >> 13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* Y Clear when y = 0 */ res = yop; CALC_NZ(res); break; - case 0x01: + case 0x01<<13: /* Y + 1 PASS 1 when y = 0 */ res = yop + 1; CALC_NZ(res); if (yop == 0x7fff) SET_V; else if (yop == 0xffff) SET_C; break; - case 0x02: + case 0x02<<13: /* X + Y + C */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop += GET_C >> 3; res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x03: + case 0x03<<13: /* X + Y X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x04: + case 0x04<<13: /* NOT Y */ res = yop ^ 0xffff; CALC_NZ(res); break; - case 0x05: + case 0x05<<13: /* -Y */ res = -yop; CALC_NZ(res); if (yop == 0x8000) SET_V; if (yop == 0x0000) SET_C; break; - case 0x06: + case 0x06<<13: /* X - Y + C - 1 X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop - yop + (GET_C >> 3) - 1; CALC_NZVC_SUB(xop, yop, res); break; - case 0x07: + case 0x07<<13: /* X - Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop - yop; CALC_NZVC_SUB(xop, yop, res); break; - case 0x08: + case 0x08<<13: /* Y - 1 PASS -1 when y = 0 */ res = yop - 1; CALC_NZ(res); if (yop == 0x8000) SET_V; else if (yop == 0x0000) SET_C; break; - case 0x09: + case 0x09<<13: /* Y - X -X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = yop - xop; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0a: + case 0x0a<<13: /* Y - X + C - 1 -X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = yop - xop + (GET_C >> 3) - 1; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0b: + case 0x0b<<13: /* NOT X */ res = ALU_GETXREG_UNSIGNED(adsp, xop) ^ 0xffff; CALC_NZ(res); break; - case 0x0c: + case 0x0c<<13: /* X AND Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop & yop; CALC_NZ(res); break; - case 0x0d: + case 0x0d<<13: /* X OR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop | yop; CALC_NZ(res); break; - case 0x0e: + case 0x0e<<13: /* X XOR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop ^ yop; CALC_NZ(res); break; - case 0x0f: + case 0x0f<<13: /* ABS X */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = (xop & 0x8000) ? -xop : xop; @@ -963,14 +963,14 @@ static void alu_op_af(adsp2100_state *adsp, int op) INT32 yop = (op >> 11) & 3; INT32 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* Y Clear when y = 0 */ res = ALU_GETYREG_UNSIGNED(adsp, yop); CALC_NZ(res); break; - case 0x01: + case 0x01<<13: /* Y + 1 PASS 1 when y = 0 */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop + 1; @@ -978,7 +978,7 @@ static void alu_op_af(adsp2100_state *adsp, int op) if (yop == 0x7fff) SET_V; else if (yop == 0xffff) SET_C; break; - case 0x02: + case 0x02<<13: /* X + Y + C */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); @@ -986,19 +986,19 @@ static void alu_op_af(adsp2100_state *adsp, int op) res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x03: + case 0x03<<13: /* X + Y X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x04: + case 0x04<<13: /* NOT Y */ res = ALU_GETYREG_UNSIGNED(adsp, yop) ^ 0xffff; CALC_NZ(res); break; - case 0x05: + case 0x05<<13: /* -Y */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = -yop; @@ -1006,21 +1006,21 @@ static void alu_op_af(adsp2100_state *adsp, int op) if (yop == 0x8000) SET_V; if (yop == 0x0000) SET_C; break; - case 0x06: + case 0x06<<13: /* X - Y + C - 1 X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop - yop + (GET_C >> 3) - 1; CALC_NZVC_SUB(xop, yop, res); break; - case 0x07: + case 0x07<<13: /* X - Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop - yop; CALC_NZVC_SUB(xop, yop, res); break; - case 0x08: + case 0x08<<13: /* Y - 1 PASS -1 when y = 0 */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - 1; @@ -1028,47 +1028,47 @@ static void alu_op_af(adsp2100_state *adsp, int op) if (yop == 0x8000) SET_V; else if (yop == 0x0000) SET_C; break; - case 0x09: + case 0x09<<13: /* Y - X -X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - xop; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0a: + case 0x0a<<13: /* Y - X + C - 1 -X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - xop + (GET_C >> 3) - 1; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0b: + case 0x0b<<13: /* NOT X */ res = ALU_GETXREG_UNSIGNED(adsp, xop) ^ 0xffff; CALC_NZ(res); break; - case 0x0c: + case 0x0c<<13: /* X AND Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop & yop; CALC_NZ(res); break; - case 0x0d: + case 0x0d<<13: /* X OR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop | yop; CALC_NZ(res); break; - case 0x0e: + case 0x0e<<13: /* X XOR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop ^ yop; CALC_NZ(res); break; - case 0x0f: + case 0x0f<<13: /* ABS X */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = (xop & 0x8000) ? -xop : xop; @@ -1098,100 +1098,100 @@ static void alu_op_af_const(adsp2100_state *adsp, int op) INT32 yop = constants[((op >> 5) & 0x07) | ((op >> 8) & 0x18)]; INT32 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* Y Clear when y = 0 */ res = yop; CALC_NZ(res); break; - case 0x01: + case 0x01<<13: /* Y + 1 PASS 1 when y = 0 */ res = yop + 1; CALC_NZ(res); if (yop == 0x7fff) SET_V; else if (yop == 0xffff) SET_C; break; - case 0x02: + case 0x02<<13: /* X + Y + C */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop += GET_C >> 3; res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x03: + case 0x03<<13: /* X + Y X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x04: + case 0x04<<13: /* NOT Y */ res = yop ^ 0xffff; CALC_NZ(res); break; - case 0x05: + case 0x05<<13: /* -Y */ res = -yop; CALC_NZ(res); if (yop == 0x8000) SET_V; if (yop == 0x0000) SET_C; break; - case 0x06: + case 0x06<<13: /* X - Y + C - 1 X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop - yop + (GET_C >> 3) - 1; CALC_NZVC_SUB(xop, yop, res); break; - case 0x07: + case 0x07<<13: /* X - Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop - yop; CALC_NZVC_SUB(xop, yop, res); break; - case 0x08: + case 0x08<<13: /* Y - 1 PASS -1 when y = 0 */ res = yop - 1; CALC_NZ(res); if (yop == 0x8000) SET_V; else if (yop == 0x0000) SET_C; break; - case 0x09: + case 0x09<<13: /* Y - X -X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = yop - xop; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0a: + case 0x0a<<13: /* Y - X + C - 1 -X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = yop - xop + (GET_C >> 3) - 1; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0b: + case 0x0b<<13: /* NOT X */ res = ALU_GETXREG_UNSIGNED(adsp, xop) ^ 0xffff; CALC_NZ(res); break; - case 0x0c: + case 0x0c<<13: /* X AND Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop & yop; CALC_NZ(res); break; - case 0x0d: + case 0x0d<<13: /* X OR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop | yop; CALC_NZ(res); break; - case 0x0e: + case 0x0e<<13: /* X XOR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = xop ^ yop; CALC_NZ(res); break; - case 0x0f: + case 0x0f<<13: /* ABS X */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = (xop & 0x8000) ? -xop : xop; @@ -1221,14 +1221,14 @@ static void alu_op_none(adsp2100_state *adsp, int op) INT32 yop = (op >> 11) & 3; INT32 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* Y Clear when y = 0 */ res = ALU_GETYREG_UNSIGNED(adsp, yop); CALC_NZ(res); break; - case 0x01: + case 0x01<<13: /* Y + 1 PASS 1 when y = 0 */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop + 1; @@ -1236,7 +1236,7 @@ static void alu_op_none(adsp2100_state *adsp, int op) if (yop == 0x7fff) SET_V; else if (yop == 0xffff) SET_C; break; - case 0x02: + case 0x02<<13: /* X + Y + C */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); @@ -1244,19 +1244,19 @@ static void alu_op_none(adsp2100_state *adsp, int op) res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x03: + case 0x03<<13: /* X + Y X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop + yop; CALC_NZVC(xop, yop, res); break; - case 0x04: + case 0x04<<13: /* NOT Y */ res = ALU_GETYREG_UNSIGNED(adsp, yop) ^ 0xffff; CALC_NZ(res); break; - case 0x05: + case 0x05<<13: /* -Y */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = -yop; @@ -1264,21 +1264,21 @@ static void alu_op_none(adsp2100_state *adsp, int op) if (yop == 0x8000) SET_V; if (yop == 0x0000) SET_C; break; - case 0x06: + case 0x06<<13: /* X - Y + C - 1 X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop - yop + (GET_C >> 3) - 1; CALC_NZVC_SUB(xop, yop, res); break; - case 0x07: + case 0x07<<13: /* X - Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop - yop; CALC_NZVC_SUB(xop, yop, res); break; - case 0x08: + case 0x08<<13: /* Y - 1 PASS -1 when y = 0 */ yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - 1; @@ -1286,47 +1286,47 @@ static void alu_op_none(adsp2100_state *adsp, int op) if (yop == 0x8000) SET_V; else if (yop == 0x0000) SET_C; break; - case 0x09: + case 0x09<<13: /* Y - X -X when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - xop; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0a: + case 0x0a<<13: /* Y - X + C - 1 -X + C - 1 when y = 0 */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = yop - xop + (GET_C >> 3) - 1; CALC_NZVC_SUB(yop, xop, res); break; - case 0x0b: + case 0x0b<<13: /* NOT X */ res = ALU_GETXREG_UNSIGNED(adsp, xop) ^ 0xffff; CALC_NZ(res); break; - case 0x0c: + case 0x0c<<13: /* X AND Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop & yop; CALC_NZ(res); break; - case 0x0d: + case 0x0d<<13: /* X OR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop | yop; CALC_NZ(res); break; - case 0x0e: + case 0x0e<<13: /* X XOR Y */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); yop = ALU_GETYREG_UNSIGNED(adsp, yop); res = xop ^ yop; CALC_NZ(res); break; - case 0x0f: + case 0x0f<<13: /* ABS X */ xop = ALU_GETXREG_UNSIGNED(adsp, xop); res = (xop & 0x8000) ? -xop : xop; @@ -1352,12 +1352,12 @@ static void mac_op_mr(adsp2100_state *adsp, int op) INT32 temp; INT64 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* no-op */ return; - case 0x01: + case 0x01<<13: /* X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); @@ -1373,7 +1373,7 @@ static void mac_op_mr(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x02: + case 0x02<<13: /* MR + X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); @@ -1389,7 +1389,7 @@ static void mac_op_mr(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x03: + case 0x03<<13: /* MR - X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); @@ -1405,84 +1405,84 @@ static void mac_op_mr(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x04: + case 0x04<<13: /* X * Y (SS) Clear when y = 0 */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x05: + case 0x05<<13: /* X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x06: + case 0x06<<13: /* X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x07: + case 0x07<<13: /* X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x08: + case 0x08<<13: /* MR + X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x09: + case 0x09<<13: /* MR + X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0a: + case 0x0a<<13: /* MR + X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0b: + case 0x0b<<13: /* MR + X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0c: + case 0x0c<<13: /* MR - X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0d: + case 0x0d<<13: /* MR - X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0e: + case 0x0e<<13: /* MR - X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0f: + case 0x0f<<13: /* MR - X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); @@ -1514,12 +1514,12 @@ static void mac_op_mr_xop(adsp2100_state *adsp, int op) INT32 temp; INT64 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* no-op */ return; - case 0x01: + case 0x01<<13: /* X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1534,7 +1534,7 @@ static void mac_op_mr_xop(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x02: + case 0x02<<13: /* MR + X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1549,7 +1549,7 @@ static void mac_op_mr_xop(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x03: + case 0x03<<13: /* MR - X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1564,73 +1564,73 @@ static void mac_op_mr_xop(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x04: + case 0x04<<13: /* X * Y (SS) Clear when y = 0 */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x05: + case 0x05<<13: /* X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x06: + case 0x06<<13: /* X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x07: + case 0x07<<13: /* X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x08: + case 0x08<<13: /* MR + X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x09: + case 0x09<<13: /* MR + X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0a: + case 0x0a<<13: /* MR + X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0b: + case 0x0b<<13: /* MR + X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0c: + case 0x0c<<13: /* MR - X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0d: + case 0x0d<<13: /* MR - X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0e: + case 0x0e<<13: /* MR - X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0f: + case 0x0f<<13: /* MR - X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1662,12 +1662,12 @@ static void mac_op_mf(adsp2100_state *adsp, int op) INT32 temp; INT64 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* no-op */ return; - case 0x01: + case 0x01<<13: /* X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); @@ -1683,7 +1683,7 @@ static void mac_op_mf(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x02: + case 0x02<<13: /* MR + X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); @@ -1699,7 +1699,7 @@ static void mac_op_mf(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x03: + case 0x03<<13: /* MR - X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); @@ -1715,84 +1715,84 @@ static void mac_op_mf(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x04: + case 0x04<<13: /* X * Y (SS) Clear when y = 0 */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x05: + case 0x05<<13: /* X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x06: + case 0x06<<13: /* X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x07: + case 0x07<<13: /* X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = (INT64)temp; break; - case 0x08: + case 0x08<<13: /* MR + X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x09: + case 0x09<<13: /* MR + X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0a: + case 0x0a<<13: /* MR + X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0b: + case 0x0b<<13: /* MR + X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0c: + case 0x0c<<13: /* MR - X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0d: + case 0x0d<<13: /* MR - X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0e: + case 0x0e<<13: /* MR - X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_SIGNED(adsp, yop); temp = (xop * yop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0f: + case 0x0f<<13: /* MR - X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); yop = MAC_GETYREG_UNSIGNED(adsp, yop); @@ -1821,12 +1821,12 @@ static void mac_op_mf_xop(adsp2100_state *adsp, int op) INT32 temp; INT64 res; - switch ((op>>13) & 15) /*JB*/ + switch (op & (15<<13)) /*JB*/ { - case 0x00: + case 0x00<<13: /* no-op */ return; - case 0x01: + case 0x01<<13: /* X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1841,7 +1841,7 @@ static void mac_op_mf_xop(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x02: + case 0x02<<13: /* MR + X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1856,7 +1856,7 @@ static void mac_op_mf_xop(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x03: + case 0x03<<13: /* MR - X * Y (RND) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1871,73 +1871,73 @@ static void mac_op_mf_xop(adsp2100_state *adsp, int op) res &= ~((UINT64)0x10000); #endif break; - case 0x04: + case 0x04<<13: /* X * Y (SS) Clear when y = 0 */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x05: + case 0x05<<13: /* X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x06: + case 0x06<<13: /* X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x07: + case 0x07<<13: /* X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = (INT64)temp; break; - case 0x08: + case 0x08<<13: /* MR + X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x09: + case 0x09<<13: /* MR + X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0a: + case 0x0a<<13: /* MR + X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0b: + case 0x0b<<13: /* MR + X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr + (INT64)temp; break; - case 0x0c: + case 0x0c<<13: /* MR - X * Y (SS) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0d: + case 0x0d<<13: /* MR - X * Y (SU) */ xop = MAC_GETXREG_SIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0e: + case 0x0e<<13: /* MR - X * Y (US) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; res = adsp->core.mr.mr - (INT64)temp; break; - case 0x0f: + case 0x0f<<13: /* MR - X * Y (UU) */ xop = MAC_GETXREG_UNSIGNED(adsp, xop); temp = (xop * xop) << shift; @@ -1964,65 +1964,65 @@ static void shift_op(adsp2100_state *adsp, int op) INT32 xop = (op >> 8) & 7; UINT32 res; - switch ((op>>11) & 15) /*JB*/ + switch (op & (15<<11)) /*JB*/ { - case 0x00: + case 0x00<<11: /* LSHIFT (HI) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? ((UINT32)xop >> -sc) : 0; adsp->core.sr.sr = res; break; - case 0x01: + case 0x01<<11: /* LSHIFT (HI, OR) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? ((UINT32)xop >> -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x02: + case 0x02<<11: /* LSHIFT (LO) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : 0; adsp->core.sr.sr = res; break; - case 0x03: + case 0x03<<11: /* LSHIFT (LO, OR) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x04: + case 0x04<<11: /* ASHIFT (HI) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr = res; break; - case 0x05: + case 0x05<<11: /* ASHIFT (HI, OR) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr |= res; break; - case 0x06: + case 0x06<<11: /* ASHIFT (LO) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr = res; break; - case 0x07: + case 0x07<<11: /* ASHIFT (LO, OR) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr |= res; break; - case 0x08: + case 0x08<<11: /* NORM (HI) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) @@ -2033,7 +2033,7 @@ static void shift_op(adsp2100_state *adsp, int op) else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr = res; break; - case 0x09: + case 0x09<<11: /* NORM (HI, OR) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) @@ -2044,21 +2044,21 @@ static void shift_op(adsp2100_state *adsp, int op) else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x0a: + case 0x0a<<11: /* NORM (LO) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop >> sc) : 0; else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr = res; break; - case 0x0b: + case 0x0b<<11: /* NORM (LO, OR) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop >> sc) : 0; else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x0c: + case 0x0c<<11: /* EXP (HI) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; res = 0; @@ -2075,7 +2075,7 @@ static void shift_op(adsp2100_state *adsp, int op) } adsp->core.se.s = -res; break; - case 0x0d: + case 0x0d<<11: /* EXP (HIX) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (GET_V) @@ -2101,7 +2101,7 @@ static void shift_op(adsp2100_state *adsp, int op) adsp->core.se.s = -res; } break; - case 0x0e: + case 0x0e<<11: /* EXP (LO) */ if (adsp->core.se.s == -15) { @@ -2117,7 +2117,7 @@ static void shift_op(adsp2100_state *adsp, int op) adsp->core.se.s = -res; } break; - case 0x0f: + case 0x0f<<11: /* EXPADJ */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; res = 0; @@ -2146,65 +2146,65 @@ static void shift_op_imm(adsp2100_state *adsp, int op) INT32 xop = (op >> 8) & 7; UINT32 res; - switch ((op>>11) & 15) /*JB*/ + switch (op & (15<<11)) /*JB*/ { - case 0x00: + case 0x00<<11: /* LSHIFT (HI) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? ((UINT32)xop >> -sc) : 0; adsp->core.sr.sr = res; break; - case 0x01: + case 0x01<<11: /* LSHIFT (HI, OR) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? ((UINT32)xop >> -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x02: + case 0x02<<11: /* LSHIFT (LO) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : 0; adsp->core.sr.sr = res; break; - case 0x03: + case 0x03<<11: /* LSHIFT (LO, OR) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x04: + case 0x04<<11: /* ASHIFT (HI) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr = res; break; - case 0x05: + case 0x05<<11: /* ASHIFT (HI, OR) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr |= res; break; - case 0x06: + case 0x06<<11: /* ASHIFT (LO) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr = res; break; - case 0x07: + case 0x07<<11: /* ASHIFT (LO, OR) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop << sc) : 0; else res = (sc > -32) ? (xop >> -sc) : (xop >> 31); adsp->core.sr.sr |= res; break; - case 0x08: + case 0x08<<11: /* NORM (HI) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) @@ -2215,7 +2215,7 @@ static void shift_op_imm(adsp2100_state *adsp, int op) else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr = res; break; - case 0x09: + case 0x09<<11: /* NORM (HI, OR) */ xop = SHIFT_GETXREG_SIGNED(adsp, xop) << 16; if (sc > 0) @@ -2226,14 +2226,14 @@ static void shift_op_imm(adsp2100_state *adsp, int op) else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr |= res; break; - case 0x0a: + case 0x0a<<11: /* NORM (LO) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop >> sc) : 0; else res = (sc > -32) ? (xop << -sc) : 0; adsp->core.sr.sr = res; break; - case 0x0b: + case 0x0b<<11: /* NORM (LO, OR) */ xop = SHIFT_GETXREG_UNSIGNED(adsp, xop); if (sc > 0) res = (sc < 32) ? (xop >> sc) : 0;