Files
86Box/src/cpu/x86_ops_mmx_logic.h

156 lines
1.9 KiB
C
Raw Normal View History

2022-11-19 10:40:32 -05:00
static int
opPAND_a16(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q &= src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPAND_a32(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q &= src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPANDN_a16(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q = ~dst->q & src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPANDN_a32(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q = ~dst->q & src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPOR_a16(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q |= src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPOR_a32(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q |= src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPXOR_a16(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q ^= src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}
2022-11-19 10:40:32 -05:00
static int
opPXOR_a32(uint32_t fetchdat)
{
2023-08-11 13:00:04 -04:00
MMX_REG src;
2023-07-16 02:24:36 +02:00
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
2023-07-16 03:01:11 +02:00
dst = MMX_GETREGP(cpu_reg);
2022-11-19 10:40:32 -05:00
MMX_GETSRC();
2022-02-20 02:26:27 -05:00
2023-07-16 02:24:36 +02:00
dst->q ^= src.q;
2023-07-16 03:28:37 +02:00
MMX_SETEXP(cpu_reg);
2022-11-19 10:40:32 -05:00
return 0;
}