|
From: <sv...@va...> - 2015-10-12 14:31:07
|
Author: mjw
Date: Mon Oct 12 15:30:58 2015
New Revision: 3198
Log:
Bug 278744 cvtps2pd with redundant RexW
Modified:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Mon Oct 12 15:30:58 2015
@@ -13396,7 +13396,8 @@
case 0x5A:
/* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
F64 in xmm(G). */
- if (haveNo66noF2noF3(pfx) && sz == 4) {
+ if (haveNo66noF2noF3(pfx)
+ && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
delta = dis_CVTPS2PD_128( vbi, pfx, delta, False/*!isAvx*/ );
goto decode_success;
}
|
|
From: Florian K. <fl...@ei...> - 2015-10-12 20:04:10
|
On 12.10.2015 16:30, sv...@va... wrote:
> Author: mjw
> Date: Mon Oct 12 15:30:58 2015
> New Revision: 3198
>
> Log:
> Bug 278744 cvtps2pd with redundant RexW
>
> Modified:
> trunk/priv/guest_amd64_toIR.c
>
> Modified: trunk/priv/guest_amd64_toIR.c
> ==============================================================================
> --- trunk/priv/guest_amd64_toIR.c (original)
> +++ trunk/priv/guest_amd64_toIR.c Mon Oct 12 15:30:58 2015
> @@ -13396,7 +13396,8 @@
> case 0x5A:
> /* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
> F64 in xmm(G). */
> - if (haveNo66noF2noF3(pfx) && sz == 4) {
> + if (haveNo66noF2noF3(pfx)
> + && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
I'm seeing this with gcc (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1):
priv/guest_amd64_toIR.c: In function 'dis_ESC_0F__SSE2':
priv/guest_amd64_toIR.c:13400:11: warning: suggest parentheses around
'&&' within '||' [-Wparentheses]
&& sz == 4 || /* ignore redundant REX.W */ sz == 8) {
Florian
|
|
From: Mark W. <mj...@re...> - 2015-10-12 20:16:10
|
On Mon, Oct 12, 2015 at 10:04:00PM +0200, Florian Krohm wrote:
> On 12.10.2015 16:30, sv...@va... wrote:
> > @@ -13396,7 +13396,8 @@
> > case 0x5A:
> > /* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
> > F64 in xmm(G). */
> > - if (haveNo66noF2noF3(pfx) && sz == 4) {
> > + if (haveNo66noF2noF3(pfx)
> > + && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
>
> I'm seeing this with gcc (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1):
>
> priv/guest_amd64_toIR.c: In function 'dis_ESC_0F__SSE2':
> priv/guest_amd64_toIR.c:13400:11: warning: suggest parentheses around
> '&&' within '||' [-Wparentheses]
> && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
Smart GCC. Yes, it should have parentheses around the (sz == 4 || sz == 8).
Fixed in VEX svn r3199.
Thanks,
Mark
|