diff options
Diffstat (limited to 'target-ppc/op.c')
-rw-r--r-- | target-ppc/op.c | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/target-ppc/op.c b/target-ppc/op.c index 82750c6..9d9661a 100644 --- a/target-ppc/op.c +++ b/target-ppc/op.c @@ -476,133 +476,6 @@ void OPPROTO op_POWER_nabso (void) RETURN(); } -/* XXX: factorise POWER rotates... */ -void OPPROTO op_POWER_rlmi (void) -{ - T0 = rotl32(T0, T2) & PARAM1; - T0 |= T1 & (uint32_t)PARAM2; - RETURN(); -} - -void OPPROTO op_POWER_rrib (void) -{ - T2 &= 0x1FUL; - T0 = rotl32(T0 & INT32_MIN, T2); - T0 |= T1 & ~rotl32(INT32_MIN, T2); - RETURN(); -} - -void OPPROTO op_POWER_sle (void) -{ - T1 &= 0x1FUL; - env->spr[SPR_MQ] = rotl32(T0, T1); - T0 = T0 << T1; - RETURN(); -} - -void OPPROTO op_POWER_sleq (void) -{ - uint32_t tmp = env->spr[SPR_MQ]; - - T1 &= 0x1FUL; - env->spr[SPR_MQ] = rotl32(T0, T1); - T0 = T0 << T1; - T0 |= tmp >> (32 - T1); - RETURN(); -} - -void OPPROTO op_POWER_sllq (void) -{ - uint32_t msk = UINT32_MAX; - - msk = msk << (T1 & 0x1FUL); - if (T1 & 0x20UL) - msk = ~msk; - T1 &= 0x1FUL; - T0 = (T0 << T1) & msk; - T0 |= env->spr[SPR_MQ] & ~msk; - RETURN(); -} - -void OPPROTO op_POWER_slq (void) -{ - uint32_t msk = UINT32_MAX, tmp; - - msk = msk << (T1 & 0x1FUL); - if (T1 & 0x20UL) - msk = ~msk; - T1 &= 0x1FUL; - tmp = rotl32(T0, T1); - T0 = tmp & msk; - env->spr[SPR_MQ] = tmp; - RETURN(); -} - -void OPPROTO op_POWER_sraq (void) -{ - env->spr[SPR_MQ] = rotl32(T0, 32 - (T1 & 0x1FUL)); - if (T1 & 0x20UL) - T0 = UINT32_MAX; - else - T0 = (int32_t)T0 >> T1; - RETURN(); -} - -void OPPROTO op_POWER_sre (void) -{ - T1 &= 0x1FUL; - env->spr[SPR_MQ] = rotl32(T0, 32 - T1); - T0 = (int32_t)T0 >> T1; - RETURN(); -} - -void OPPROTO op_POWER_srea (void) -{ - T1 &= 0x1FUL; - env->spr[SPR_MQ] = T0 >> T1; - T0 = (int32_t)T0 >> T1; - RETURN(); -} - -void OPPROTO op_POWER_sreq (void) -{ - uint32_t tmp; - int32_t msk; - - T1 &= 0x1FUL; - msk = INT32_MIN >> T1; - tmp = env->spr[SPR_MQ]; - env->spr[SPR_MQ] = rotl32(T0, 32 - T1); - T0 = T0 >> T1; - T0 |= tmp & msk; - RETURN(); -} - -void OPPROTO op_POWER_srlq (void) -{ - uint32_t tmp; - int32_t msk; - - msk = INT32_MIN >> (T1 & 0x1FUL); - if (T1 & 0x20UL) - msk = ~msk; - T1 &= 0x1FUL; - tmp = env->spr[SPR_MQ]; - env->spr[SPR_MQ] = rotl32(T0, 32 - T1); - T0 = T0 >> T1; - T0 &= msk; - T0 |= tmp & ~msk; - RETURN(); -} - -void OPPROTO op_POWER_srq (void) -{ - T1 &= 0x1FUL; - env->spr[SPR_MQ] = rotl32(T0, 32 - T1); - T0 = T0 >> T1; - RETURN(); -} - /* POWER instructions not implemented in PowerPC 601 */ #if !defined(CONFIG_USER_ONLY) void OPPROTO op_POWER_mfsri (void) |