| Index: runtime/vm/assembler_arm_test.cc
|
| diff --git a/runtime/vm/assembler_arm_test.cc b/runtime/vm/assembler_arm_test.cc
|
| index e424b6a7168c841e71329b6eb1f77beec2121b1f..001a016dac4b69ae2293c13dd6f2517c84dd4d1f 100644
|
| --- a/runtime/vm/assembler_arm_test.cc
|
| +++ b/runtime/vm/assembler_arm_test.cc
|
| @@ -15,32 +15,27 @@ namespace dart {
|
|
|
| #define __ assembler->
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Simple, assembler) {
|
| __ mov(R0, Operand(42));
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Simple, test) {
|
| typedef int (*SimpleCode)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(MoveNegated, assembler) {
|
| __ mvn(R0, Operand(42));
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(MoveNegated, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*MoveNegated)() DART_UNUSED;
|
| EXPECT_EQ(~42, EXECUTE_TEST_CODE_INT32(MoveNegated, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(MoveRotImm, assembler) {
|
| Operand o;
|
| EXPECT(Operand::CanHold(0x00550000, &o));
|
| @@ -50,14 +45,12 @@ ASSEMBLER_TEST_GENERATE(MoveRotImm, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(MoveRotImm, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*MoveRotImm)() DART_UNUSED;
|
| EXPECT_EQ(0x30550003, EXECUTE_TEST_CODE_INT32(MoveRotImm, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(MovImm16, assembler) {
|
| #if defined(USING_SIMULATOR)
|
| // ARMv7 is the default.
|
| @@ -73,14 +66,12 @@ ASSEMBLER_TEST_GENERATE(MovImm16, assembler) {
|
| #endif
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(MovImm16, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*MovImm16)() DART_UNUSED;
|
| EXPECT_EQ(0x12345678, EXECUTE_TEST_CODE_INT32(MovImm16, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(LoadImmediate, assembler) {
|
| __ mov(R0, Operand(0));
|
| __ cmp(R0, Operand(0));
|
| @@ -89,21 +80,18 @@ ASSEMBLER_TEST_GENERATE(LoadImmediate, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(LoadImmediate, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*LoadImmediate)() DART_UNUSED;
|
| EXPECT_EQ(0x12345678, EXECUTE_TEST_CODE_INT32(LoadImmediate, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(LoadHalfWordUnaligned, assembler) {
|
| __ LoadHalfWordUnaligned(R1, R0, TMP);
|
| __ mov(R0, Operand(R1));
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(LoadHalfWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*LoadHalfWordUnaligned)(intptr_t) DART_UNUSED;
|
| @@ -121,14 +109,12 @@ ASSEMBLER_TEST_RUN(LoadHalfWordUnaligned, test) {
|
| reinterpret_cast<intptr_t>(&buffer[1])));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(LoadHalfWordUnsignedUnaligned, assembler) {
|
| __ LoadHalfWordUnsignedUnaligned(R1, R0, TMP);
|
| __ mov(R0, Operand(R1));
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(LoadHalfWordUnsignedUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*LoadHalfWordUnsignedUnaligned)(intptr_t) DART_UNUSED;
|
| @@ -144,7 +130,6 @@ ASSEMBLER_TEST_RUN(LoadHalfWordUnsignedUnaligned, test) {
|
| reinterpret_cast<intptr_t>(&buffer[1])));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(StoreHalfWordUnaligned, assembler) {
|
| __ LoadImmediate(R1, 0xABCD);
|
| __ StoreWordUnaligned(R1, R0, TMP);
|
| @@ -152,7 +137,6 @@ ASSEMBLER_TEST_GENERATE(StoreHalfWordUnaligned, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(StoreHalfWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*StoreHalfWordUnaligned)(intptr_t) DART_UNUSED;
|
| @@ -175,14 +159,12 @@ ASSEMBLER_TEST_RUN(StoreHalfWordUnaligned, test) {
|
| EXPECT_EQ(0, buffer[3]);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(LoadWordUnaligned, assembler) {
|
| __ LoadWordUnaligned(R1, R0, TMP);
|
| __ mov(R0, Operand(R1));
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(LoadWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*LoadWordUnaligned)(intptr_t) DART_UNUSED;
|
| @@ -206,7 +188,6 @@ ASSEMBLER_TEST_RUN(LoadWordUnaligned, test) {
|
| reinterpret_cast<intptr_t>(&buffer[3])));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(StoreWordUnaligned, assembler) {
|
| __ LoadImmediate(R1, 0x12345678);
|
| __ StoreWordUnaligned(R1, R0, TMP);
|
| @@ -214,7 +195,6 @@ ASSEMBLER_TEST_GENERATE(StoreWordUnaligned, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(StoreWordUnaligned, test) {
|
| EXPECT(test != NULL);
|
| typedef intptr_t (*StoreWordUnaligned)(intptr_t) DART_UNUSED;
|
| @@ -253,7 +233,6 @@ ASSEMBLER_TEST_RUN(StoreWordUnaligned, test) {
|
| EXPECT_EQ(0x12, buffer[6]);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmov, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ mov(R3, Operand(43));
|
| @@ -271,7 +250,6 @@ ASSEMBLER_TEST_GENERATE(Vmov, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmov, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -280,7 +258,6 @@ ASSEMBLER_TEST_RUN(Vmov, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SingleVLoadStore, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadImmediate(R0, bit_cast<int32_t, float>(12.3f));
|
| @@ -294,7 +271,6 @@ ASSEMBLER_TEST_GENERATE(SingleVLoadStore, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SingleVLoadStore, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -304,7 +280,6 @@ ASSEMBLER_TEST_RUN(SingleVLoadStore, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SingleVShiftLoadStore, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadImmediate(R0, bit_cast<int32_t, float>(12.3f));
|
| @@ -323,7 +298,6 @@ ASSEMBLER_TEST_GENERATE(SingleVShiftLoadStore, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SingleVShiftLoadStore, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -333,7 +307,6 @@ ASSEMBLER_TEST_RUN(SingleVShiftLoadStore, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(DoubleVLoadStore, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| int64_t value = bit_cast<int64_t, double>(12.3);
|
| @@ -351,7 +324,6 @@ ASSEMBLER_TEST_GENERATE(DoubleVLoadStore, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(DoubleVLoadStore, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -361,7 +333,6 @@ ASSEMBLER_TEST_RUN(DoubleVLoadStore, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SingleFPOperations, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadSImmediate(S0, 12.3f);
|
| @@ -377,7 +348,6 @@ ASSEMBLER_TEST_GENERATE(SingleFPOperations, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SingleFPOperations, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -387,7 +357,6 @@ ASSEMBLER_TEST_RUN(SingleFPOperations, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(DoubleFPOperations, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadDImmediate(D0, 12.3, R0);
|
| @@ -403,7 +372,6 @@ ASSEMBLER_TEST_GENERATE(DoubleFPOperations, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(DoubleFPOperations, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -413,7 +381,6 @@ ASSEMBLER_TEST_RUN(DoubleFPOperations, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(DoubleSqrtNeg, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| // Check that sqrt of a negative double gives NaN.
|
| @@ -427,7 +394,6 @@ ASSEMBLER_TEST_GENERATE(DoubleSqrtNeg, assembler) {
|
| __ Ret();
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(DoubleSqrtNeg, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -436,7 +402,6 @@ ASSEMBLER_TEST_RUN(DoubleSqrtNeg, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(IntToDoubleConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ mov(R3, Operand(6));
|
| @@ -446,7 +411,6 @@ ASSEMBLER_TEST_GENERATE(IntToDoubleConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(IntToDoubleConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -457,7 +421,6 @@ ASSEMBLER_TEST_RUN(IntToDoubleConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(LongToDoubleConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| int64_t value = 60000000000LL;
|
| @@ -473,7 +436,6 @@ ASSEMBLER_TEST_GENERATE(LongToDoubleConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(LongToDoubleConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -484,7 +446,6 @@ ASSEMBLER_TEST_RUN(LongToDoubleConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(IntToFloatConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ mov(R3, Operand(6));
|
| @@ -494,7 +455,6 @@ ASSEMBLER_TEST_GENERATE(IntToFloatConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(IntToFloatConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -505,7 +465,6 @@ ASSEMBLER_TEST_RUN(IntToFloatConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(FloatToIntConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ vcvtis(S1, S0);
|
| @@ -514,7 +473,6 @@ ASSEMBLER_TEST_GENERATE(FloatToIntConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(FloatToIntConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -528,7 +486,6 @@ ASSEMBLER_TEST_RUN(FloatToIntConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(DoubleToIntConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ vcvtid(S0, D0);
|
| @@ -537,7 +494,6 @@ ASSEMBLER_TEST_GENERATE(DoubleToIntConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(DoubleToIntConversion, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef int (*DoubleToIntConversion)(double arg) DART_UNUSED;
|
| @@ -551,7 +507,6 @@ ASSEMBLER_TEST_RUN(DoubleToIntConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(FloatToDoubleConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadSImmediate(S2, 12.8f);
|
| @@ -560,7 +515,6 @@ ASSEMBLER_TEST_GENERATE(FloatToDoubleConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(FloatToDoubleConversion, test) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| typedef double (*FloatToDoubleConversionCode)() DART_UNUSED;
|
| @@ -571,7 +525,6 @@ ASSEMBLER_TEST_RUN(FloatToDoubleConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(DoubleToFloatConversion, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ LoadDImmediate(D1, 12.8, R0);
|
| @@ -580,7 +533,6 @@ ASSEMBLER_TEST_GENERATE(DoubleToFloatConversion, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(DoubleToFloatConversion, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -591,7 +543,6 @@ ASSEMBLER_TEST_RUN(DoubleToFloatConversion, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(FloatCompare, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| // Test 12.3f vs 12.5f.
|
| @@ -620,7 +571,6 @@ ASSEMBLER_TEST_GENERATE(FloatCompare, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(FloatCompare, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -629,7 +579,6 @@ ASSEMBLER_TEST_RUN(FloatCompare, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(DoubleCompare, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| // Test 12.3 vs 12.5.
|
| @@ -658,7 +607,6 @@ ASSEMBLER_TEST_GENERATE(DoubleCompare, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(DoubleCompare, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -667,7 +615,6 @@ ASSEMBLER_TEST_RUN(DoubleCompare, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Loop, assembler) {
|
| Label loop_entry;
|
| __ mov(R0, Operand(1));
|
| @@ -679,14 +626,12 @@ ASSEMBLER_TEST_GENERATE(Loop, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Loop, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Loop)() DART_UNUSED;
|
| EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(Loop, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(ForwardBranch, assembler) {
|
| Label skip;
|
| __ mov(R0, Operand(42));
|
| @@ -696,14 +641,12 @@ ASSEMBLER_TEST_GENERATE(ForwardBranch, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(ForwardBranch, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*ForwardBranch)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(ForwardBranch, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Loop2, assembler) {
|
| Label loop_entry;
|
| __ set_use_far_branches(true);
|
| @@ -716,14 +659,12 @@ ASSEMBLER_TEST_GENERATE(Loop2, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Loop2, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Loop)() DART_UNUSED;
|
| EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(Loop, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Loop3, assembler) {
|
| Label loop_entry;
|
| __ set_use_far_branches(true);
|
| @@ -739,14 +680,12 @@ ASSEMBLER_TEST_GENERATE(Loop3, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Loop3, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Loop)() DART_UNUSED;
|
| EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(Loop, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(LoadStore, assembler) {
|
| __ mov(R1, Operand(123));
|
| __ Push(R1);
|
| @@ -754,14 +693,12 @@ ASSEMBLER_TEST_GENERATE(LoadStore, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(LoadStore, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*LoadStore)() DART_UNUSED;
|
| EXPECT_EQ(123, EXECUTE_TEST_CODE_INT32(LoadStore, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
|
| if (TargetCPUFeatures::arm_version() != ARMv5TE) {
|
| __ mov(R0, Operand(40));
|
| @@ -778,7 +715,6 @@ ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Semaphore, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::arm_version() != ARMv5TE) {
|
| @@ -787,7 +723,6 @@ ASSEMBLER_TEST_RUN(Semaphore, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
|
| if (TargetCPUFeatures::arm_version() != ARMv5TE) {
|
| __ mov(R0, Operand(40));
|
| @@ -802,7 +737,6 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(FailedSemaphore, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::arm_version() != ARMv5TE) {
|
| @@ -811,7 +745,6 @@ ASSEMBLER_TEST_RUN(FailedSemaphore, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddSub, assembler) {
|
| __ mov(R1, Operand(40));
|
| __ sub(R1, R1, Operand(2));
|
| @@ -821,14 +754,12 @@ ASSEMBLER_TEST_GENERATE(AddSub, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddSub, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*AddSub)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(AddSub, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddCarry, assembler) {
|
| __ LoadImmediate(R2, 0xFFFFFFFF);
|
| __ mov(R1, Operand(1));
|
| @@ -838,14 +769,12 @@ ASSEMBLER_TEST_GENERATE(AddCarry, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddCarry, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*AddCarry)() DART_UNUSED;
|
| EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(AddCarry, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddCarryInOut, assembler) {
|
| __ LoadImmediate(R2, 0xFFFFFFFF);
|
| __ mov(R1, Operand(1));
|
| @@ -856,14 +785,12 @@ ASSEMBLER_TEST_GENERATE(AddCarryInOut, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddCarryInOut, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*AddCarryInOut)() DART_UNUSED;
|
| EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(AddCarryInOut, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SubCarry, assembler) {
|
| __ LoadImmediate(R2, 0x0);
|
| __ mov(R1, Operand(1));
|
| @@ -873,14 +800,12 @@ ASSEMBLER_TEST_GENERATE(SubCarry, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SubCarry, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*SubCarry)() DART_UNUSED;
|
| EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SubCarry, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SubCarryInOut, assembler) {
|
| __ mov(R1, Operand(1));
|
| __ mov(R0, Operand(0));
|
| @@ -890,14 +815,12 @@ ASSEMBLER_TEST_GENERATE(SubCarryInOut, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SubCarryInOut, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*SubCarryInOut)() DART_UNUSED;
|
| EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SubCarryInOut, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Overflow, assembler) {
|
| __ LoadImmediate(R0, 0xFFFFFFFF);
|
| __ LoadImmediate(R1, 0x7FFFFFFF);
|
| @@ -907,14 +830,12 @@ ASSEMBLER_TEST_GENERATE(Overflow, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Overflow, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Overflow)() DART_UNUSED;
|
| EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(Overflow, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AndOrr, assembler) {
|
| __ mov(R1, Operand(40));
|
| __ mov(R2, Operand(0));
|
| @@ -924,14 +845,12 @@ ASSEMBLER_TEST_GENERATE(AndOrr, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AndOrr, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*AndOrr)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(AndOrr, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Orrs, assembler) {
|
| __ mov(R0, Operand(0));
|
| __ tst(R0, Operand(R1)); // Set zero-flag.
|
| @@ -943,14 +862,12 @@ ASSEMBLER_TEST_GENERATE(Orrs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Orrs, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Orrs)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Orrs, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Multiply, assembler) {
|
| __ mov(R1, Operand(20));
|
| __ mov(R2, Operand(40));
|
| @@ -959,14 +876,12 @@ ASSEMBLER_TEST_GENERATE(Multiply, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Multiply, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Multiply)() DART_UNUSED;
|
| EXPECT_EQ(800, EXECUTE_TEST_CODE_INT32(Multiply, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(QuotientRemainder, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| __ vmovsr(S2, R0);
|
| @@ -981,7 +896,6 @@ ASSEMBLER_TEST_GENERATE(QuotientRemainder, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(QuotientRemainder, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -993,7 +907,6 @@ ASSEMBLER_TEST_RUN(QuotientRemainder, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Multiply64To64, assembler) {
|
| __ Push(R4);
|
| __ mov(IP, Operand(R0));
|
| @@ -1005,7 +918,6 @@ ASSEMBLER_TEST_GENERATE(Multiply64To64, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Multiply64To64, test) {
|
| EXPECT(test != NULL);
|
| typedef int64_t (*Multiply64To64)(int64_t operand0, int64_t operand1)
|
| @@ -1014,13 +926,11 @@ ASSEMBLER_TEST_RUN(Multiply64To64, test) {
|
| EXECUTE_TEST_CODE_INT64_LL(Multiply64To64, test->entry(), -3, -2));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Multiply32To64, assembler) {
|
| __ smull(R0, R1, R0, R2);
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Multiply32To64, test) {
|
| EXPECT(test != NULL);
|
| typedef int64_t (*Multiply32To64)(int64_t operand0, int64_t operand1)
|
| @@ -1029,13 +939,11 @@ ASSEMBLER_TEST_RUN(Multiply32To64, test) {
|
| EXECUTE_TEST_CODE_INT64_LL(Multiply32To64, test->entry(), -3, -2));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(MultiplyAccumAccum32To64, assembler) {
|
| __ umaal(R0, R1, R2, R3);
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(MultiplyAccumAccum32To64, test) {
|
| EXPECT(test != NULL);
|
| typedef int64_t (*MultiplyAccumAccum32To64)(int64_t operand0,
|
| @@ -1045,7 +953,6 @@ ASSEMBLER_TEST_RUN(MultiplyAccumAccum32To64, test) {
|
| (3LL << 32) + 7, (5LL << 32) + 11));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Clz, assembler) {
|
| Label error;
|
|
|
| @@ -1072,14 +979,12 @@ ASSEMBLER_TEST_GENERATE(Clz, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Clz, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Clz)() DART_UNUSED;
|
| EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(Clz, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Tst, assembler) {
|
| Label skip;
|
|
|
| @@ -1092,14 +997,12 @@ ASSEMBLER_TEST_GENERATE(Tst, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Tst, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Lsl, assembler) {
|
| Label skip;
|
|
|
| @@ -1110,14 +1013,12 @@ ASSEMBLER_TEST_GENERATE(Lsl, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Lsl, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Lsr, assembler) {
|
| Label skip;
|
|
|
| @@ -1128,14 +1029,12 @@ ASSEMBLER_TEST_GENERATE(Lsr, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Lsr, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Lsr1, assembler) {
|
| Label skip;
|
|
|
| @@ -1145,14 +1044,12 @@ ASSEMBLER_TEST_GENERATE(Lsr1, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Lsr1, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Asr1, assembler) {
|
| Label skip;
|
|
|
| @@ -1162,28 +1059,24 @@ ASSEMBLER_TEST_GENERATE(Asr1, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Asr1, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Rsb, assembler) {
|
| __ mov(R3, Operand(10));
|
| __ rsb(R0, R3, Operand(42));
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Rsb, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Rsb)() DART_UNUSED;
|
| EXPECT_EQ(32, EXECUTE_TEST_CODE_INT32(Rsb, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldrh, assembler) {
|
| Label Test1, Test2, Test3, Done;
|
|
|
| @@ -1222,14 +1115,12 @@ ASSEMBLER_TEST_GENERATE(Ldrh, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldrh, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldrsb, assembler) {
|
| __ mov(R1, Operand(0xFF));
|
| __ mov(R2, Operand(SP));
|
| @@ -1239,14 +1130,12 @@ ASSEMBLER_TEST_GENERATE(Ldrsb, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldrsb, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldrb, assembler) {
|
| __ mov(R1, Operand(0xFF));
|
| __ mov(R2, Operand(SP));
|
| @@ -1256,14 +1145,12 @@ ASSEMBLER_TEST_GENERATE(Ldrb, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldrb, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(0xff, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldrsh, assembler) {
|
| __ mov(R1, Operand(0xFF));
|
| __ mov(R2, Operand(SP));
|
| @@ -1273,14 +1160,12 @@ ASSEMBLER_TEST_GENERATE(Ldrsh, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldrsh, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(0xff, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldrh1, assembler) {
|
| __ mov(R1, Operand(0xFF));
|
| __ mov(R2, Operand(SP));
|
| @@ -1290,14 +1175,12 @@ ASSEMBLER_TEST_GENERATE(Ldrh1, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldrh1, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(0xff, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldrd, assembler) {
|
| __ mov(IP, Operand(SP));
|
| __ sub(SP, SP, Operand(kWordSize * 30));
|
| @@ -1311,7 +1194,6 @@ ASSEMBLER_TEST_GENERATE(Ldrd, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldrd, test) {
|
| EXPECT(test != NULL);
|
| typedef int64_t (*Tst)(int64_t r0r1, int64_t r2r3) DART_UNUSED;
|
| @@ -1320,7 +1202,6 @@ ASSEMBLER_TEST_RUN(Ldrd, test) {
|
| 0x0000333300002222LL));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Ldm_stm_da, assembler) {
|
| __ mov(R0, Operand(1));
|
| __ mov(R1, Operand(7));
|
| @@ -1356,14 +1237,12 @@ ASSEMBLER_TEST_GENERATE(Ldm_stm_da, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Ldm_stm_da, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(-52, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddressShiftStrLSL1NegOffset, assembler) {
|
| __ mov(R2, Operand(42));
|
| __ mov(R1, Operand(kWordSize));
|
| @@ -1372,14 +1251,12 @@ ASSEMBLER_TEST_GENERATE(AddressShiftStrLSL1NegOffset, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddressShiftStrLSL1NegOffset, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddressShiftLdrLSL5NegOffset, assembler) {
|
| __ mov(R2, Operand(42));
|
| __ mov(R1, Operand(kWordSize));
|
| @@ -1388,14 +1265,12 @@ ASSEMBLER_TEST_GENERATE(AddressShiftLdrLSL5NegOffset, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddressShiftLdrLSL5NegOffset, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddressShiftStrLRS1NegOffset, assembler) {
|
| __ mov(R2, Operand(42));
|
| __ mov(R1, Operand(kWordSize * 2));
|
| @@ -1404,14 +1279,12 @@ ASSEMBLER_TEST_GENERATE(AddressShiftStrLRS1NegOffset, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddressShiftStrLRS1NegOffset, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddressShiftLdrLRS1NegOffset, assembler) {
|
| __ mov(R2, Operand(42));
|
| __ mov(R1, Operand(kWordSize * 2));
|
| @@ -1420,14 +1293,12 @@ ASSEMBLER_TEST_GENERATE(AddressShiftLdrLRS1NegOffset, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddressShiftLdrLRS1NegOffset, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddressShiftStrLSLNegPreIndex, assembler) {
|
| __ mov(R2, Operand(42));
|
| __ mov(R1, Operand(kWordSize));
|
| @@ -1438,14 +1309,12 @@ ASSEMBLER_TEST_GENERATE(AddressShiftStrLSLNegPreIndex, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddressShiftStrLSLNegPreIndex, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(AddressShiftLdrLSLNegPreIndex, assembler) {
|
| __ mov(R2, Operand(42));
|
| __ mov(R1, Operand(kWordSize));
|
| @@ -1454,14 +1323,12 @@ ASSEMBLER_TEST_GENERATE(AddressShiftLdrLSLNegPreIndex, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(AddressShiftLdrLSLNegPreIndex, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| // Make sure we can store and reload the D registers using vstmd and vldmd
|
| ASSEMBLER_TEST_GENERATE(VstmdVldmd, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1493,7 +1360,6 @@ ASSEMBLER_TEST_GENERATE(VstmdVldmd, assembler) {
|
| __ vmstat();
|
| __ mov(R0, Operand(0), NE); // Put failure into R0 if NE
|
|
|
| -
|
| // Check that 2.0 is back in D2
|
| __ LoadDImmediate(D5, 2.0, R1);
|
| __ vcmpd(D2, D5);
|
| @@ -1509,7 +1375,6 @@ ASSEMBLER_TEST_GENERATE(VstmdVldmd, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VstmdVldmd, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1518,7 +1383,6 @@ ASSEMBLER_TEST_RUN(VstmdVldmd, test) {
|
| }
|
| }
|
|
|
| -
|
| // Make sure we can store and reload the S registers using vstms and vldms
|
| ASSEMBLER_TEST_GENERATE(VstmsVldms, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1565,7 +1429,6 @@ ASSEMBLER_TEST_GENERATE(VstmsVldms, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VstmsVldms, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1574,7 +1437,6 @@ ASSEMBLER_TEST_RUN(VstmsVldms, test) {
|
| }
|
| }
|
|
|
| -
|
| // Make sure we can start somewhere other than D0
|
| ASSEMBLER_TEST_GENERATE(VstmdVldmd1, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1604,7 +1466,6 @@ ASSEMBLER_TEST_GENERATE(VstmdVldmd1, assembler) {
|
| __ vmstat();
|
| __ mov(R0, Operand(0), NE); // Put failure into R0 if NE
|
|
|
| -
|
| // Check that 2.0 is back in D2
|
| __ LoadDImmediate(D5, 2.0, R1);
|
| __ vcmpd(D2, D5);
|
| @@ -1620,7 +1481,6 @@ ASSEMBLER_TEST_GENERATE(VstmdVldmd1, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VstmdVldmd1, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1629,7 +1489,6 @@ ASSEMBLER_TEST_RUN(VstmdVldmd1, test) {
|
| }
|
| }
|
|
|
| -
|
| // Make sure we can start somewhere other than S0
|
| ASSEMBLER_TEST_GENERATE(VstmsVldms1, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1674,7 +1533,6 @@ ASSEMBLER_TEST_GENERATE(VstmsVldms1, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VstmsVldms1, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1683,7 +1541,6 @@ ASSEMBLER_TEST_RUN(VstmsVldms1, test) {
|
| }
|
| }
|
|
|
| -
|
| // Make sure we can store the D registers using vstmd and
|
| // load them into a different set using vldmd
|
| ASSEMBLER_TEST_GENERATE(VstmdVldmd_off, assembler) {
|
| @@ -1714,7 +1571,6 @@ ASSEMBLER_TEST_GENERATE(VstmdVldmd_off, assembler) {
|
| __ vmstat();
|
| __ mov(R0, Operand(0), NE); // Put failure into R0 if NE
|
|
|
| -
|
| // Check that 2.0 is in D7
|
| __ LoadDImmediate(D10, 2.0, R1);
|
| __ vcmpd(D7, D10);
|
| @@ -1739,7 +1595,6 @@ ASSEMBLER_TEST_GENERATE(VstmdVldmd_off, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VstmdVldmd_off, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1748,7 +1603,6 @@ ASSEMBLER_TEST_RUN(VstmdVldmd_off, test) {
|
| }
|
| }
|
|
|
| -
|
| // Make sure we can start somewhere other than S0
|
| ASSEMBLER_TEST_GENERATE(VstmsVldms_off, assembler) {
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1797,7 +1651,6 @@ ASSEMBLER_TEST_GENERATE(VstmsVldms_off, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VstmsVldms_off, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::vfp_supported()) {
|
| @@ -1806,7 +1659,6 @@ ASSEMBLER_TEST_RUN(VstmsVldms_off, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Udiv, assembler) {
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| __ mov(R0, Operand(27));
|
| @@ -1817,7 +1669,6 @@ ASSEMBLER_TEST_GENERATE(Udiv, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Udiv, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| @@ -1826,7 +1677,6 @@ ASSEMBLER_TEST_RUN(Udiv, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Sdiv, assembler) {
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| __ mov(R0, Operand(27));
|
| @@ -1837,7 +1687,6 @@ ASSEMBLER_TEST_GENERATE(Sdiv, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Sdiv, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| @@ -1846,7 +1695,6 @@ ASSEMBLER_TEST_RUN(Sdiv, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Udiv_zero, assembler) {
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| __ mov(R0, Operand(27));
|
| @@ -1857,7 +1705,6 @@ ASSEMBLER_TEST_GENERATE(Udiv_zero, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Udiv_zero, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| @@ -1866,7 +1713,6 @@ ASSEMBLER_TEST_RUN(Udiv_zero, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Sdiv_zero, assembler) {
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| __ mov(R0, Operand(27));
|
| @@ -1877,7 +1723,6 @@ ASSEMBLER_TEST_GENERATE(Sdiv_zero, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Sdiv_zero, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| @@ -1886,7 +1731,6 @@ ASSEMBLER_TEST_RUN(Sdiv_zero, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Udiv_corner, assembler) {
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| __ LoadImmediate(R0, 0x80000000);
|
| @@ -1897,7 +1741,6 @@ ASSEMBLER_TEST_GENERATE(Udiv_corner, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Udiv_corner, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| @@ -1906,7 +1749,6 @@ ASSEMBLER_TEST_RUN(Udiv_corner, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Sdiv_corner, assembler) {
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| __ LoadImmediate(R0, 0x80000000);
|
| @@ -1917,7 +1759,6 @@ ASSEMBLER_TEST_GENERATE(Sdiv_corner, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Sdiv_corner, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::integer_division_supported()) {
|
| @@ -1927,7 +1768,6 @@ ASSEMBLER_TEST_RUN(Sdiv_corner, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(IntDiv_supported, assembler) {
|
| #if defined(USING_SIMULATOR)
|
| bool orig = TargetCPUFeatures::integer_division_supported();
|
| @@ -1947,7 +1787,6 @@ ASSEMBLER_TEST_GENERATE(IntDiv_supported, assembler) {
|
| #endif
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(IntDiv_supported, test) {
|
| EXPECT(test != NULL);
|
| #if defined(USING_SIMULATOR)
|
| @@ -1966,7 +1805,6 @@ ASSEMBLER_TEST_RUN(IntDiv_supported, test) {
|
| #endif
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(IntDiv_unsupported, assembler) {
|
| #if defined(USING_SIMULATOR)
|
| if (TargetCPUFeatures::can_divide()) {
|
| @@ -1988,7 +1826,6 @@ ASSEMBLER_TEST_GENERATE(IntDiv_unsupported, assembler) {
|
| #endif
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(IntDiv_unsupported, test) {
|
| EXPECT(test != NULL);
|
| #if defined(USING_SIMULATOR)
|
| @@ -2007,7 +1844,6 @@ ASSEMBLER_TEST_RUN(IntDiv_unsupported, test) {
|
| #endif
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Muls, assembler) {
|
| __ mov(R0, Operand(3));
|
| __ LoadImmediate(R1, -9);
|
| @@ -2016,14 +1852,12 @@ ASSEMBLER_TEST_GENERATE(Muls, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Muls, test) {
|
| EXPECT(test != NULL);
|
| typedef int (*Tst)() DART_UNUSED;
|
| EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(Tst, test->entry()));
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vaddqi8, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2057,7 +1891,6 @@ ASSEMBLER_TEST_GENERATE(Vaddqi8, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vaddqi8, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2066,7 +1899,6 @@ ASSEMBLER_TEST_RUN(Vaddqi8, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vaddqi16, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2100,7 +1932,6 @@ ASSEMBLER_TEST_GENERATE(Vaddqi16, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vaddqi16, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2109,7 +1940,6 @@ ASSEMBLER_TEST_RUN(Vaddqi16, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vaddqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2143,7 +1973,6 @@ ASSEMBLER_TEST_GENERATE(Vaddqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vaddqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2152,7 +1981,6 @@ ASSEMBLER_TEST_RUN(Vaddqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vaddqi64, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2174,7 +2002,6 @@ ASSEMBLER_TEST_GENERATE(Vaddqi64, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vaddqi64, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2183,7 +2010,6 @@ ASSEMBLER_TEST_RUN(Vaddqi64, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vshlqu64, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| Label fail;
|
| @@ -2211,7 +2037,6 @@ ASSEMBLER_TEST_GENERATE(Vshlqu64, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vshlqu64, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2220,7 +2045,6 @@ ASSEMBLER_TEST_RUN(Vshlqu64, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vshlqi64, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| Label fail;
|
| @@ -2248,7 +2072,6 @@ ASSEMBLER_TEST_GENERATE(Vshlqi64, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vshlqi64, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2257,7 +2080,6 @@ ASSEMBLER_TEST_RUN(Vshlqi64, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Mint_shl_ok, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| const QRegister value = Q0;
|
| @@ -2305,7 +2127,6 @@ ASSEMBLER_TEST_GENERATE(Mint_shl_ok, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Mint_shl_ok, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2314,7 +2135,6 @@ ASSEMBLER_TEST_RUN(Mint_shl_ok, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Mint_shl_overflow, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| const QRegister value = Q0;
|
| @@ -2362,7 +2182,6 @@ ASSEMBLER_TEST_GENERATE(Mint_shl_overflow, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Mint_shl_overflow, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2371,7 +2190,6 @@ ASSEMBLER_TEST_RUN(Mint_shl_overflow, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vsubqi8, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2405,7 +2223,6 @@ ASSEMBLER_TEST_GENERATE(Vsubqi8, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vsubqi8, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2414,7 +2231,6 @@ ASSEMBLER_TEST_RUN(Vsubqi8, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vsubqi16, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2448,7 +2264,6 @@ ASSEMBLER_TEST_GENERATE(Vsubqi16, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vsubqi16, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2457,7 +2272,6 @@ ASSEMBLER_TEST_RUN(Vsubqi16, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vsubqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2491,7 +2305,6 @@ ASSEMBLER_TEST_GENERATE(Vsubqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vsubqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2500,7 +2313,6 @@ ASSEMBLER_TEST_RUN(Vsubqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vsubqi64, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2522,7 +2334,6 @@ ASSEMBLER_TEST_GENERATE(Vsubqi64, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vsubqi64, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2531,7 +2342,6 @@ ASSEMBLER_TEST_RUN(Vsubqi64, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmulqi8, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2565,7 +2375,6 @@ ASSEMBLER_TEST_GENERATE(Vmulqi8, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmulqi8, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2574,7 +2383,6 @@ ASSEMBLER_TEST_RUN(Vmulqi8, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmulqi16, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2608,7 +2416,6 @@ ASSEMBLER_TEST_GENERATE(Vmulqi16, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmulqi16, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2617,7 +2424,6 @@ ASSEMBLER_TEST_RUN(Vmulqi16, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmulqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -2651,7 +2457,6 @@ ASSEMBLER_TEST_GENERATE(Vmulqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmulqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2660,7 +2465,6 @@ ASSEMBLER_TEST_RUN(Vmulqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vaddqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -2684,7 +2488,6 @@ ASSEMBLER_TEST_GENERATE(Vaddqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vaddqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2693,7 +2496,6 @@ ASSEMBLER_TEST_RUN(Vaddqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vsubqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -2717,7 +2519,6 @@ ASSEMBLER_TEST_GENERATE(Vsubqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vsubqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2726,7 +2527,6 @@ ASSEMBLER_TEST_RUN(Vsubqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmulqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -2750,7 +2550,6 @@ ASSEMBLER_TEST_GENERATE(Vmulqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmulqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2759,7 +2558,6 @@ ASSEMBLER_TEST_RUN(Vmulqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(VtblX, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Index.
|
| @@ -2792,7 +2590,6 @@ ASSEMBLER_TEST_GENERATE(VtblX, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VtblX, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2801,7 +2598,6 @@ ASSEMBLER_TEST_RUN(VtblX, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(VtblY, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Index.
|
| @@ -2834,7 +2630,6 @@ ASSEMBLER_TEST_GENERATE(VtblY, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VtblY, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2843,7 +2638,6 @@ ASSEMBLER_TEST_RUN(VtblY, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(VtblZ, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Index.
|
| @@ -2876,7 +2670,6 @@ ASSEMBLER_TEST_GENERATE(VtblZ, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VtblZ, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2885,7 +2678,6 @@ ASSEMBLER_TEST_RUN(VtblZ, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(VtblW, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Index.
|
| @@ -2918,7 +2710,6 @@ ASSEMBLER_TEST_GENERATE(VtblW, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(VtblW, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2927,7 +2718,6 @@ ASSEMBLER_TEST_RUN(VtblW, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Veorq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Q0
|
| @@ -2959,7 +2749,6 @@ ASSEMBLER_TEST_GENERATE(Veorq, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Veorq, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -2968,7 +2757,6 @@ ASSEMBLER_TEST_RUN(Veorq, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vornq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Q0
|
| @@ -3000,7 +2788,6 @@ ASSEMBLER_TEST_GENERATE(Vornq, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vornq, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3009,7 +2796,6 @@ ASSEMBLER_TEST_RUN(Vornq, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vorrq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Q0
|
| @@ -3041,7 +2827,6 @@ ASSEMBLER_TEST_GENERATE(Vorrq, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vorrq, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3050,7 +2835,6 @@ ASSEMBLER_TEST_RUN(Vorrq, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vandq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Q0
|
| @@ -3082,7 +2866,6 @@ ASSEMBLER_TEST_GENERATE(Vandq, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vandq, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3091,7 +2874,6 @@ ASSEMBLER_TEST_RUN(Vandq, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmovq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| // Q0
|
| @@ -3118,7 +2900,6 @@ ASSEMBLER_TEST_GENERATE(Vmovq, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmovq, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3127,7 +2908,6 @@ ASSEMBLER_TEST_RUN(Vmovq, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmvnq, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadImmediate(R1, 42); // R1 <- 42.
|
| @@ -3139,7 +2919,6 @@ ASSEMBLER_TEST_GENERATE(Vmvnq, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmvnq, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3148,7 +2927,6 @@ ASSEMBLER_TEST_RUN(Vmvnq, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vdupb, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadImmediate(R0, 0x00000000);
|
| @@ -3171,7 +2949,6 @@ ASSEMBLER_TEST_GENERATE(Vdupb, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vdupb, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3180,7 +2957,6 @@ ASSEMBLER_TEST_RUN(Vdupb, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vduph, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadImmediate(R0, 0xffff0000);
|
| @@ -3203,7 +2979,6 @@ ASSEMBLER_TEST_GENERATE(Vduph, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vduph, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3212,7 +2987,6 @@ ASSEMBLER_TEST_RUN(Vduph, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vdupw, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadImmediate(R0, 0x00000000);
|
| @@ -3235,7 +3009,6 @@ ASSEMBLER_TEST_GENERATE(Vdupw, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vdupw, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3244,7 +3017,6 @@ ASSEMBLER_TEST_RUN(Vdupw, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vzipqw, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 0.0);
|
| @@ -3267,7 +3039,6 @@ ASSEMBLER_TEST_GENERATE(Vzipqw, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vzipqw, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3277,7 +3048,6 @@ ASSEMBLER_TEST_RUN(Vzipqw, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vceqqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -3311,7 +3081,6 @@ ASSEMBLER_TEST_GENERATE(Vceqqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vceqqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3320,7 +3089,6 @@ ASSEMBLER_TEST_RUN(Vceqqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vceqqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -3346,7 +3114,6 @@ ASSEMBLER_TEST_GENERATE(Vceqqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vceqqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3355,7 +3122,6 @@ ASSEMBLER_TEST_RUN(Vceqqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vcgeqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -3389,7 +3155,6 @@ ASSEMBLER_TEST_GENERATE(Vcgeqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vcgeqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3398,7 +3163,6 @@ ASSEMBLER_TEST_RUN(Vcgeqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vcugeqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -3432,7 +3196,6 @@ ASSEMBLER_TEST_GENERATE(Vcugeqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vcugeqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3441,7 +3204,6 @@ ASSEMBLER_TEST_RUN(Vcugeqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vcgeqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -3467,7 +3229,6 @@ ASSEMBLER_TEST_GENERATE(Vcgeqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vcgeqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3476,7 +3237,6 @@ ASSEMBLER_TEST_RUN(Vcgeqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vcgtqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -3510,7 +3270,6 @@ ASSEMBLER_TEST_GENERATE(Vcgtqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vcgtqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3519,7 +3278,6 @@ ASSEMBLER_TEST_RUN(Vcgtqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vcugtqi32, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ mov(R0, Operand(1));
|
| @@ -3553,7 +3311,6 @@ ASSEMBLER_TEST_GENERATE(Vcugtqi32, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vcugtqi32, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3562,7 +3319,6 @@ ASSEMBLER_TEST_RUN(Vcugtqi32, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vcgtqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -3588,7 +3344,6 @@ ASSEMBLER_TEST_GENERATE(Vcgtqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vcgtqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3597,7 +3352,6 @@ ASSEMBLER_TEST_RUN(Vcgtqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vminqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -3622,7 +3376,6 @@ ASSEMBLER_TEST_GENERATE(Vminqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vminqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3631,7 +3384,6 @@ ASSEMBLER_TEST_RUN(Vminqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vmaxqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S0, 1.0);
|
| @@ -3656,7 +3408,6 @@ ASSEMBLER_TEST_GENERATE(Vmaxqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vmaxqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3665,7 +3416,6 @@ 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.
|
| @@ -3703,7 +3453,6 @@ static float arm_recip_estimate(float a) {
|
| return bit_cast<float, int32_t>(result_bits);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vrecpeqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 147.0);
|
| @@ -3715,7 +3464,6 @@ ASSEMBLER_TEST_GENERATE(Vrecpeqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vrecpeqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3725,7 +3473,6 @@ ASSEMBLER_TEST_RUN(Vrecpeqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vrecpsqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 5.0);
|
| @@ -3743,7 +3490,6 @@ ASSEMBLER_TEST_GENERATE(Vrecpsqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vrecpsqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3753,7 +3499,6 @@ ASSEMBLER_TEST_RUN(Vrecpsqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Reciprocal, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 147000.0);
|
| @@ -3772,7 +3517,6 @@ ASSEMBLER_TEST_GENERATE(Reciprocal, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Reciprocal, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3782,7 +3526,6 @@ ASSEMBLER_TEST_RUN(Reciprocal, test) {
|
| }
|
| }
|
|
|
| -
|
| static float arm_reciprocal_sqrt_estimate(float a) {
|
| // From the ARM Architecture Reference Manual A2-87.
|
| if (isinf(a) || (fabs(a) >= exp2f(126)))
|
| @@ -3837,7 +3580,6 @@ static float arm_reciprocal_sqrt_estimate(float a) {
|
| return bit_cast<float, int32_t>(result_bits);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vrsqrteqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 147.0);
|
| @@ -3850,7 +3592,6 @@ ASSEMBLER_TEST_GENERATE(Vrsqrteqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vrsqrteqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3860,7 +3601,6 @@ ASSEMBLER_TEST_RUN(Vrsqrteqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vrsqrtsqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 5.0);
|
| @@ -3878,7 +3618,6 @@ ASSEMBLER_TEST_GENERATE(Vrsqrtsqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vrsqrtsqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3888,7 +3627,6 @@ ASSEMBLER_TEST_RUN(Vrsqrtsqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(ReciprocalSqrt, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 147000.0);
|
| @@ -3911,7 +3649,6 @@ ASSEMBLER_TEST_GENERATE(ReciprocalSqrt, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3921,7 +3658,6 @@ ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SIMDSqrt, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 147000.0);
|
| @@ -3954,7 +3690,6 @@ ASSEMBLER_TEST_GENERATE(SIMDSqrt, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SIMDSqrt, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -3964,7 +3699,6 @@ ASSEMBLER_TEST_RUN(SIMDSqrt, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SIMDSqrt2, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 1.0);
|
| @@ -4001,7 +3735,6 @@ ASSEMBLER_TEST_GENERATE(SIMDSqrt2, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SIMDSqrt2, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -4011,7 +3744,6 @@ ASSEMBLER_TEST_RUN(SIMDSqrt2, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(SIMDDiv, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 1.0);
|
| @@ -4040,7 +3772,6 @@ ASSEMBLER_TEST_GENERATE(SIMDDiv, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(SIMDDiv, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -4050,7 +3781,6 @@ ASSEMBLER_TEST_RUN(SIMDDiv, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vabsqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 1.0);
|
| @@ -4067,7 +3797,6 @@ ASSEMBLER_TEST_GENERATE(Vabsqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vabsqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -4077,7 +3806,6 @@ ASSEMBLER_TEST_RUN(Vabsqs, test) {
|
| }
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_GENERATE(Vnegqs, assembler) {
|
| if (TargetCPUFeatures::neon_supported()) {
|
| __ LoadSImmediate(S4, 1.0);
|
| @@ -4094,7 +3822,6 @@ ASSEMBLER_TEST_GENERATE(Vnegqs, assembler) {
|
| __ bx(LR);
|
| }
|
|
|
| -
|
| ASSEMBLER_TEST_RUN(Vnegqs, test) {
|
| EXPECT(test != NULL);
|
| if (TargetCPUFeatures::neon_supported()) {
|
| @@ -4104,7 +3831,6 @@ ASSEMBLER_TEST_RUN(Vnegqs, test) {
|
| }
|
| }
|
|
|
| -
|
| // Called from assembler_test.cc.
|
| // LR: return address.
|
| // R0: value.
|
|
|