2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPAND_a16(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_16(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q &= src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPAND_a32(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_32(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q &= src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPANDN_a16(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_16(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q = ~dst->q & src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPANDN_a32(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_32(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q = ~dst->q & src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPOR_a16(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_16(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q |= src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPOR_a32(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_32(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q |= src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPXOR_a16(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_16(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q ^= src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|
2022-11-19 10:40:32 -05:00
|
|
|
static int
|
|
|
|
|
opPXOR_a32(uint32_t fetchdat)
|
2016-06-26 00:34:39 +02:00
|
|
|
{
|
2023-07-16 02:24:36 +02:00
|
|
|
MMX_REG src;
|
|
|
|
|
MMX_REG *dst;
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_ENTER();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
fetch_ea_32(fetchdat);
|
2023-07-16 02:24:36 +02:00
|
|
|
|
|
|
|
|
dst = fpu_softfloat ? ((MMX_REG *) &fpu_state.st_space[cpu_reg].fraction) : &(cpu_state.MM[cpu_reg]);
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
MMX_GETSRC();
|
2022-02-20 02:26:27 -05:00
|
|
|
|
2023-07-15 00:28:39 +02:00
|
|
|
if (fpu_softfloat) {
|
|
|
|
|
fpu_state.tag = 0;
|
|
|
|
|
fpu_state.tos = 0; /* reset FPU Top-Of-Stack */
|
2023-07-16 02:24:36 +02:00
|
|
|
}
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
dst->q ^= src.q;
|
2023-07-15 00:28:39 +02:00
|
|
|
|
2023-07-16 02:24:36 +02:00
|
|
|
if (fpu_softfloat)
|
2023-07-15 00:28:39 +02:00
|
|
|
fpu_state.st_space[cpu_reg].exp = 0xffff;
|
|
|
|
|
|
2022-11-19 10:40:32 -05:00
|
|
|
return 0;
|
2016-06-26 00:34:39 +02:00
|
|
|
}
|