|
Mark Wielaard |
59e54b |
commit 6c07dca0af0527226ec9784fbb703526887f09c0
|
|
Mark Wielaard |
59e54b |
Author: sewardj <sewardj@8f6e269a-dfd6-0310-a8e1-e2731360e62c>
|
|
Mark Wielaard |
59e54b |
Date: Tue Mar 26 10:27:39 2013 +0000
|
|
Mark Wielaard |
59e54b |
|
|
Mark Wielaard |
59e54b |
Implement SSE4 MOVNTDQA insn. Fixes #316503.
|
|
Mark Wielaard |
59e54b |
(Patrick J. LoPresti, lopresti@gmail.com)
|
|
Mark Wielaard |
59e54b |
|
|
Mark Wielaard |
59e54b |
|
|
Mark Wielaard |
59e54b |
git-svn-id: svn://svn.valgrind.org/vex/trunk@2700 8f6e269a-dfd6-0310-a8e1-e2731360e62c
|
|
Mark Wielaard |
59e54b |
|
|
Mark Wielaard |
59e54b |
diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c
|
|
Mark Wielaard |
59e54b |
index 1034971..7e98e76 100644
|
|
Mark Wielaard |
59e54b |
--- a/VEX/priv/guest_amd64_toIR.c
|
|
Mark Wielaard |
59e54b |
+++ b/VEX/priv/guest_amd64_toIR.c
|
|
Mark Wielaard |
59e54b |
@@ -16378,6 +16378,25 @@ Long dis_ESC_0F38__SSE4 ( Bool* decode_OK,
|
|
Mark Wielaard |
59e54b |
}
|
|
Mark Wielaard |
59e54b |
break;
|
|
Mark Wielaard |
59e54b |
|
|
Mark Wielaard |
59e54b |
+ case 0x2A:
|
|
Mark Wielaard |
59e54b |
+ /* 66 0F 38 2A = MOVNTDQA
|
|
Mark Wielaard |
59e54b |
+ "non-temporal" "streaming" load
|
|
Mark Wielaard |
59e54b |
+ Handle like MOVDQA but only memory operand is allowed */
|
|
Mark Wielaard |
59e54b |
+ if (have66noF2noF3(pfx) && sz == 2) {
|
|
Mark Wielaard |
59e54b |
+ modrm = getUChar(delta);
|
|
Mark Wielaard |
59e54b |
+ if (!epartIsReg(modrm)) {
|
|
Mark Wielaard |
59e54b |
+ addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
|
|
Mark Wielaard |
59e54b |
+ gen_SEGV_if_not_16_aligned( addr );
|
|
Mark Wielaard |
59e54b |
+ putXMMReg( gregOfRexRM(pfx,modrm),
|
|
Mark Wielaard |
59e54b |
+ loadLE(Ity_V128, mkexpr(addr)) );
|
|
Mark Wielaard |
59e54b |
+ DIP("movntdqa %s,%s\n", dis_buf,
|
|
Mark Wielaard |
59e54b |
+ nameXMMReg(gregOfRexRM(pfx,modrm)));
|
|
Mark Wielaard |
59e54b |
+ delta += alen;
|
|
Mark Wielaard |
59e54b |
+ goto decode_success;
|
|
Mark Wielaard |
59e54b |
+ }
|
|
Mark Wielaard |
59e54b |
+ }
|
|
Mark Wielaard |
59e54b |
+ break;
|
|
Mark Wielaard |
59e54b |
+
|
|
Mark Wielaard |
59e54b |
case 0x2B:
|
|
Mark Wielaard |
59e54b |
/* 66 0f 38 2B /r = PACKUSDW xmm1, xmm2/m128
|
|
Mark Wielaard |
59e54b |
2x 32x4 S->U saturating narrow from xmm2/m128 to xmm1 */
|