diff options
Diffstat (limited to 'deps/v8/test/cctest/test-disasm-x64.cc')
-rw-r--r-- | deps/v8/test/cctest/test-disasm-x64.cc | 97 |
1 files changed, 48 insertions, 49 deletions
diff --git a/deps/v8/test/cctest/test-disasm-x64.cc b/deps/v8/test/cctest/test-disasm-x64.cc index 1ff9fd336..8fd036956 100644 --- a/deps/v8/test/cctest/test-disasm-x64.cc +++ b/deps/v8/test/cctest/test-disasm-x64.cc @@ -50,7 +50,7 @@ TEST(DisasmX64) { CcTest::InitializeVM(); v8::HandleScope scope; v8::internal::byte buffer[2048]; - Assembler assm(Isolate::Current(), buffer, sizeof buffer); + Assembler assm(CcTest::i_isolate(), buffer, sizeof buffer); DummyStaticFunction(NULL); // just bloody use it (DELETE; debugging) // Short immediate instructions @@ -239,7 +239,7 @@ TEST(DisasmX64) { __ bind(&L2); __ call(Operand(rbx, rcx, times_4, 10000)); __ nop(); - Handle<Code> ic(Isolate::Current()->builtins()->builtin( + Handle<Code> ic(CcTest::i_isolate()->builtins()->builtin( Builtins::kLoadIC_Initialize)); __ call(ic, RelocInfo::CODE_TARGET); __ nop(); @@ -335,60 +335,59 @@ TEST(DisasmX64) { __ fcompp(); __ fwait(); __ nop(); + + // SSE instruction { - if (CpuFeatures::IsSupported(SSE2)) { - CpuFeatures::Scope fscope(SSE2); - __ cvttss2si(rdx, Operand(rbx, rcx, times_4, 10000)); - __ cvttss2si(rdx, xmm1); - __ cvttsd2si(rdx, Operand(rbx, rcx, times_4, 10000)); - __ cvttsd2si(rdx, xmm1); - __ cvttsd2siq(rdx, xmm1); - __ addsd(xmm1, xmm0); - __ mulsd(xmm1, xmm0); - __ subsd(xmm1, xmm0); - __ divsd(xmm1, xmm0); - __ movsd(xmm1, Operand(rbx, rcx, times_4, 10000)); - __ movsd(Operand(rbx, rcx, times_4, 10000), xmm1); - __ ucomisd(xmm0, xmm1); - - // 128 bit move instructions. - __ movdqa(xmm0, Operand(rbx, rcx, times_4, 10000)); - __ movdqa(Operand(rbx, rcx, times_4, 10000), xmm0); - } + __ cvttss2si(rdx, Operand(rbx, rcx, times_4, 10000)); + __ cvttss2si(rdx, xmm1); + __ movaps(xmm0, xmm1); + + __ andps(xmm0, xmm1); + } + // SSE 2 instructions + { + __ cvttsd2si(rdx, Operand(rbx, rcx, times_4, 10000)); + __ cvttsd2si(rdx, xmm1); + __ cvttsd2siq(rdx, xmm1); + __ movsd(xmm1, Operand(rbx, rcx, times_4, 10000)); + __ movsd(Operand(rbx, rcx, times_4, 10000), xmm1); + // 128 bit move instructions. + __ movdqa(xmm0, Operand(rbx, rcx, times_4, 10000)); + __ movdqa(Operand(rbx, rcx, times_4, 10000), xmm0); + + __ addsd(xmm1, xmm0); + __ mulsd(xmm1, xmm0); + __ subsd(xmm1, xmm0); + __ divsd(xmm1, xmm0); + __ ucomisd(xmm0, xmm1); + + __ andpd(xmm0, xmm1); } // cmov. { - if (CpuFeatures::IsSupported(CMOV)) { - CpuFeatures::Scope use_cmov(CMOV); - __ cmovq(overflow, rax, Operand(rax, 0)); - __ cmovq(no_overflow, rax, Operand(rax, 1)); - __ cmovq(below, rax, Operand(rax, 2)); - __ cmovq(above_equal, rax, Operand(rax, 3)); - __ cmovq(equal, rax, Operand(rbx, 0)); - __ cmovq(not_equal, rax, Operand(rbx, 1)); - __ cmovq(below_equal, rax, Operand(rbx, 2)); - __ cmovq(above, rax, Operand(rbx, 3)); - __ cmovq(sign, rax, Operand(rcx, 0)); - __ cmovq(not_sign, rax, Operand(rcx, 1)); - __ cmovq(parity_even, rax, Operand(rcx, 2)); - __ cmovq(parity_odd, rax, Operand(rcx, 3)); - __ cmovq(less, rax, Operand(rdx, 0)); - __ cmovq(greater_equal, rax, Operand(rdx, 1)); - __ cmovq(less_equal, rax, Operand(rdx, 2)); - __ cmovq(greater, rax, Operand(rdx, 3)); - } + __ cmovq(overflow, rax, Operand(rax, 0)); + __ cmovq(no_overflow, rax, Operand(rax, 1)); + __ cmovq(below, rax, Operand(rax, 2)); + __ cmovq(above_equal, rax, Operand(rax, 3)); + __ cmovq(equal, rax, Operand(rbx, 0)); + __ cmovq(not_equal, rax, Operand(rbx, 1)); + __ cmovq(below_equal, rax, Operand(rbx, 2)); + __ cmovq(above, rax, Operand(rbx, 3)); + __ cmovq(sign, rax, Operand(rcx, 0)); + __ cmovq(not_sign, rax, Operand(rcx, 1)); + __ cmovq(parity_even, rax, Operand(rcx, 2)); + __ cmovq(parity_odd, rax, Operand(rcx, 3)); + __ cmovq(less, rax, Operand(rdx, 0)); + __ cmovq(greater_equal, rax, Operand(rdx, 1)); + __ cmovq(less_equal, rax, Operand(rdx, 2)); + __ cmovq(greater, rax, Operand(rdx, 3)); } - // andpd, etc. { - if (CpuFeatures::IsSupported(SSE2)) { - CpuFeatures::Scope fscope(SSE2); - __ andpd(xmm0, xmm1); - __ andpd(xmm1, xmm2); - - __ movaps(xmm0, xmm1); - __ movaps(xmm1, xmm2); + if (CpuFeatures::IsSupported(SSE4_1)) { + CpuFeatureScope scope(&assm, SSE4_1); + __ extractps(rax, xmm1, 0); } } @@ -401,7 +400,7 @@ TEST(DisasmX64) { CodeDesc desc; assm.GetCode(&desc); - Object* code = HEAP->CreateCode( + Object* code = CcTest::heap()->CreateCode( desc, Code::ComputeFlags(Code::STUB), Handle<Code>())->ToObjectChecked(); |