Merge V8 5.3.332.45. DO NOT MERGE
Test: Manual
FPIIM-449
Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/test/cctest/test-disasm-x64.cc b/test/cctest/test-disasm-x64.cc
index b855626..64d97ea 100644
--- a/test/cctest/test-disasm-x64.cc
+++ b/test/cctest/test-disasm-x64.cc
@@ -282,7 +282,7 @@
// TODO(mstarzinger): The following is protected.
// __ call(Operand(rbx, rcx, times_4, 10000));
__ nop();
- Handle<Code> ic(CodeFactory::LoadIC(isolate, NOT_INSIDE_TYPEOF).code());
+ Handle<Code> ic(CodeFactory::LoadIC(isolate).code());
__ call(ic, RelocInfo::CODE_TARGET);
__ nop();
__ nop();
@@ -458,6 +458,7 @@
__ pcmpeqd(xmm1, xmm0);
__ punpckldq(xmm1, xmm11);
+ __ punpckldq(xmm5, Operand(rdx, 4));
__ punpckhdq(xmm8, xmm15);
}
@@ -484,11 +485,46 @@
{
if (CpuFeatures::IsSupported(SSE4_1)) {
CpuFeatureScope scope(&assm, SSE4_1);
+ __ insertps(xmm5, xmm1, 123);
__ extractps(rax, xmm1, 0);
__ pextrd(rbx, xmm15, 0);
__ pextrd(r12, xmm0, 1);
__ pinsrd(xmm9, r9, 0);
- __ pinsrd(xmm5, rax, 1);
+ __ pinsrd(xmm5, Operand(rax, 4), 1);
+
+ __ cmpps(xmm5, xmm1, 1);
+ __ cmpeqps(xmm5, xmm1);
+ __ cmpltps(xmm5, xmm1);
+ __ cmpleps(xmm5, xmm1);
+ __ cmpneqps(xmm5, xmm1);
+ __ cmpnltps(xmm5, xmm1);
+ __ cmpnleps(xmm5, xmm1);
+
+ __ minps(xmm5, xmm1);
+ __ minps(xmm5, Operand(rdx, 4));
+ __ maxps(xmm5, xmm1);
+ __ maxps(xmm5, Operand(rdx, 4));
+ __ rcpps(xmm5, xmm1);
+ __ rcpps(xmm5, Operand(rdx, 4));
+ __ sqrtps(xmm5, xmm1);
+ __ sqrtps(xmm5, Operand(rdx, 4));
+ __ movups(xmm5, xmm1);
+ __ movups(xmm5, Operand(rdx, 4));
+ __ movups(Operand(rdx, 4), xmm5);
+ __ paddd(xmm5, xmm1);
+ __ paddd(xmm5, Operand(rdx, 4));
+ __ psubd(xmm5, xmm1);
+ __ psubd(xmm5, Operand(rdx, 4));
+ __ pmulld(xmm5, xmm1);
+ __ pmulld(xmm5, Operand(rdx, 4));
+ __ pmuludq(xmm5, xmm1);
+ __ pmuludq(xmm5, Operand(rdx, 4));
+ __ psrldq(xmm5, 123);
+ __ pshufd(xmm5, xmm1, 3);
+ __ cvtps2dq(xmm5, xmm1);
+ __ cvtps2dq(xmm5, Operand(rdx, 4));
+ __ cvtdq2ps(xmm5, xmm1);
+ __ cvtdq2ps(xmm5, Operand(rdx, 4));
}
}
@@ -745,12 +781,31 @@
// xchg.
{
+ __ xchgb(rax, Operand(rax, 8));
+ __ xchgw(rax, Operand(rbx, 8));
__ xchgq(rax, rax);
__ xchgq(rax, rbx);
__ xchgq(rbx, rbx);
__ xchgq(rbx, Operand(rsp, 12));
}
+ // cmpxchg.
+ {
+ __ cmpxchgb(Operand(rsp, 12), rax);
+ __ cmpxchgw(Operand(rbx, rcx, times_4, 10000), rax);
+ __ cmpxchgl(Operand(rbx, rcx, times_4, 10000), rax);
+ __ cmpxchgq(Operand(rbx, rcx, times_4, 10000), rax);
+ }
+
+ // lock prefix.
+ {
+ __ lock();
+ __ cmpxchgl(Operand(rsp, 12), rbx);
+
+ __ lock();
+ __ xchgw(rax, Operand(rcx, 8));
+ }
+
// Nop instructions
for (int i = 0; i < 16; i++) {
__ Nop(i);