diff options
Diffstat (limited to 'deps/v8/test/cctest/test-assembler-arm64.cc')
-rw-r--r-- | deps/v8/test/cctest/test-assembler-arm64.cc | 327 |
1 files changed, 15 insertions, 312 deletions
diff --git a/deps/v8/test/cctest/test-assembler-arm64.cc b/deps/v8/test/cctest/test-assembler-arm64.cc index 44a54df80e..d49f8c8974 100644 --- a/deps/v8/test/cctest/test-assembler-arm64.cc +++ b/deps/v8/test/cctest/test-assembler-arm64.cc @@ -31,18 +31,18 @@ #include <cmath> #include <limits> -#include "src/v8.h" - -#include "src/arm64/assembler-arm64-inl.h" -#include "src/arm64/decoder-arm64-inl.h" -#include "src/arm64/disasm-arm64.h" -#include "src/arm64/macro-assembler-arm64-inl.h" -#include "src/arm64/simulator-arm64.h" -#include "src/arm64/utils-arm64.h" +#include "src/init/v8.h" + #include "src/base/platform/platform.h" #include "src/base/utils/random-number-generator.h" +#include "src/codegen/arm64/assembler-arm64-inl.h" +#include "src/codegen/arm64/decoder-arm64-inl.h" +#include "src/codegen/arm64/macro-assembler-arm64-inl.h" +#include "src/codegen/arm64/utils-arm64.h" +#include "src/codegen/macro-assembler.h" +#include "src/diagnostics/arm64/disasm-arm64.h" +#include "src/execution/arm64/simulator-arm64.h" #include "src/heap/factory.h" -#include "src/macro-assembler.h" #include "test/cctest/cctest.h" #include "test/cctest/test-utils-arm64.h" #include "test/common/assembler-tester.h" @@ -215,8 +215,8 @@ static void InitializeVM() { #define CHECK_EQUAL_NZCV(expected) \ CHECK(EqualNzcv(expected, core.flags_nzcv())) -#define CHECK_EQUAL_REGISTERS(expected) \ - CHECK(EqualRegisters(&expected, &core)) +#define CHECK_EQUAL_REGISTERS(expected) \ + CHECK(EqualV8Registers(&expected, &core)) #define CHECK_EQUAL_32(expected, result) \ CHECK(Equal32(static_cast<uint32_t>(expected), &core, result)) @@ -6448,7 +6448,7 @@ namespace { void LoadLiteral(MacroAssembler* masm, Register reg, uint64_t imm) { // Since we do not allow non-relocatable entries in the literal pool, we need // to fake a relocation mode that is not NONE here. - masm->Ldr(reg, Immediate(imm, RelocInfo::EMBEDDED_OBJECT)); + masm->Ldr(reg, Immediate(imm, RelocInfo::FULL_EMBEDDED_OBJECT)); } } // namespace @@ -6984,10 +6984,6 @@ TEST(claim_drop_zero) { __ Drop(xzr, 0); __ Claim(x7, 0); __ Drop(x7, 0); - __ ClaimBySMI(xzr, 8); - __ DropBySMI(xzr, 8); - __ ClaimBySMI(xzr, 0); - __ DropBySMI(xzr, 0); CHECK_EQ(0u, __ SizeOfCodeGeneratedSince(&start)); END(); @@ -12307,160 +12303,6 @@ TEST(push_pop) { CHECK_EQUAL_32(0x33333333U, w29); } -TEST(push_queued) { - INIT_V8(); - SETUP(); - - START(); - - MacroAssembler::PushPopQueue queue(&masm); - - // Queue up registers. - queue.Queue(x0); - queue.Queue(x1); - queue.Queue(x2); - queue.Queue(x3); - - queue.Queue(w4); - queue.Queue(w5); - queue.Queue(w6); - queue.Queue(w7); - - queue.Queue(d0); - queue.Queue(d1); - - queue.Queue(s2); - queue.Queue(s3); - queue.Queue(s4); - queue.Queue(s5); - - __ Mov(x0, 0x1234000000000000); - __ Mov(x1, 0x1234000100010001); - __ Mov(x2, 0x1234000200020002); - __ Mov(x3, 0x1234000300030003); - __ Mov(w4, 0x12340004); - __ Mov(w5, 0x12340005); - __ Mov(w6, 0x12340006); - __ Mov(w7, 0x12340007); - __ Fmov(d0, 123400.0); - __ Fmov(d1, 123401.0); - __ Fmov(s2, 123402.0); - __ Fmov(s3, 123403.0); - __ Fmov(s4, 123404.0); - __ Fmov(s5, 123405.0); - - // Actually push them. - queue.PushQueued(); - - Clobber(&masm, CPURegList(CPURegister::kRegister, kXRegSizeInBits, 0, 8)); - Clobber(&masm, CPURegList(CPURegister::kVRegister, kDRegSizeInBits, 0, 6)); - - // Pop them conventionally. - __ Pop(s5, s4, s3, s2); - __ Pop(d1, d0); - __ Pop(w7, w6, w5, w4); - __ Pop(x3, x2, x1, x0); - - END(); - - RUN(); - - CHECK_EQUAL_64(0x1234000000000000, x0); - CHECK_EQUAL_64(0x1234000100010001, x1); - CHECK_EQUAL_64(0x1234000200020002, x2); - CHECK_EQUAL_64(0x1234000300030003, x3); - - CHECK_EQUAL_64(0x0000000012340004, x4); - CHECK_EQUAL_64(0x0000000012340005, x5); - CHECK_EQUAL_64(0x0000000012340006, x6); - CHECK_EQUAL_64(0x0000000012340007, x7); - - CHECK_EQUAL_FP64(123400.0, d0); - CHECK_EQUAL_FP64(123401.0, d1); - - CHECK_EQUAL_FP32(123402.0, s2); - CHECK_EQUAL_FP32(123403.0, s3); - CHECK_EQUAL_FP32(123404.0, s4); - CHECK_EQUAL_FP32(123405.0, s5); -} - -TEST(pop_queued) { - INIT_V8(); - SETUP(); - - START(); - - MacroAssembler::PushPopQueue queue(&masm); - - __ Mov(x0, 0x1234000000000000); - __ Mov(x1, 0x1234000100010001); - __ Mov(x2, 0x1234000200020002); - __ Mov(x3, 0x1234000300030003); - __ Mov(w4, 0x12340004); - __ Mov(w5, 0x12340005); - __ Mov(w6, 0x12340006); - __ Mov(w7, 0x12340007); - __ Fmov(d0, 123400.0); - __ Fmov(d1, 123401.0); - __ Fmov(s2, 123402.0); - __ Fmov(s3, 123403.0); - __ Fmov(s4, 123404.0); - __ Fmov(s5, 123405.0); - - // Push registers conventionally. - __ Push(x0, x1, x2, x3); - __ Push(w4, w5, w6, w7); - __ Push(d0, d1); - __ Push(s2, s3, s4, s5); - - // Queue up a pop. - queue.Queue(s5); - queue.Queue(s4); - queue.Queue(s3); - queue.Queue(s2); - - queue.Queue(d1); - queue.Queue(d0); - - queue.Queue(w7); - queue.Queue(w6); - queue.Queue(w5); - queue.Queue(w4); - - queue.Queue(x3); - queue.Queue(x2); - queue.Queue(x1); - queue.Queue(x0); - - Clobber(&masm, CPURegList(CPURegister::kRegister, kXRegSizeInBits, 0, 8)); - Clobber(&masm, CPURegList(CPURegister::kVRegister, kDRegSizeInBits, 0, 6)); - - // Actually pop them. - queue.PopQueued(); - - END(); - - RUN(); - - CHECK_EQUAL_64(0x1234000000000000, x0); - CHECK_EQUAL_64(0x1234000100010001, x1); - CHECK_EQUAL_64(0x1234000200020002, x2); - CHECK_EQUAL_64(0x1234000300030003, x3); - - CHECK_EQUAL_64(0x0000000012340004, x4); - CHECK_EQUAL_64(0x0000000012340005, x5); - CHECK_EQUAL_64(0x0000000012340006, x6); - CHECK_EQUAL_64(0x0000000012340007, x7); - - CHECK_EQUAL_FP64(123400.0, d0); - CHECK_EQUAL_FP64(123401.0, d1); - - CHECK_EQUAL_FP32(123402.0, s2); - CHECK_EQUAL_FP32(123403.0, s3); - CHECK_EQUAL_FP32(123404.0, s4); - CHECK_EQUAL_FP32(123405.0, s5); -} - TEST(copy_slots_down) { INIT_V8(); SETUP(); @@ -12759,146 +12601,6 @@ TEST(copy_noop) { CHECK_EQUAL_64(0, x16); } -TEST(jump_both_smi) { - INIT_V8(); - SETUP(); - - Label cond_pass_00, cond_pass_01, cond_pass_10, cond_pass_11; - Label cond_fail_00, cond_fail_01, cond_fail_10, cond_fail_11; - Label return1, return2, return3, done; - - START(); - - __ Mov(x0, 0x5555555500000001UL); // A pointer. - __ Mov(x1, 0xAAAAAAAA00000001UL); // A pointer. - __ Mov(x2, 0x1234567800000000UL); // A smi. - __ Mov(x3, 0x8765432100000000UL); // A smi. - __ Mov(x4, 0xDEAD); - __ Mov(x5, 0xDEAD); - __ Mov(x6, 0xDEAD); - __ Mov(x7, 0xDEAD); - - __ JumpIfBothSmi(x0, x1, &cond_pass_00, &cond_fail_00); - __ Bind(&return1); - __ JumpIfBothSmi(x0, x2, &cond_pass_01, &cond_fail_01); - __ Bind(&return2); - __ JumpIfBothSmi(x2, x1, &cond_pass_10, &cond_fail_10); - __ Bind(&return3); - __ JumpIfBothSmi(x2, x3, &cond_pass_11, &cond_fail_11); - - __ Bind(&cond_fail_00); - __ Mov(x4, 0); - __ B(&return1); - __ Bind(&cond_pass_00); - __ Mov(x4, 1); - __ B(&return1); - - __ Bind(&cond_fail_01); - __ Mov(x5, 0); - __ B(&return2); - __ Bind(&cond_pass_01); - __ Mov(x5, 1); - __ B(&return2); - - __ Bind(&cond_fail_10); - __ Mov(x6, 0); - __ B(&return3); - __ Bind(&cond_pass_10); - __ Mov(x6, 1); - __ B(&return3); - - __ Bind(&cond_fail_11); - __ Mov(x7, 0); - __ B(&done); - __ Bind(&cond_pass_11); - __ Mov(x7, 1); - - __ Bind(&done); - - END(); - - RUN(); - - CHECK_EQUAL_64(0x5555555500000001UL, x0); - CHECK_EQUAL_64(0xAAAAAAAA00000001UL, x1); - CHECK_EQUAL_64(0x1234567800000000UL, x2); - CHECK_EQUAL_64(0x8765432100000000UL, x3); - CHECK_EQUAL_64(0, x4); - CHECK_EQUAL_64(0, x5); - CHECK_EQUAL_64(0, x6); - CHECK_EQUAL_64(1, x7); -} - -TEST(jump_either_smi) { - INIT_V8(); - SETUP(); - - Label cond_pass_00, cond_pass_01, cond_pass_10, cond_pass_11; - Label cond_fail_00, cond_fail_01, cond_fail_10, cond_fail_11; - Label return1, return2, return3, done; - - START(); - - __ Mov(x0, 0x5555555500000001UL); // A pointer. - __ Mov(x1, 0xAAAAAAAA00000001UL); // A pointer. - __ Mov(x2, 0x1234567800000000UL); // A smi. - __ Mov(x3, 0x8765432100000000UL); // A smi. - __ Mov(x4, 0xDEAD); - __ Mov(x5, 0xDEAD); - __ Mov(x6, 0xDEAD); - __ Mov(x7, 0xDEAD); - - __ JumpIfEitherSmi(x0, x1, &cond_pass_00, &cond_fail_00); - __ Bind(&return1); - __ JumpIfEitherSmi(x0, x2, &cond_pass_01, &cond_fail_01); - __ Bind(&return2); - __ JumpIfEitherSmi(x2, x1, &cond_pass_10, &cond_fail_10); - __ Bind(&return3); - __ JumpIfEitherSmi(x2, x3, &cond_pass_11, &cond_fail_11); - - __ Bind(&cond_fail_00); - __ Mov(x4, 0); - __ B(&return1); - __ Bind(&cond_pass_00); - __ Mov(x4, 1); - __ B(&return1); - - __ Bind(&cond_fail_01); - __ Mov(x5, 0); - __ B(&return2); - __ Bind(&cond_pass_01); - __ Mov(x5, 1); - __ B(&return2); - - __ Bind(&cond_fail_10); - __ Mov(x6, 0); - __ B(&return3); - __ Bind(&cond_pass_10); - __ Mov(x6, 1); - __ B(&return3); - - __ Bind(&cond_fail_11); - __ Mov(x7, 0); - __ B(&done); - __ Bind(&cond_pass_11); - __ Mov(x7, 1); - - __ Bind(&done); - - END(); - - RUN(); - - CHECK_EQUAL_64(0x5555555500000001UL, x0); - CHECK_EQUAL_64(0xAAAAAAAA00000001UL, x1); - CHECK_EQUAL_64(0x1234567800000000UL, x2); - CHECK_EQUAL_64(0x8765432100000000UL, x3); - CHECK_EQUAL_64(0, x4); - CHECK_EQUAL_64(1, x5); - CHECK_EQUAL_64(1, x6); - CHECK_EQUAL_64(1, x7); -} - TEST(noreg) { // This test doesn't generate any code, but it verifies some invariants // related to NoReg. @@ -14722,8 +14424,9 @@ TEST(pool_size) { HandleScope handle_scope(isolate); CodeDesc desc; masm.GetCode(isolate, &desc); - Handle<Code> code = - isolate->factory()->NewCode(desc, Code::STUB, masm.CodeObject()); + Handle<Code> code = Factory::CodeBuilder(isolate, desc, Code::STUB) + .set_self_reference(masm.CodeObject()) + .Build(); unsigned pool_count = 0; int pool_mask = RelocInfo::ModeMask(RelocInfo::CONST_POOL) | |