| Index: runtime/vm/assembler_arm64_test.cc
|
| ===================================================================
|
| --- runtime/vm/assembler_arm64_test.cc (revision 36930)
|
| +++ runtime/vm/assembler_arm64_test.cc (working copy)
|
| @@ -13,6 +13,8 @@
|
|
|
| namespace dart {
|
|
|
| +static const intptr_t kTestStackSpace = 512 * kWordSize;
|
| +
|
| #define __ assembler->
|
|
|
| ASSEMBLER_TEST_GENERATE(Simple, assembler) {
|
| @@ -286,7 +288,7 @@
|
|
|
| // Loads and Stores.
|
| ASSEMBLER_TEST_GENERATE(SimpleLoadStore, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ movz(R0, 43, 0);
|
| __ movz(R1, 42, 0);
|
| __ str(R1, Address(SP, -1*kWordSize, Address::PreIndex));
|
| @@ -302,7 +304,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(SimpleLoadStoreHeapTag, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ movz(R0, 43, 0);
|
| __ movz(R1, 42, 0);
|
| __ add(R2, SP, Operand(1));
|
| @@ -319,7 +321,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreLargeIndex, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ movz(R0, 43, 0);
|
| __ movz(R1, 42, 0);
|
| // Largest negative offset that can fit in the signed 9-bit immediate field.
|
| @@ -339,7 +341,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreLargeOffset, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ movz(R0, 43, 0);
|
| __ movz(R1, 42, 0);
|
| __ sub(SP, SP, Operand(512*kWordSize));
|
| @@ -357,7 +359,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreExtReg, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ movz(R0, 43, 0);
|
| __ movz(R1, 42, 0);
|
| __ movz(R2, 0xfff8, 0);
|
| @@ -379,7 +381,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ movz(R0, 43, 0);
|
| __ movz(R1, 42, 0);
|
| __ movz(R2, 10, 0);
|
| @@ -399,7 +401,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadSigned32Bit, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadImmediate(R1, 0xffffffff, kNoPP);
|
| __ str(R1, Address(SP, -4, Address::PreIndex, kWord), kWord);
|
| __ ldr(R0, Address(SP), kWord);
|
| @@ -1335,7 +1337,7 @@
|
|
|
| // Loading immediate values with the object pool.
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPSmall, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadImmediate(R0, 42, PP);
|
| @@ -1351,7 +1353,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadImmediate(R0, 0xf1234123, PP);
|
| @@ -1367,7 +1369,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed2, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadImmediate(R0, 0x4321f1234124, PP);
|
| @@ -1384,7 +1386,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPLarge, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadImmediate(R0, 0x9287436598237465, PP);
|
| @@ -1402,7 +1404,7 @@
|
|
|
| // LoadObject null.
|
| ASSEMBLER_TEST_GENERATE(LoadObjectNull, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadObject(R0, Object::null_object(), PP);
|
| @@ -1419,7 +1421,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadObjectTrue, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadObject(R0, Bool::True(), PP);
|
| @@ -1436,7 +1438,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadObjectFalse, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP(); // Save caller's pool pointer and load a new one here.
|
| __ LoadPoolPointer(PP);
|
| __ LoadObject(R0, Bool::False(), PP);
|
| @@ -1597,7 +1599,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdPrePostIndex, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| __ fstrd(V1, Address(SP, -1*kWordSize, Address::PreIndex));
|
| __ fldrd(V0, Address(SP, 1*kWordSize, Address::PostIndex));
|
| @@ -1612,7 +1614,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrsFstrsPrePostIndex, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| __ fcvtsd(V2, V1);
|
| __ fstrs(V2, Address(SP, -1*kWordSize, Address::PreIndex));
|
| @@ -1629,7 +1631,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrqFstrqPrePostIndex, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V1, 21.0, kNoPP);
|
| __ LoadDImmediate(V2, 21.0, kNoPP);
|
| __ LoadImmediate(R1, 42, kNoPP);
|
| @@ -1800,7 +1802,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdHeapTag, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 43.0, kNoPP);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| __ AddImmediate(SP, SP, -1 * kWordSize, kNoPP);
|
| @@ -1819,7 +1821,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeIndex, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 43.0, kNoPP);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| // Largest negative offset that can fit in the signed 9-bit immediate field.
|
| @@ -1839,7 +1841,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeOffset, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 43.0, kNoPP);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| __ sub(SP, SP, Operand(512*kWordSize));
|
| @@ -1857,7 +1859,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdExtReg, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 43.0, kNoPP);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| __ movz(R2, 0xfff8, 0);
|
| @@ -1879,7 +1881,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdScaledReg, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 43.0, kNoPP);
|
| __ LoadDImmediate(V1, 42.0, kNoPP);
|
| __ movz(R2, 10, 0);
|
| @@ -2342,7 +2344,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vdupd, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 21.0, kNoPP);
|
| __ vdupd(V1, V0, 0);
|
|
|
| @@ -2365,7 +2367,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vdups, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 21.0, kNoPP);
|
| __ fcvtsd(V0, V0);
|
| __ vdups(V1, V0, 0);
|
| @@ -2398,7 +2400,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vinsd, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V5, 42.0, kNoPP);
|
| __ vinsd(V1, 1, V5, 0); // V1[1] <- V0[0].
|
|
|
| @@ -2421,7 +2423,7 @@
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vinss, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ LoadDImmediate(V0, 21.0, kNoPP);
|
| __ fcvtsd(V0, V0);
|
| __ vinss(V1, 3, V0, 0);
|
| @@ -3232,7 +3234,7 @@
|
| // R1: value.
|
| // R2: growable array.
|
| ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
|
| - __ mov(SP, CSP);
|
| + __ SetupDartSP(kTestStackSpace);
|
| __ TagAndPushPP();
|
| __ LoadPoolPointer(PP);
|
| __ Push(CTX);
|
|
|