mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
target-i386: SSE4.2: fix pcmpXstri instructions
ffs1 returns the first bit set to one starting counting from the most significant bit. pcmpXstri returns the most significant bit set to one, starting counting from the least significant bit. Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
da5156cd9a
commit
93e3c0ae69
1 changed files with 2 additions and 2 deletions
|
@ -2099,7 +2099,7 @@ void glue(helper_pcmpestri, SUFFIX)(CPUX86State *env, Reg *d, Reg *s,
|
|||
pcmp_elen(env, R_EAX, ctrl));
|
||||
|
||||
if (res) {
|
||||
env->regs[R_ECX] = ((ctrl & (1 << 6)) ? rffs1 : ffs1)(res) - 1;
|
||||
env->regs[R_ECX] = (ctrl & (1 << 6)) ? rffs1(res) - 1 : 32 - ffs1(res);
|
||||
} else {
|
||||
env->regs[R_ECX] = 16 >> (ctrl & (1 << 0));
|
||||
}
|
||||
|
@ -2137,7 +2137,7 @@ void glue(helper_pcmpistri, SUFFIX)(CPUX86State *env, Reg *d, Reg *s,
|
|||
pcmp_ilen(d, ctrl));
|
||||
|
||||
if (res) {
|
||||
env->regs[R_ECX] = ((ctrl & (1 << 6)) ? rffs1 : ffs1)(res) - 1;
|
||||
env->regs[R_ECX] = (ctrl & (1 << 6)) ? rffs1(res) - 1 : 32 - ffs1(res);
|
||||
} else {
|
||||
env->regs[R_ECX] = 16 >> (ctrl & (1 << 0));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue