int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return (4 * CYCLE_UNIT / 2 + count_cycles) | (((1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4) << 16);
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return (4 * CYCLE_UNIT / 2 + count_cycles) | (((1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4) << 16);
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return (4 * CYCLE_UNIT / 2 + count_cycles) | (((1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4) << 16);
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return (4 * CYCLE_UNIT / 2 + count_cycles) | (((1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4) << 16);
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_020_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_020_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_020_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_020_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce020_prefetch_opcode(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce020_prefetch_opcode(4);
m68k_incpci(4);
return;
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce020_prefetch_opcode(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce020_prefetch_opcode(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_030_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_030_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_030_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_030_prefetch(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce030_prefetch_opcode(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce030_prefetch_opcode(4);
m68k_incpci(4);
return;
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce030_prefetch_opcode(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_word_ce030_prefetch_opcode(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return;
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return;
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
regs.irc = get_iword_mmu030c_opcode_state(4);
m68k_incpci(4);
return;
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = tmp ^ (0xffffffffu >> (32 - width));
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp = (uae_s32)tmp >> (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0;
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
uae_u32 offset2 = offset;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0);
tmp = 0xffffffffu >> (32 - width);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}
int width = (((extra & 0x20 ? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1;
uae_u32 tmp = m68k_dreg(regs, dstreg);
offset &= 0x1f;
- tmp = (tmp << offset) | (tmp >> (32 - offset));
+ if (offset) tmp = (tmp << offset) | (tmp >> (32 - offset));
bdata[0] = tmp & ((1 << (32 - width)) - 1);
SET_ALWAYS_NFLG(((uae_s32)tmp) < 0 ? 1 : 0);
tmp >>= (32 - width);
SET_ALWAYS_NFLG(tmp & (1 << (width - 1)) ? 1 : 0);
SET_ZFLG(tmp == 0);
tmp = bdata[0] | (tmp << (32 - width));
- m68k_dreg(regs, dstreg) = (tmp >> offset) | (tmp << (32 - offset));
+ m68k_dreg(regs, dstreg) = offset ? ((tmp >> offset) | (tmp << (32 - offset))) : tmp;
m68k_incpc(4);
return 0;
}