mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
microblaze: Improve addkc
* Optimize handling when carry is not updated. * Optimize handling for adds with nop semantics. * Move code from helper_addkc to the translator making helper_addkc PURE and CONST. Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
parent
2accfb5fa6
commit
40cbf5b709
3 changed files with 46 additions and 27 deletions
|
@ -128,26 +128,14 @@ uint32_t helper_cmpu(uint32_t a, uint32_t b)
|
|||
return t;
|
||||
}
|
||||
|
||||
uint32_t helper_addkc(uint32_t a, uint32_t b, uint32_t k, uint32_t c)
|
||||
uint32_t helper_addkc(uint32_t a, uint32_t b, uint32_t cf)
|
||||
{
|
||||
uint32_t d, cf = 0, ncf;
|
||||
uint32_t d, ncf;
|
||||
|
||||
if (c)
|
||||
cf = env->sregs[SR_MSR] >> 31;
|
||||
assert(cf == 0 || cf == 1);
|
||||
d = a + b + cf;
|
||||
|
||||
if (!k) {
|
||||
ncf = compute_carry(a, b, cf);
|
||||
assert(ncf == 0 || ncf == 1);
|
||||
if (ncf)
|
||||
env->sregs[SR_MSR] |= MSR_C | MSR_CC;
|
||||
else
|
||||
env->sregs[SR_MSR] &= ~(MSR_C | MSR_CC);
|
||||
}
|
||||
D(qemu_log("%x = %x + %x cf=%d ncf=%d k=%d c=%d\n",
|
||||
d, a, b, cf, ncf, k, c));
|
||||
return d;
|
||||
ncf = compute_carry(a, b, cf);
|
||||
return ncf;
|
||||
}
|
||||
|
||||
uint32_t helper_subkc(uint32_t a, uint32_t b, uint32_t k, uint32_t c)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue