| Index: runtime/vm/assembler_arm64_test.cc
|
| diff --git a/runtime/vm/assembler_arm64_test.cc b/runtime/vm/assembler_arm64_test.cc
|
| index ea2d2dfc8f8381e7194daceee3521794bf638039..1bd0644ace30684dd72016e35b0c5ea9f293c1f5 100644
|
| --- a/runtime/vm/assembler_arm64_test.cc
|
| +++ b/runtime/vm/assembler_arm64_test.cc
|
| @@ -137,8 +137,8 @@ ASSEMBLER_TEST_GENERATE(Movk0, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(Movk0, test) {
|
| typedef int64_t (*Int64Return)() DART_UNUSED;
|
| - EXPECT_EQ(
|
| - 42LL | (1LL << 48), EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| + EXPECT_EQ(42LL | (1LL << 48),
|
| + EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| }
|
|
|
|
|
| @@ -151,8 +151,8 @@ ASSEMBLER_TEST_GENERATE(Movk1, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(Movk1, test) {
|
| typedef int64_t (*Int64Return)() DART_UNUSED;
|
| - EXPECT_EQ(
|
| - (42LL << 16) | 1, EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| + EXPECT_EQ((42LL << 16) | 1,
|
| + EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| }
|
|
|
|
|
| @@ -165,8 +165,8 @@ ASSEMBLER_TEST_GENERATE(Movk2, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(Movk2, test) {
|
| typedef int64_t (*Int64Return)() DART_UNUSED;
|
| - EXPECT_EQ(
|
| - (42LL << 32) | 1, EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| + EXPECT_EQ((42LL << 32) | 1,
|
| + EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| }
|
|
|
|
|
| @@ -179,8 +179,8 @@ ASSEMBLER_TEST_GENERATE(Movk3, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(Movk3, test) {
|
| typedef int64_t (*Int64Return)() DART_UNUSED;
|
| - EXPECT_EQ(
|
| - (42LL << 48) | 1, EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| + EXPECT_EQ((42LL << 48) | 1,
|
| + EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| }
|
|
|
|
|
| @@ -255,7 +255,7 @@ ASSEMBLER_TEST_RUN(AddASRReg, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(AddASRNegReg, assembler) {
|
| __ movz(R0, Immediate(43), 0);
|
| - __ movn(R1, Immediate(0), 0); // R1 <- -1
|
| + __ movn(R1, Immediate(0), 0); // R1 <- -1
|
| __ add(R1, ZR, Operand(R1, LSL, 3)); // R1 <- -8
|
| __ add(R0, R0, Operand(R1, ASR, 3)); // R0 <- 43 + (-8 >> 3)
|
| __ ret();
|
| @@ -272,7 +272,7 @@ ASSEMBLER_TEST_RUN(AddASRNegReg, test) {
|
| ASSEMBLER_TEST_GENERATE(AddExtReg, assembler) {
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(0xffff), 0);
|
| - __ movk(R1, Immediate(0xffff), 1); // R1 <- -1 (32-bit)
|
| + __ movk(R1, Immediate(0xffff), 1); // R1 <- -1 (32-bit)
|
| __ add(R0, R0, Operand(R1, SXTW, 0)); // R0 <- R0 + (sign extended R1)
|
| __ ret();
|
| }
|
| @@ -289,8 +289,8 @@ ASSEMBLER_TEST_GENERATE(AddCarryInOut, assembler) {
|
| __ LoadImmediate(R1, 1);
|
| __ LoadImmediate(R0, 0);
|
| __ adds(IP0, R2, Operand(R1)); // c_out = 1.
|
| - __ adcs(IP0, R2, R0); // c_in = 1, c_out = 1.
|
| - __ adc(R0, R0, R0); // c_in = 1.
|
| + __ adcs(IP0, R2, R0); // c_in = 1, c_out = 1.
|
| + __ adc(R0, R0, R0); // c_in = 1.
|
| __ ret();
|
| }
|
|
|
| @@ -305,8 +305,8 @@ ASSEMBLER_TEST_GENERATE(SubCarryInOut, assembler) {
|
| __ LoadImmediate(R1, 1);
|
| __ LoadImmediate(R0, 0);
|
| __ subs(IP0, R0, Operand(R1)); // c_out = 1.
|
| - __ sbcs(IP0, R0, R0); // c_in = 1, c_out = 1.
|
| - __ sbc(R0, R0, R0); // c_in = 1.
|
| + __ sbcs(IP0, R0, R0); // c_in = 1, c_out = 1.
|
| + __ sbc(R0, R0, R0); // c_in = 1.
|
| __ ret();
|
| }
|
|
|
| @@ -323,8 +323,8 @@ ASSEMBLER_TEST_GENERATE(Overflow, assembler) {
|
| __ LoadImmediate(R2, 0xFFFFFFFFFFFFFFFF);
|
| __ LoadImmediate(R3, 0x7FFFFFFFFFFFFFFF);
|
| __ adds(IP0, R2, Operand(R1)); // c_out = 1.
|
| - __ adcs(IP0, R3, R0); // c_in = 1, c_out = 1, v = 1.
|
| - __ csinc(R0, R0, R0, VS); // R0 = v ? R0 : R0 + 1.
|
| + __ adcs(IP0, R3, R0); // c_in = 1, c_out = 1, v = 1.
|
| + __ csinc(R0, R0, R0, VS); // R0 = v ? R0 : R0 + 1.
|
| __ ret();
|
| }
|
|
|
| @@ -340,8 +340,8 @@ ASSEMBLER_TEST_GENERATE(WordAddCarryInOut, assembler) {
|
| __ LoadImmediate(R1, 1);
|
| __ LoadImmediate(R0, 0);
|
| __ addsw(IP0, R2, Operand(R1)); // c_out = 1.
|
| - __ adcsw(IP0, R2, R0); // c_in = 1, c_out = 1.
|
| - __ adcw(R0, R0, R0); // c_in = 1.
|
| + __ adcsw(IP0, R2, R0); // c_in = 1, c_out = 1.
|
| + __ adcw(R0, R0, R0); // c_in = 1.
|
| __ ret();
|
| }
|
|
|
| @@ -356,8 +356,8 @@ ASSEMBLER_TEST_GENERATE(WordSubCarryInOut, assembler) {
|
| __ LoadImmediate(R1, 1);
|
| __ LoadImmediate(R0, 0);
|
| __ subsw(IP0, R0, Operand(R1)); // c_out = 1.
|
| - __ sbcsw(IP0, R0, R0); // c_in = 1, c_out = 1.
|
| - __ sbcw(R0, R0, R0); // c_in = 1.
|
| + __ sbcsw(IP0, R0, R0); // c_in = 1, c_out = 1.
|
| + __ sbcw(R0, R0, R0); // c_in = 1.
|
| __ ret();
|
| }
|
|
|
| @@ -374,8 +374,8 @@ ASSEMBLER_TEST_GENERATE(WordOverflow, assembler) {
|
| __ LoadImmediate(R2, 0xFFFFFFFF);
|
| __ LoadImmediate(R3, 0x7FFFFFFF);
|
| __ addsw(IP0, R2, Operand(R1)); // c_out = 1.
|
| - __ adcsw(IP0, R3, R0); // c_in = 1, c_out = 1, v = 1.
|
| - __ csinc(R0, R0, R0, VS); // R0 = v ? R0 : R0 + 1.
|
| + __ adcsw(IP0, R3, R0); // c_in = 1, c_out = 1, v = 1.
|
| + __ csinc(R0, R0, R0, VS); // R0 = v ? R0 : R0 + 1.
|
| __ ret();
|
| }
|
|
|
| @@ -391,8 +391,8 @@ ASSEMBLER_TEST_GENERATE(SimpleLoadStore, assembler) {
|
| __ SetupDartSP();
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| - __ str(R1, Address(SP, -1*kWordSize, Address::PreIndex));
|
| - __ ldr(R0, Address(SP, 1*kWordSize, Address::PostIndex));
|
| + __ str(R1, Address(SP, -1 * kWordSize, Address::PreIndex));
|
| + __ ldr(R0, Address(SP, 1 * kWordSize, Address::PostIndex));
|
| __ RestoreCSP();
|
| __ ret();
|
| }
|
| @@ -427,9 +427,9 @@ ASSEMBLER_TEST_GENERATE(LoadStoreLargeIndex, assembler) {
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| // Largest negative offset that can fit in the signed 9-bit immediate field.
|
| - __ str(R1, Address(SP, -32*kWordSize, Address::PreIndex));
|
| + __ str(R1, Address(SP, -32 * kWordSize, Address::PreIndex));
|
| // Largest positive kWordSize aligned offset that we can fit.
|
| - __ ldr(R0, Address(SP, 31*kWordSize, Address::PostIndex));
|
| + __ ldr(R0, Address(SP, 31 * kWordSize, Address::PostIndex));
|
| // Correction.
|
| __ add(SP, SP, Operand(kWordSize)); // Restore SP.
|
| __ RestoreCSP();
|
| @@ -447,9 +447,9 @@ ASSEMBLER_TEST_GENERATE(LoadStoreLargeOffset, assembler) {
|
| __ SetupDartSP();
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| - __ sub(SP, SP, Operand(512*kWordSize));
|
| - __ str(R1, Address(SP, 512*kWordSize, Address::Offset));
|
| - __ add(SP, SP, Operand(512*kWordSize));
|
| + __ sub(SP, SP, Operand(512 * kWordSize));
|
| + __ str(R1, Address(SP, 512 * kWordSize, Address::Offset));
|
| + __ add(SP, SP, Operand(512 * kWordSize));
|
| __ ldr(R0, Address(SP));
|
| __ RestoreCSP();
|
| __ ret();
|
| @@ -490,11 +490,11 @@ ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ movz(R2, Immediate(10), 0);
|
| - __ sub(SP, SP, Operand(10*kWordSize));
|
| + __ sub(SP, SP, Operand(10 * kWordSize));
|
| // Store R1 into SP + R2 * kWordSize.
|
| __ str(R1, Address(SP, R2, UXTX, Address::Scaled));
|
| __ ldr(R0, Address(SP, R2, UXTX, Address::Scaled));
|
| - __ add(SP, SP, Operand(10*kWordSize));
|
| + __ add(SP, SP, Operand(10 * kWordSize));
|
| __ RestoreCSP();
|
| __ ret();
|
| }
|
| @@ -527,8 +527,8 @@ ASSEMBLER_TEST_GENERATE(SimpleLoadStorePair, assembler) {
|
| __ SetupDartSP();
|
| __ LoadImmediate(R2, 43);
|
| __ LoadImmediate(R3, 42);
|
| - __ stp(R2, R3, Address(SP, -2*kWordSize, Address::PairPreIndex));
|
| - __ ldp(R0, R1, Address(SP, 2*kWordSize, Address::PairPostIndex));
|
| + __ stp(R2, R3, Address(SP, -2 * kWordSize, Address::PairPreIndex));
|
| + __ ldp(R0, R1, Address(SP, 2 * kWordSize, Address::PairPostIndex));
|
| __ sub(R0, R0, Operand(R1));
|
| __ RestoreCSP();
|
| __ ret();
|
| @@ -572,7 +572,7 @@ ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
|
| __ stxr(TMP, R1, SP); // IP == 0, success
|
| __ cmp(TMP, Operand(0));
|
| __ b(&retry, NE); // NE if context switch occurred between ldrex and strex.
|
| - __ Pop(R0); // 42
|
| + __ Pop(R0); // 42
|
| __ RestoreCSP();
|
| __ ret();
|
| }
|
| @@ -591,9 +591,9 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
|
| __ movz(R1, Immediate(42), 0);
|
| __ Push(R0);
|
| __ ldxr(R0, SP);
|
| - __ clrex(); // Simulate a context switch.
|
| + __ clrex(); // Simulate a context switch.
|
| __ stxr(TMP, R1, SP); // IP == 1, failure
|
| - __ Pop(R0); // 40
|
| + __ Pop(R0); // 40
|
| __ add(R0, R0, Operand(TMP));
|
| __ RestoreCSP();
|
| __ ret();
|
| @@ -666,7 +666,7 @@ ASSEMBLER_TEST_RUN(OrrRegs, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(OrnRegs, assembler) {
|
| __ movz(R1, Immediate(32), 0);
|
| - __ movn(R2, Immediate(0), 0); // R2 <- 0xffffffffffffffff.
|
| + __ movn(R2, Immediate(0), 0); // R2 <- 0xffffffffffffffff.
|
| __ movk(R2, Immediate(0xffd5), 0); // R2 <- 0xffffffffffffffe5.
|
| __ orn(R0, R1, Operand(R2));
|
| __ ret();
|
| @@ -1396,7 +1396,7 @@ ASSEMBLER_TEST_RUN(Sdiv_zero, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(Udiv_corner, assembler) {
|
| __ movz(R0, Immediate(0x8000), 3); // R0 <- 0x8000000000000000
|
| - __ movn(R1, Immediate(0), 0); // R1 <- 0xffffffffffffffff
|
| + __ movn(R1, Immediate(0), 0); // R1 <- 0xffffffffffffffff
|
| __ udiv(R2, R0, R1);
|
| __ mov(R0, R2);
|
| __ ret();
|
| @@ -1412,7 +1412,7 @@ ASSEMBLER_TEST_RUN(Udiv_corner, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(Sdiv_corner, assembler) {
|
| __ movz(R3, Immediate(0x8000), 3); // R0 <- 0x8000000000000000
|
| - __ movn(R1, Immediate(0), 0); // R1 <- 0xffffffffffffffff
|
| + __ movn(R1, Immediate(0), 0); // R1 <- 0xffffffffffffffff
|
| __ sdiv(R2, R3, R1);
|
| __ mov(R0, R2);
|
| __ ret();
|
| @@ -1545,8 +1545,8 @@ ASSEMBLER_TEST_RUN(Smulh_neg, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(Umulh, assembler) {
|
| __ movz(R1, Immediate(-1), 3); // 0xffff000000000000
|
| - __ movz(R2, Immediate(7), 3); // 0x0007000000000000
|
| - __ umulh(R0, R1, R2); // 0x0006fff900000000
|
| + __ movz(R2, Immediate(7), 3); // 0x0007000000000000
|
| + __ umulh(R0, R1, R2); // 0x0006fff900000000
|
| __ ret();
|
| }
|
|
|
| @@ -1562,7 +1562,7 @@ ASSEMBLER_TEST_GENERATE(Umaddl, assembler) {
|
| __ movn(R1, Immediate(0), 0); // W1 = 0xffffffff.
|
| __ movz(R2, Immediate(7), 0); // W2 = 7.
|
| __ movz(R3, Immediate(8), 0); // X3 = 8.
|
| - __ umaddl(R0, R1, R2, R3); // X0 = W1*W2 + X3 = 0x700000001.
|
| + __ umaddl(R0, R1, R2, R3); // X0 = W1*W2 + X3 = 0x700000001.
|
| __ ret();
|
| }
|
|
|
| @@ -1606,8 +1606,8 @@ ASSEMBLER_TEST_GENERATE(LoadImmediateMed2, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(LoadImmediateMed2, test) {
|
| typedef int64_t (*Int64Return)() DART_UNUSED;
|
| - EXPECT_EQ(
|
| - 0x4321f1234123, EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| + EXPECT_EQ(0x4321f1234123,
|
| + EXECUTE_TEST_CODE_INT64(Int64Return, test->entry()));
|
| }
|
|
|
|
|
| @@ -1695,19 +1695,17 @@ ASSEMBLER_TEST_RUN(LoadHalfWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*LoadHalfWordUnaligned)(intptr_t) DART_UNUSED;
|
| uint8_t buffer[4] = {
|
| - 0x89, 0xAB, 0xCD, 0xEF,
|
| + 0x89, 0xAB, 0xCD, 0xEF,
|
| };
|
|
|
| - EXPECT_EQ(static_cast<int16_t>(static_cast<uint16_t>(0xAB89)),
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadHalfWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[0])));
|
| - EXPECT_EQ(static_cast<int16_t>(static_cast<uint16_t>(0xCDAB)),
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadHalfWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[1])));
|
| + EXPECT_EQ(
|
| + static_cast<int16_t>(static_cast<uint16_t>(0xAB89)),
|
| + EXECUTE_TEST_CODE_INTPTR_INTPTR(LoadHalfWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[0])));
|
| + EXPECT_EQ(
|
| + static_cast<int16_t>(static_cast<uint16_t>(0xCDAB)),
|
| + EXECUTE_TEST_CODE_INTPTR_INTPTR(LoadHalfWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[1])));
|
| }
|
|
|
|
|
| @@ -1722,19 +1720,15 @@ ASSEMBLER_TEST_RUN(LoadHalfWordUnsignedUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*LoadHalfWordUnsignedUnaligned)(intptr_t) DART_UNUSED;
|
| uint8_t buffer[4] = {
|
| - 0x89, 0xAB, 0xCD, 0xEF,
|
| + 0x89, 0xAB, 0xCD, 0xEF,
|
| };
|
|
|
| - EXPECT_EQ(0xAB89,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadHalfWordUnsignedUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[0])));
|
| - EXPECT_EQ(0xCDAB,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadHalfWordUnsignedUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[1])));
|
| + EXPECT_EQ(0xAB89, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + LoadHalfWordUnsignedUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[0])));
|
| + EXPECT_EQ(0xCDAB, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + LoadHalfWordUnsignedUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[1])));
|
| }
|
|
|
|
|
| @@ -1750,23 +1744,19 @@ ASSEMBLER_TEST_RUN(StoreHalfWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*StoreHalfWordUnaligned)(intptr_t) DART_UNUSED;
|
| uint8_t buffer[4] = {
|
| - 0, 0, 0, 0,
|
| + 0, 0, 0, 0,
|
| };
|
|
|
| - EXPECT_EQ(0xABCD,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - StoreHalfWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[0])));
|
| + EXPECT_EQ(0xABCD, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + StoreHalfWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[0])));
|
| EXPECT_EQ(0xCD, buffer[0]);
|
| EXPECT_EQ(0xAB, buffer[1]);
|
| EXPECT_EQ(0, buffer[2]);
|
|
|
| - EXPECT_EQ(0xABCD,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - StoreHalfWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[1])));
|
| + EXPECT_EQ(0xABCD, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + StoreHalfWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[1])));
|
| EXPECT_EQ(0xCD, buffer[1]);
|
| EXPECT_EQ(0xAB, buffer[2]);
|
| EXPECT_EQ(0, buffer[3]);
|
| @@ -1783,31 +1773,24 @@ ASSEMBLER_TEST_GENERATE(LoadWordUnaligned, assembler) {
|
| ASSEMBLER_TEST_RUN(LoadWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef int32_t (*LoadWordUnaligned)(intptr_t) DART_UNUSED;
|
| - uint8_t buffer[8] = {
|
| - 0x12, 0x34, 0x56, 0x78,
|
| - 0x9A, 0xBC, 0xDE, 0xF0
|
| - };
|
| + uint8_t buffer[8] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0};
|
|
|
| - EXPECT_EQ(static_cast<int32_t>(0x78563412),
|
| - EXECUTE_TEST_CODE_INT32_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[0])));
|
| - EXPECT_EQ(static_cast<int32_t>(0x9A785634),
|
| - EXECUTE_TEST_CODE_INT32_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[1])));
|
| - EXPECT_EQ(static_cast<int32_t>(0xBC9A7856),
|
| - EXECUTE_TEST_CODE_INT32_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[2])));
|
| - EXPECT_EQ(static_cast<int32_t>(0xDEBC9A78),
|
| - EXECUTE_TEST_CODE_INT32_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[3])));
|
| + EXPECT_EQ(
|
| + static_cast<int32_t>(0x78563412),
|
| + EXECUTE_TEST_CODE_INT32_INTPTR(LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[0])));
|
| + EXPECT_EQ(
|
| + static_cast<int32_t>(0x9A785634),
|
| + EXECUTE_TEST_CODE_INT32_INTPTR(LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[1])));
|
| + EXPECT_EQ(
|
| + static_cast<int32_t>(0xBC9A7856),
|
| + EXECUTE_TEST_CODE_INT32_INTPTR(LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[2])));
|
| + EXPECT_EQ(
|
| + static_cast<int32_t>(0xDEBC9A78),
|
| + EXECUTE_TEST_CODE_INT32_INTPTR(LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[3])));
|
| }
|
|
|
|
|
| @@ -1822,46 +1805,35 @@ ASSEMBLER_TEST_GENERATE(StoreWordUnaligned, assembler) {
|
| ASSEMBLER_TEST_RUN(StoreWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*StoreWordUnaligned)(intptr_t) DART_UNUSED;
|
| - uint8_t buffer[8] = {
|
| - 0, 0, 0, 0,
|
| - 0, 0, 0, 0
|
| - };
|
| + uint8_t buffer[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
|
|
| - EXPECT_EQ(0x12345678,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - StoreWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[0])));
|
| + EXPECT_EQ(0x12345678, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + StoreWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[0])));
|
| EXPECT_EQ(0x78, buffer[0]);
|
| EXPECT_EQ(0x56, buffer[1]);
|
| EXPECT_EQ(0x34, buffer[2]);
|
| EXPECT_EQ(0x12, buffer[3]);
|
|
|
| - EXPECT_EQ(0x12345678,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - StoreWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[1])));
|
| + EXPECT_EQ(0x12345678, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + StoreWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[1])));
|
| EXPECT_EQ(0x78, buffer[1]);
|
| EXPECT_EQ(0x56, buffer[2]);
|
| EXPECT_EQ(0x34, buffer[3]);
|
| EXPECT_EQ(0x12, buffer[4]);
|
|
|
| - EXPECT_EQ(0x12345678,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - StoreWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[2])));
|
| + EXPECT_EQ(0x12345678, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + StoreWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[2])));
|
| EXPECT_EQ(0x78, buffer[2]);
|
| EXPECT_EQ(0x56, buffer[3]);
|
| EXPECT_EQ(0x34, buffer[4]);
|
| EXPECT_EQ(0x12, buffer[5]);
|
|
|
| - EXPECT_EQ(0x12345678,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - StoreWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[3])));
|
| + EXPECT_EQ(0x12345678, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + StoreWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[3])));
|
| EXPECT_EQ(0x78, buffer[3]);
|
| EXPECT_EQ(0x56, buffer[4]);
|
| EXPECT_EQ(0x34, buffer[5]);
|
| @@ -2108,7 +2080,8 @@ ASSEMBLER_TEST_GENERATE(Fmovdi2, assembler) {
|
| ASSEMBLER_TEST_RUN(Fmovdi2, test) {
|
| typedef double (*DoubleReturn)() DART_UNUSED;
|
| EXPECT_FLOAT_EQ(123412983.1324524315,
|
| - EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry()), 0.0001f);
|
| + EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry()),
|
| + 0.0001f);
|
| }
|
|
|
|
|
| @@ -2143,8 +2116,8 @@ ASSEMBLER_TEST_RUN(Fmovdr, test) {
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdPrePostIndex, assembler) {
|
| __ SetupDartSP();
|
| __ LoadDImmediate(V1, 42.0);
|
| - __ fstrd(V1, Address(SP, -1*kWordSize, Address::PreIndex));
|
| - __ fldrd(V0, Address(SP, 1*kWordSize, Address::PostIndex));
|
| + __ fstrd(V1, Address(SP, -1 * kWordSize, Address::PreIndex));
|
| + __ fldrd(V0, Address(SP, 1 * kWordSize, Address::PostIndex));
|
| __ RestoreCSP();
|
| __ ret();
|
| }
|
| @@ -2160,8 +2133,8 @@ ASSEMBLER_TEST_GENERATE(FldrsFstrsPrePostIndex, assembler) {
|
| __ SetupDartSP();
|
| __ LoadDImmediate(V1, 42.0);
|
| __ fcvtsd(V2, V1);
|
| - __ fstrs(V2, Address(SP, -1*kWordSize, Address::PreIndex));
|
| - __ fldrs(V3, Address(SP, 1*kWordSize, Address::PostIndex));
|
| + __ fstrs(V2, Address(SP, -1 * kWordSize, Address::PreIndex));
|
| + __ fldrs(V3, Address(SP, 1 * kWordSize, Address::PostIndex));
|
| __ fcvtds(V0, V3);
|
| __ RestoreCSP();
|
| __ ret();
|
| @@ -2385,9 +2358,9 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeIndex, assembler) {
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| // Largest negative offset that can fit in the signed 9-bit immediate field.
|
| - __ fstrd(V1, Address(SP, -32*kWordSize, Address::PreIndex));
|
| + __ fstrd(V1, Address(SP, -32 * kWordSize, Address::PreIndex));
|
| // Largest positive kWordSize aligned offset that we can fit.
|
| - __ fldrd(V0, Address(SP, 31*kWordSize, Address::PostIndex));
|
| + __ fldrd(V0, Address(SP, 31 * kWordSize, Address::PostIndex));
|
| // Correction.
|
| __ add(SP, SP, Operand(kWordSize)); // Restore SP.
|
| __ RestoreCSP();
|
| @@ -2405,9 +2378,9 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeOffset, assembler) {
|
| __ SetupDartSP();
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| - __ sub(SP, SP, Operand(512*kWordSize));
|
| - __ fstrd(V1, Address(SP, 512*kWordSize, Address::Offset));
|
| - __ add(SP, SP, Operand(512*kWordSize));
|
| + __ sub(SP, SP, Operand(512 * kWordSize));
|
| + __ fstrd(V1, Address(SP, 512 * kWordSize, Address::Offset));
|
| + __ add(SP, SP, Operand(512 * kWordSize));
|
| __ fldrd(V0, Address(SP));
|
| __ RestoreCSP();
|
| __ ret();
|
| @@ -2448,11 +2421,11 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdScaledReg, assembler) {
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ movz(R2, Immediate(10), 0);
|
| - __ sub(SP, SP, Operand(10*kWordSize));
|
| + __ sub(SP, SP, Operand(10 * kWordSize));
|
| // Store V1 into SP + R2 * kWordSize.
|
| __ fstrd(V1, Address(SP, R2, UXTX, Address::Scaled));
|
| __ fldrd(V0, Address(SP, R2, UXTX, Address::Scaled));
|
| - __ add(SP, SP, Operand(10*kWordSize));
|
| + __ add(SP, SP, Operand(10 * kWordSize));
|
| __ RestoreCSP();
|
| __ ret();
|
| }
|
| @@ -3578,9 +3551,12 @@ ASSEMBLER_TEST_RUN(Vsqrtd, test) {
|
| // This is the same function as in the Simulator.
|
| static float arm_recip_estimate(float a) {
|
| // From the ARM Architecture Reference Manual A2-85.
|
| - if (isinf(a) || (fabs(a) >= exp2f(126))) return 0.0;
|
| - else if (a == 0.0) return kPosInfinity;
|
| - else if (isnan(a)) return a;
|
| + if (isinf(a) || (fabs(a) >= exp2f(126)))
|
| + return 0.0;
|
| + else if (a == 0.0)
|
| + return kPosInfinity;
|
| + else if (isnan(a))
|
| + return a;
|
|
|
| uint32_t a_bits = bit_cast<uint32_t, float>(a);
|
| // scaled = '0011 1111 1110' : a<22:0> : Zeros(29)
|
| @@ -3600,7 +3576,7 @@ static float arm_recip_estimate(float a) {
|
| // r in units of 1/256 rounded to nearest.
|
| int32_t s = static_cast<int32_t>(256.0 * r + 0.5);
|
| double estimate = static_cast<double>(s) / 256.0;
|
| - ASSERT((estimate >= 1.0) && (estimate <= (511.0/256.0)));
|
| + ASSERT((estimate >= 1.0) && (estimate <= (511.0 / 256.0)));
|
|
|
| // result = sign : result_exp<7:0> : estimate<51:29>
|
| int32_t result_bits =
|
| @@ -3687,9 +3663,12 @@ ASSEMBLER_TEST_RUN(VRecps, test) {
|
|
|
| static float arm_reciprocal_sqrt_estimate(float a) {
|
| // From the ARM Architecture Reference Manual A2-87.
|
| - if (isinf(a) || (fabs(a) >= exp2f(126))) return 0.0;
|
| - else if (a == 0.0) return kPosInfinity;
|
| - else if (isnan(a)) return a;
|
| + if (isinf(a) || (fabs(a) >= exp2f(126)))
|
| + return 0.0;
|
| + else if (a == 0.0)
|
| + return kPosInfinity;
|
| + else if (isnan(a))
|
| + return a;
|
|
|
| uint32_t a_bits = bit_cast<uint32_t, float>(a);
|
| uint64_t scaled;
|
| @@ -3727,10 +3706,11 @@ static float arm_reciprocal_sqrt_estimate(float a) {
|
| // r in units of 1/256 rounded to nearest.
|
| int32_t s = static_cast<int>(256.0 * r + 0.5);
|
| double estimate = static_cast<double>(s) / 256.0;
|
| - ASSERT((estimate >= 1.0) && (estimate <= (511.0/256.0)));
|
| + ASSERT((estimate >= 1.0) && (estimate <= (511.0 / 256.0)));
|
|
|
| // result = 0 : result_exp<7:0> : estimate<51:29>
|
| - int32_t result_bits = ((result_exp & 0xff) << 23) |
|
| + int32_t result_bits =
|
| + ((result_exp & 0xff) << 23) |
|
| ((bit_cast<uint64_t, double>(estimate) >> 29) & 0x7fffff);
|
| return bit_cast<float, int32_t>(result_bits);
|
| }
|
| @@ -3756,16 +3736,16 @@ ASSEMBLER_TEST_RUN(Vrsqrtes, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vrsqrtss, assembler) {
|
| - __ LoadDImmediate(V1, 5.0);
|
| - __ LoadDImmediate(V2, 10.0);
|
| + __ LoadDImmediate(V1, 5.0);
|
| + __ LoadDImmediate(V2, 10.0);
|
|
|
| - __ fcvtsd(V1, V1);
|
| - __ fcvtsd(V2, V2);
|
| + __ fcvtsd(V1, V1);
|
| + __ fcvtsd(V2, V2);
|
|
|
| - __ vrsqrtss(V0, V1, V2);
|
| + __ vrsqrtss(V0, V1, V2);
|
|
|
| - __ fcvtds(V0, V0);
|
| - __ ret();
|
| + __ fcvtds(V0, V0);
|
| + __ ret();
|
| }
|
|
|
|
|
| @@ -3773,18 +3753,18 @@ ASSEMBLER_TEST_RUN(Vrsqrtss, test) {
|
| EXPECT(test != NULL);
|
| typedef double (*DoubleReturn)() DART_UNUSED;
|
| double res = EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry());
|
| - EXPECT_FLOAT_EQ((3.0 - 10.0 * 5.0)/2.0, res, 0.0001);
|
| + EXPECT_FLOAT_EQ((3.0 - 10.0 * 5.0) / 2.0, res, 0.0001);
|
| }
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(ReciprocalSqrt, assembler) {
|
| - __ LoadDImmediate(V1, 147000.0);
|
| - __ fcvtsd(V1, V1);
|
| + __ LoadDImmediate(V1, 147000.0);
|
| + __ fcvtsd(V1, V1);
|
|
|
| - __ VRSqrts(V0, V1);
|
| + __ VRSqrts(V0, V1);
|
|
|
| - __ fcvtds(V0, V0);
|
| - __ ret();
|
| + __ fcvtds(V0, V0);
|
| + __ ret();
|
| }
|
|
|
|
|
| @@ -3792,7 +3772,7 @@ ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
|
| EXPECT(test != NULL);
|
| typedef double (*DoubleReturn)() DART_UNUSED;
|
| double res = EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry());
|
| - EXPECT_FLOAT_EQ(1.0/sqrt(147000.0), res, 0.0001);
|
| + EXPECT_FLOAT_EQ(1.0 / sqrt(147000.0), res, 0.0001);
|
| }
|
|
|
|
|
| @@ -3807,8 +3787,7 @@ ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
|
| __ Push(THR);
|
| __ Push(LR);
|
| __ mov(THR, R2);
|
| - __ StoreIntoObject(R1,
|
| - FieldAddress(R1, GrowableObjectArray::data_offset()),
|
| + __ StoreIntoObject(R1, FieldAddress(R1, GrowableObjectArray::data_offset()),
|
| R0);
|
| __ Pop(LR);
|
| __ Pop(THR);
|
|
|