| Index: test/cctest/test-assembler-x64.cc
|
| diff --git a/test/cctest/test-assembler-x64.cc b/test/cctest/test-assembler-x64.cc
|
| index d974496ca80e04a20b257fc6b3a2642795b0cea0..cc5ce99d5f63f9ccb48bb6c7e2a163a8e0c1f4b4 100644
|
| --- a/test/cctest/test-assembler-x64.cc
|
| +++ b/test/cctest/test-assembler-x64.cc
|
| @@ -1351,15 +1351,42 @@ TEST(AssemblerX64AVX_sd) {
|
| CpuFeatureScope avx_scope(&assm, AVX);
|
| Label exit;
|
| // arguments in xmm0, xmm1 and xmm2
|
| + __ subq(rsp, Immediate(kDoubleSize * 2)); // For memory operand
|
| __ movl(rax, Immediate(0));
|
|
|
| __ vmaxsd(xmm4, xmm0, xmm1);
|
| - __ subq(rsp, Immediate(kDoubleSize * 2)); // For memory operand
|
| __ vmovsd(Operand(rsp, kDoubleSize), xmm4);
|
| __ vmovsd(xmm5, Operand(rsp, kDoubleSize));
|
| __ vmovsd(xmm6, xmm5);
|
| __ vmovapd(xmm3, xmm6);
|
|
|
| + // Test vcvttsd2si
|
| + __ movl(rax, Immediate(10));
|
| + __ movl(rdx, Immediate(123));
|
| + __ vcvtlsi2sd(xmm6, xmm6, rdx);
|
| + __ vcvttsd2si(rcx, xmm6);
|
| + __ cmpl(rcx, rdx);
|
| + __ j(not_equal, &exit);
|
| + __ xorl(rcx, rcx);
|
| + __ vmovsd(Operand(rsp, 0), xmm6);
|
| + __ vcvttsd2si(rcx, Operand(rsp, 0));
|
| + __ cmpl(rcx, rdx);
|
| + __ j(not_equal, &exit);
|
| +
|
| + // Test vcvttsd2siq
|
| + __ movl(rax, Immediate(11));
|
| + __ movq(rdx, V8_INT64_C(0x426D1A94A2000000)); // 1.0e12
|
| + __ vmovq(xmm6, rdx);
|
| + __ vcvttsd2siq(rcx, xmm6);
|
| + __ movq(rdx, V8_INT64_C(1000000000000));
|
| + __ cmpq(rcx, rdx);
|
| + __ j(not_equal, &exit);
|
| + __ xorq(rcx, rcx);
|
| + __ vmovsd(Operand(rsp, 0), xmm6);
|
| + __ vcvttsd2siq(rcx, Operand(rsp, 0));
|
| + __ cmpq(rcx, rdx);
|
| + __ j(not_equal, &exit);
|
| +
|
| __ movl(rdx, Immediate(6));
|
| __ vcvtlsi2sd(xmm6, xmm6, rdx);
|
| __ movl(Operand(rsp, 0), Immediate(5));
|
| @@ -1373,7 +1400,6 @@ TEST(AssemblerX64AVX_sd) {
|
| __ movq(Operand(rsp, 0), rdx);
|
| __ vmovq(xmm6, Operand(rsp, 0));
|
| __ vmulsd(xmm1, xmm1, xmm6);
|
| - __ addq(rsp, Immediate(kDoubleSize * 2));
|
|
|
| __ vucomisd(xmm3, xmm1);
|
| __ j(parity_even, &exit);
|
| @@ -1414,6 +1440,7 @@ TEST(AssemblerX64AVX_sd) {
|
|
|
| // result in eax
|
| __ bind(&exit);
|
| + __ addq(rsp, Immediate(kDoubleSize * 2));
|
| __ ret(0);
|
| }
|
|
|
|
|