| Index: runtime/vm/assembler_arm_test.cc
|
| diff --git a/runtime/vm/assembler_arm_test.cc b/runtime/vm/assembler_arm_test.cc
|
| index 8fe9960f33c5f5a4c984f3400d92fb9efd897912..98fc5081f0dd9a64114d44f0498819dadd80648b 100644
|
| --- a/runtime/vm/assembler_arm_test.cc
|
| +++ b/runtime/vm/assembler_arm_test.cc
|
| @@ -108,19 +108,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])));
|
| }
|
|
|
|
|
| @@ -135,19 +133,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])));
|
| }
|
|
|
|
|
| @@ -163,23 +157,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]);
|
| @@ -196,31 +186,20 @@ ASSEMBLER_TEST_GENERATE(LoadWordUnaligned, assembler) {
|
| ASSEMBLER_TEST_RUN(LoadWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_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(0x78563412,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[0])));
|
| - EXPECT_EQ(0x9A785634,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[1])));
|
| - EXPECT_EQ(0xBC9A7856,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[2])));
|
| - EXPECT_EQ(0xDEBC9A78,
|
| - EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| - LoadWordUnaligned,
|
| - test->entry(),
|
| - reinterpret_cast<intptr_t>(&buffer[3])));
|
| + EXPECT_EQ(0x78563412, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[0])));
|
| + EXPECT_EQ(0x9A785634, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[1])));
|
| + EXPECT_EQ(0xBC9A7856, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[2])));
|
| + EXPECT_EQ(0xDEBC9A78, EXECUTE_TEST_CODE_INTPTR_INTPTR(
|
| + LoadWordUnaligned, test->entry(),
|
| + reinterpret_cast<intptr_t>(&buffer[3])));
|
| }
|
|
|
|
|
| @@ -235,46 +214,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]);
|
| @@ -286,14 +254,14 @@ ASSEMBLER_TEST_GENERATE(Vmov, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ mov(R3, Operand(43));
|
| __ mov(R1, Operand(41));
|
| - __ vmovsrr(S1, R1, R3); // S1:S2 = 41:43
|
| - __ vmovs(S0, S2); // S0 = S2, S0:S1 == 43:41
|
| - __ vmovd(D2, D0); // D2 = D0, S4:S5 == 43:41
|
| - __ vmovrs(R3, S5); // R3 = S5, R3 == 41
|
| - __ vmovrrs(R1, R2, S4); // R1:R2 = S4:S5, R1:R2 == 43:41
|
| - __ vmovdrr(D3, R3, R2); // D3 = R3:R2, S6:S7 == 41:41
|
| - __ vmovdr(D3, 1, R1); // D3[1] == S7 = R1, S6:S7 == 41:43
|
| - __ vmovrrd(R0, R1, D3); // R0:R1 = D3, R0:R1 == 41:43
|
| + __ vmovsrr(S1, R1, R3); // S1:S2 = 41:43
|
| + __ vmovs(S0, S2); // S0 = S2, S0:S1 == 43:41
|
| + __ vmovd(D2, D0); // D2 = D0, S4:S5 == 43:41
|
| + __ vmovrs(R3, S5); // R3 = S5, R3 == 41
|
| + __ vmovrrs(R1, R2, S4); // R1:R2 = S4:S5, R1:R2 == 43:41
|
| + __ vmovdrr(D3, R3, R2); // D3 = R3:R2, S6:S7 == 41:41
|
| + __ vmovdr(D3, 1, R1); // D3[1] == S7 = R1, S6:S7 == 41:43
|
| + __ vmovrrd(R0, R1, D3); // R0:R1 = D3, R0:R1 == 41:43
|
| __ sub(R0, R1, Operand(R0)); // 43-41
|
| }
|
| __ bx(LR);
|
| @@ -328,7 +296,7 @@ ASSEMBLER_TEST_RUN(SingleVLoadStore, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef float (*SingleVLoadStore)() DART_UNUSED;
|
| float res = EXECUTE_TEST_CODE_FLOAT(SingleVLoadStore, test->entry());
|
| - EXPECT_FLOAT_EQ(2*12.3f, res, 0.001f);
|
| + EXPECT_FLOAT_EQ(2 * 12.3f, res, 0.001f);
|
| }
|
| }
|
|
|
| @@ -357,7 +325,7 @@ ASSEMBLER_TEST_RUN(SingleVShiftLoadStore, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef float (*SingleVLoadStore)() DART_UNUSED;
|
| float res = EXECUTE_TEST_CODE_FLOAT(SingleVLoadStore, test->entry());
|
| - EXPECT_FLOAT_EQ(2*12.3f, res, 0.001f);
|
| + EXPECT_FLOAT_EQ(2 * 12.3f, res, 0.001f);
|
| }
|
| }
|
|
|
| @@ -385,7 +353,7 @@ ASSEMBLER_TEST_RUN(DoubleVLoadStore, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef double (*DoubleVLoadStore)() DART_UNUSED;
|
| float res = EXECUTE_TEST_CODE_DOUBLE(DoubleVLoadStore, test->entry());
|
| - EXPECT_FLOAT_EQ(2*12.3f, res, 0.001f);
|
| + EXPECT_FLOAT_EQ(2 * 12.3f, res, 0.001f);
|
| }
|
| }
|
|
|
| @@ -394,13 +362,13 @@ ASSEMBLER_TEST_GENERATE(SingleFPOperations, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadSImmediate(S0, 12.3f);
|
| __ LoadSImmediate(S1, 3.4f);
|
| - __ vnegs(S0, S0); // -12.3f
|
| - __ vabss(S0, S0); // 12.3f
|
| + __ vnegs(S0, S0); // -12.3f
|
| + __ vabss(S0, S0); // 12.3f
|
| __ vadds(S0, S0, S1); // 15.7f
|
| __ vmuls(S0, S0, S1); // 53.38f
|
| __ vsubs(S0, S0, S1); // 49.98f
|
| __ vdivs(S0, S0, S1); // 14.7f
|
| - __ vsqrts(S0, S0); // 3.8340579f
|
| + __ vsqrts(S0, S0); // 3.8340579f
|
| }
|
| __ bx(LR);
|
| }
|
| @@ -420,13 +388,13 @@ ASSEMBLER_TEST_GENERATE(DoubleFPOperations, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadDImmediate(D0, 12.3, R0);
|
| __ LoadDImmediate(D1, 3.4, R0);
|
| - __ vnegd(D0, D0); // -12.3
|
| - __ vabsd(D0, D0); // 12.3
|
| + __ vnegd(D0, D0); // -12.3
|
| + __ vabsd(D0, D0); // 12.3
|
| __ vaddd(D0, D0, D1); // 15.7
|
| __ vmuld(D0, D0, D1); // 53.38
|
| __ vsubd(D0, D0, D1); // 49.98
|
| __ vdivd(D0, D0, D1); // 14.7
|
| - __ vsqrtd(D0, D0); // 3.8340579
|
| + __ vsqrtd(D0, D0); // 3.8340579
|
| }
|
| __ bx(LR);
|
| }
|
| @@ -479,8 +447,8 @@ ASSEMBLER_TEST_RUN(IntToDoubleConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef double (*IntToDoubleConversionCode)() DART_UNUSED;
|
| - double res = EXECUTE_TEST_CODE_DOUBLE(IntToDoubleConversionCode,
|
| - test->entry());
|
| + double res =
|
| + EXECUTE_TEST_CODE_DOUBLE(IntToDoubleConversionCode, test->entry());
|
| EXPECT_FLOAT_EQ(6.0, res, 0.001);
|
| }
|
| }
|
| @@ -506,8 +474,8 @@ ASSEMBLER_TEST_RUN(LongToDoubleConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef double (*LongToDoubleConversionCode)() DART_UNUSED;
|
| - double res = EXECUTE_TEST_CODE_DOUBLE(LongToDoubleConversionCode,
|
| - test->entry());
|
| + double res =
|
| + EXECUTE_TEST_CODE_DOUBLE(LongToDoubleConversionCode, test->entry());
|
| EXPECT_FLOAT_EQ(60000000000.0, res, 0.001);
|
| }
|
| }
|
| @@ -527,8 +495,8 @@ ASSEMBLER_TEST_RUN(IntToFloatConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef float (*IntToFloatConversionCode)() DART_UNUSED;
|
| - float res = EXECUTE_TEST_CODE_FLOAT(IntToFloatConversionCode,
|
| - test->entry());
|
| + float res =
|
| + EXECUTE_TEST_CODE_FLOAT(IntToFloatConversionCode, test->entry());
|
| EXPECT_FLOAT_EQ(6.0, res, 0.001);
|
| }
|
| }
|
| @@ -547,15 +515,12 @@ ASSEMBLER_TEST_RUN(FloatToIntConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef int (*FloatToIntConversion)(float arg) DART_UNUSED;
|
| - EXPECT_EQ(12,
|
| - EXECUTE_TEST_CODE_INT32_F(FloatToIntConversion, test->entry(),
|
| - 12.8f));
|
| - EXPECT_EQ(INT_MIN,
|
| - EXECUTE_TEST_CODE_INT32_F(FloatToIntConversion, test->entry(),
|
| - -FLT_MAX));
|
| - EXPECT_EQ(INT_MAX,
|
| - EXECUTE_TEST_CODE_INT32_F(FloatToIntConversion, test->entry(),
|
| - FLT_MAX));
|
| + EXPECT_EQ(12, EXECUTE_TEST_CODE_INT32_F(FloatToIntConversion, test->entry(),
|
| + 12.8f));
|
| + EXPECT_EQ(INT_MIN, EXECUTE_TEST_CODE_INT32_F(FloatToIntConversion,
|
| + test->entry(), -FLT_MAX));
|
| + EXPECT_EQ(INT_MAX, EXECUTE_TEST_CODE_INT32_F(FloatToIntConversion,
|
| + test->entry(), FLT_MAX));
|
| }
|
| }
|
|
|
| @@ -573,15 +538,12 @@ ASSEMBLER_TEST_RUN(DoubleToIntConversion, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef int (*DoubleToIntConversion)(double arg) DART_UNUSED;
|
| EXPECT(test != NULL);
|
| - EXPECT_EQ(12,
|
| - EXECUTE_TEST_CODE_INT32_D(DoubleToIntConversion, test->entry(),
|
| - 12.8));
|
| - EXPECT_EQ(INT_MIN,
|
| - EXECUTE_TEST_CODE_INT32_D(DoubleToIntConversion, test->entry(),
|
| - -DBL_MAX));
|
| - EXPECT_EQ(INT_MAX,
|
| - EXECUTE_TEST_CODE_INT32_D(DoubleToIntConversion, test->entry(),
|
| - DBL_MAX));
|
| + EXPECT_EQ(12, EXECUTE_TEST_CODE_INT32_D(DoubleToIntConversion,
|
| + test->entry(), 12.8));
|
| + EXPECT_EQ(INT_MIN, EXECUTE_TEST_CODE_INT32_D(DoubleToIntConversion,
|
| + test->entry(), -DBL_MAX));
|
| + EXPECT_EQ(INT_MAX, EXECUTE_TEST_CODE_INT32_D(DoubleToIntConversion,
|
| + test->entry(), DBL_MAX));
|
| }
|
| }
|
|
|
| @@ -599,8 +561,8 @@ ASSEMBLER_TEST_RUN(FloatToDoubleConversion, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef double (*FloatToDoubleConversionCode)() DART_UNUSED;
|
| EXPECT(test != NULL);
|
| - double res = EXECUTE_TEST_CODE_DOUBLE(FloatToDoubleConversionCode,
|
| - test->entry());
|
| + double res =
|
| + EXECUTE_TEST_CODE_DOUBLE(FloatToDoubleConversionCode, test->entry());
|
| EXPECT_FLOAT_EQ(12.8, res, 0.001);
|
| }
|
| }
|
| @@ -619,8 +581,8 @@ ASSEMBLER_TEST_RUN(DoubleToFloatConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef float (*DoubleToFloatConversionCode)() DART_UNUSED;
|
| - float res = EXECUTE_TEST_CODE_FLOAT(DoubleToFloatConversionCode,
|
| - test->entry());
|
| + float res =
|
| + EXECUTE_TEST_CODE_FLOAT(DoubleToFloatConversionCode, test->entry());
|
| EXPECT_FLOAT_EQ(12.8, res, 0.001);
|
| }
|
| }
|
| @@ -807,7 +769,7 @@ ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
|
| __ strex(IP, R1, SP); // IP == 0, success
|
| __ tst(IP, Operand(0));
|
| __ b(&retry, NE); // NE if context switch occurred between ldrex and strex.
|
| - __ Pop(R0); // 42
|
| + __ Pop(R0); // 42
|
| }
|
| __ bx(LR);
|
| }
|
| @@ -828,9 +790,9 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
|
| __ mov(R1, Operand(42));
|
| __ Push(R0);
|
| __ ldrex(R0, SP);
|
| - __ clrex(); // Simulate a context switch.
|
| + __ clrex(); // Simulate a context switch.
|
| __ strex(IP, R1, SP); // IP == 1, failure
|
| - __ Pop(R0); // 40
|
| + __ Pop(R0); // 40
|
| __ add(R0, R0, Operand(IP));
|
| }
|
| __ bx(LR);
|
| @@ -886,7 +848,7 @@ ASSEMBLER_TEST_GENERATE(AddCarryInOut, assembler) {
|
| __ mov(R0, Operand(0));
|
| __ adds(IP, R2, Operand(R1)); // c_out = 1.
|
| __ adcs(IP, R2, Operand(R0)); // c_in = 1, c_out = 1.
|
| - __ adc(R0, R0, Operand(R0)); // c_in = 1.
|
| + __ adc(R0, R0, Operand(R0)); // c_in = 1.
|
| __ bx(LR);
|
| }
|
|
|
| @@ -920,7 +882,7 @@ ASSEMBLER_TEST_GENERATE(SubCarryInOut, assembler) {
|
| __ mov(R0, Operand(0));
|
| __ subs(IP, R0, Operand(R1)); // c_out = 1.
|
| __ sbcs(IP, R0, Operand(R0)); // c_in = 1, c_out = 1.
|
| - __ sbc(R0, R0, Operand(R0)); // c_in = 1.
|
| + __ sbc(R0, R0, Operand(R0)); // c_in = 1.
|
| __ bx(LR);
|
| }
|
|
|
| @@ -968,7 +930,7 @@ ASSEMBLER_TEST_RUN(AndOrr, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(Orrs, assembler) {
|
| __ mov(R0, Operand(0));
|
| - __ tst(R0, Operand(R1)); // Set zero-flag.
|
| + __ tst(R0, Operand(R1)); // Set zero-flag.
|
| __ orrs(R0, R0, Operand(1)); // Clear zero-flag.
|
| __ bx(LR, EQ);
|
| __ mov(R0, Operand(42));
|
| @@ -1009,7 +971,7 @@ ASSEMBLER_TEST_GENERATE(QuotientRemainder, assembler) {
|
| __ vcvtdi(D2, S4);
|
| __ vdivd(D0, D1, D2);
|
| __ vcvtid(S0, D0);
|
| - __ vmovrs(R1, S0); // r1 = r0/r2
|
| + __ vmovrs(R1, S0); // r1 = r0/r2
|
| __ mls(R0, R1, R2, R0); // r0 = r0 - r1*r2
|
| }
|
| __ bx(LR);
|
| @@ -1019,8 +981,8 @@ ASSEMBLER_TEST_GENERATE(QuotientRemainder, assembler) {
|
| ASSEMBLER_TEST_RUN(QuotientRemainder, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| - typedef int64_t (*QuotientRemainder)
|
| - (int64_t dividend, int64_t divisor) DART_UNUSED;
|
| + typedef int64_t (*QuotientRemainder)(int64_t dividend, int64_t divisor)
|
| + DART_UNUSED;
|
| EXPECT_EQ(0x1000400000da8LL,
|
| EXECUTE_TEST_CODE_INT64_LL(QuotientRemainder, test->entry(),
|
| 0x12345678, 0x1234));
|
| @@ -1042,8 +1004,8 @@ ASSEMBLER_TEST_GENERATE(Multiply64To64, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(Multiply64To64, test) {
|
| EXPECT(test != NULL);
|
| - typedef int64_t (*Multiply64To64)
|
| - (int64_t operand0, int64_t operand1) DART_UNUSED;
|
| + typedef int64_t (*Multiply64To64)(int64_t operand0, int64_t operand1)
|
| + DART_UNUSED;
|
| EXPECT_EQ(6,
|
| EXECUTE_TEST_CODE_INT64_LL(Multiply64To64, test->entry(), -3, -2));
|
| }
|
| @@ -1057,8 +1019,8 @@ ASSEMBLER_TEST_GENERATE(Multiply32To64, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(Multiply32To64, test) {
|
| EXPECT(test != NULL);
|
| - typedef int64_t (*Multiply32To64)
|
| - (int64_t operand0, int64_t operand1) DART_UNUSED;
|
| + typedef int64_t (*Multiply32To64)(int64_t operand0, int64_t operand1)
|
| + DART_UNUSED;
|
| EXPECT_EQ(6,
|
| EXECUTE_TEST_CODE_INT64_LL(Multiply32To64, test->entry(), -3, -2));
|
| }
|
| @@ -1072,8 +1034,8 @@ ASSEMBLER_TEST_GENERATE(MultiplyAccumAccum32To64, assembler) {
|
|
|
| ASSEMBLER_TEST_RUN(MultiplyAccumAccum32To64, test) {
|
| EXPECT(test != NULL);
|
| - typedef int64_t (*MultiplyAccumAccum32To64)
|
| - (int64_t operand0, int64_t operand1) DART_UNUSED;
|
| + typedef int64_t (*MultiplyAccumAccum32To64)(int64_t operand0,
|
| + int64_t operand1) DART_UNUSED;
|
| EXPECT_EQ(3 + 7 + 5 * 11,
|
| EXECUTE_TEST_CODE_INT64_LL(MultiplyAccumAccum32To64, test->entry(),
|
| (3LL << 32) + 7, (5LL << 32) + 11));
|
| @@ -1334,12 +1296,12 @@ ASSEMBLER_TEST_RUN(Ldrh1, test) {
|
|
|
| ASSEMBLER_TEST_GENERATE(Ldrd, assembler) {
|
| __ mov(IP, Operand(SP));
|
| - __ sub(SP, SP, Operand(kWordSize*30));
|
| + __ sub(SP, SP, Operand(kWordSize * 30));
|
| __ strd(R2, R3, SP, 0);
|
| - __ strd(R0, R1, IP, (-kWordSize*28));
|
| - __ ldrd(R2, R3, IP, (-kWordSize*28));
|
| + __ strd(R0, R1, IP, (-kWordSize * 28));
|
| + __ ldrd(R2, R3, IP, (-kWordSize * 28));
|
| __ ldrd(R0, R1, SP, 0);
|
| - __ add(SP, SP, Operand(kWordSize*30));
|
| + __ add(SP, SP, Operand(kWordSize * 30));
|
| __ sub(R0, R0, Operand(R2));
|
| __ add(R1, R1, Operand(R3));
|
| __ bx(LR);
|
| @@ -1349,8 +1311,9 @@ ASSEMBLER_TEST_GENERATE(Ldrd, assembler) {
|
| ASSEMBLER_TEST_RUN(Ldrd, test) {
|
| EXPECT(test != NULL);
|
| typedef int64_t (*Tst)(int64_t r0r1, int64_t r2r3) DART_UNUSED;
|
| - EXPECT_EQ(0x0000444400002222LL, EXECUTE_TEST_CODE_INT64_LL(
|
| - Tst, test->entry(), 0x0000111100000000LL, 0x0000333300002222LL));
|
| + EXPECT_EQ(0x0000444400002222LL,
|
| + EXECUTE_TEST_CODE_INT64_LL(Tst, test->entry(), 0x0000111100000000LL,
|
| + 0x0000333300002222LL));
|
| }
|
|
|
|
|
| @@ -1369,23 +1332,23 @@ ASSEMBLER_TEST_GENERATE(Ldm_stm_da, assembler) {
|
| __ str(R2, Address(SP)); // Should be a free slot.
|
| __ ldr(R9, Address(SP, 1 * kWordSize)); // R0. R9 = +1.
|
| __ ldr(IP, Address(SP, 2 * kWordSize)); // R1.
|
| - __ sub(R9, R9, Operand(IP)); // -R1. R9 = -6.
|
| + __ sub(R9, R9, Operand(IP)); // -R1. R9 = -6.
|
| __ ldr(IP, Address(SP, 3 * kWordSize)); // R2.
|
| - __ add(R9, R9, Operand(IP)); // +R2. R9 = +5.
|
| + __ add(R9, R9, Operand(IP)); // +R2. R9 = +5.
|
| __ ldr(IP, Address(SP, 4 * kWordSize)); // R3.
|
| - __ sub(R9, R9, Operand(IP)); // -R3. R9 = -26.
|
| + __ sub(R9, R9, Operand(IP)); // -R3. R9 = -26.
|
| __ ldm(IB_W, SP, (1 << R0 | 1 << R1 | 1 << R2 | 1 << R3));
|
| // Same operations again. But this time from the restore registers.
|
| __ add(R9, R9, Operand(R0));
|
| __ sub(R9, R9, Operand(R1));
|
| __ add(R9, R9, Operand(R2));
|
| __ sub(R0, R9, Operand(R3)); // R0 = result = -52.
|
| - __ Pop(R1); // Remove storage slot.
|
| - __ Pop(R9); // Restore R9.
|
| - __ Pop(R9); // Restore R9.
|
| - __ Pop(R9); // Restore R9.
|
| - __ Pop(R9); // Restore R9.
|
| - __ Pop(R9); // Restore R9.
|
| + __ Pop(R1); // Remove storage slot.
|
| + __ Pop(R9); // Restore R9.
|
| + __ Pop(R9); // Restore R9.
|
| + __ Pop(R9); // Restore R9.
|
| + __ Pop(R9); // Restore R9.
|
| + __ Pop(R9); // Restore R9.
|
| __ bx(LR);
|
| }
|
|
|
| @@ -3164,10 +3127,10 @@ ASSEMBLER_TEST_RUN(Vmovq, test) {
|
| ASSEMBLER_TEST_GENERATE(Vmvnq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadImmediate(R1, 42); // R1 <- 42.
|
| - __ vmovsr(S2, R1); // S2 <- R1.
|
| - __ vmvnq(Q1, Q0); // Q1 <- ~Q0.
|
| - __ vmvnq(Q2, Q1); // Q2 <- ~Q1.
|
| - __ vmovrs(R0, S10); // Now R0 should be 42 again.
|
| + __ vmovsr(S2, R1); // S2 <- R1.
|
| + __ vmvnq(Q1, Q0); // Q1 <- ~Q0.
|
| + __ vmvnq(Q2, Q1); // Q2 <- ~Q1.
|
| + __ vmovrs(R0, S10); // Now R0 should be 42 again.
|
| }
|
| __ bx(LR);
|
| }
|
| @@ -3702,9 +3665,12 @@ ASSEMBLER_TEST_RUN(Vmaxqs, 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)
|
| @@ -3724,7 +3690,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 =
|
| @@ -3808,16 +3774,19 @@ ASSEMBLER_TEST_RUN(Reciprocal, test) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| typedef float (*Reciprocal)() DART_UNUSED;
|
| float res = EXECUTE_TEST_CODE_FLOAT(Reciprocal, test->entry());
|
| - EXPECT_FLOAT_EQ(1.0/147000.0, res, 0.0001f);
|
| + EXPECT_FLOAT_EQ(1.0 / 147000.0, res, 0.0001f);
|
| }
|
| }
|
|
|
|
|
| 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;
|
| @@ -3855,10 +3824,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);
|
| }
|
| @@ -3910,7 +3880,7 @@ ASSEMBLER_TEST_RUN(Vrsqrtsqs, test) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| typedef float (*Vrsqrtsqs)() DART_UNUSED;
|
| float res = EXECUTE_TEST_CODE_FLOAT(Vrsqrtsqs, test->entry());
|
| - EXPECT_FLOAT_EQ((3.0 - 10.0 * 5.0)/2.0, res, 0.0001f);
|
| + EXPECT_FLOAT_EQ((3.0 - 10.0 * 5.0) / 2.0, res, 0.0001f);
|
| }
|
| }
|
|
|
| @@ -3926,9 +3896,9 @@ ASSEMBLER_TEST_GENERATE(ReciprocalSqrt, assembler) {
|
| __ vrsqrteqs(Q0, Q1);
|
| // 2 Newton-Raphson steps. xn+1 = xn * (3 - Q1*xn^2) / 2.
|
| // First step.
|
| - __ vmulqs(Q2, Q0, Q0); // Q2 <- xn^2
|
| + __ vmulqs(Q2, Q0, Q0); // Q2 <- xn^2
|
| __ vrsqrtsqs(Q2, Q1, Q2); // Q2 <- (3 - Q1*Q2) / 2.
|
| - __ vmulqs(Q0, Q0, Q2); // xn+1 <- xn * Q2
|
| + __ vmulqs(Q0, Q0, Q2); // xn+1 <- xn * Q2
|
| // Second step.
|
| __ vmulqs(Q2, Q0, Q0);
|
| __ vrsqrtsqs(Q2, Q1, Q2);
|
| @@ -3943,7 +3913,7 @@ ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| typedef float (*ReciprocalSqrt)() DART_UNUSED;
|
| float res = EXECUTE_TEST_CODE_FLOAT(ReciprocalSqrt, test->entry());
|
| - EXPECT_FLOAT_EQ(1.0/sqrt(147000.0), res, 0.0001f);
|
| + EXPECT_FLOAT_EQ(1.0 / sqrt(147000.0), res, 0.0001f);
|
| }
|
| }
|
|
|
| @@ -3959,9 +3929,9 @@ ASSEMBLER_TEST_GENERATE(SIMDSqrt, assembler) {
|
| __ vrsqrteqs(Q0, Q1);
|
| // 2 Newton-Raphson steps. xn+1 = xn * (3 - Q1*xn^2) / 2.
|
| // First step.
|
| - __ vmulqs(Q2, Q0, Q0); // Q2 <- xn^2
|
| + __ vmulqs(Q2, Q0, Q0); // Q2 <- xn^2
|
| __ vrsqrtsqs(Q2, Q1, Q2); // Q2 <- (3 - Q1*Q2) / 2.
|
| - __ vmulqs(Q0, Q0, Q2); // xn+1 <- xn * Q2
|
| + __ vmulqs(Q0, Q0, Q2); // xn+1 <- xn * Q2
|
| // Second step.
|
| __ vmulqs(Q2, Q0, Q0);
|
| __ vrsqrtsqs(Q2, Q1, Q2);
|
| @@ -4002,9 +3972,9 @@ ASSEMBLER_TEST_GENERATE(SIMDSqrt2, assembler) {
|
| __ vrsqrteqs(Q0, Q1);
|
| // 2 Newton-Raphson steps. xn+1 = xn * (3 - Q1*xn^2) / 2.
|
| // First step.
|
| - __ vmulqs(Q2, Q0, Q0); // Q2 <- xn^2
|
| + __ vmulqs(Q2, Q0, Q0); // Q2 <- xn^2
|
| __ vrsqrtsqs(Q2, Q1, Q2); // Q2 <- (3 - Q1*Q2) / 2.
|
| - __ vmulqs(Q0, Q0, Q2); // xn+1 <- xn * Q2
|
| + __ vmulqs(Q0, Q0, Q2); // xn+1 <- xn * Q2
|
| // Second step.
|
| __ vmulqs(Q2, Q0, Q0);
|
| __ vrsqrtsqs(Q2, Q1, Q2);
|
| @@ -4139,8 +4109,7 @@ ASSEMBLER_TEST_RUN(Vnegqs, test) {
|
| ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
|
| __ PushList((1 << LR) | (1 << THR));
|
| __ mov(THR, Operand(R2));
|
| - __ StoreIntoObject(R1,
|
| - FieldAddress(R1, GrowableObjectArray::data_offset()),
|
| + __ StoreIntoObject(R1, FieldAddress(R1, GrowableObjectArray::data_offset()),
|
| R0);
|
| __ PopList((1 << LR) | (1 << THR));
|
| __ Ret();
|
|
|