Skip to content

SSE CMP ops with 8bit immediate throw sigill with oversized byte

This bug has been copied automatically from: https://bugs.launchpad.net/qemu/+bug/1832422
Reported by 'Sonicadvance1@gmail.com' on 2019-06-12 :

The SSE comparison ops that use an 8bit immediate as a comparison type
selector throws a sigill when the immediate is oversized.

Test op that I found this on is here `66 0f c2 c0 d1          cmppd
xmm0,xmm0,0xd1`
According to the x86-64 documentation only bits [2:0] are used for these
ops (and [4:0] for the AVX variant)
Currently qemu just checks if the value is >=8 and will throw a sigill in
that case. It instead needs to mask.

I have a small patch that fixes the issue for the SSE variant.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information