Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(662)

Unified Diff: runtime/vm/assembler_arm64_test.cc

Issue 317443004: Uses assembler macro for dart SP setup on arm64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/assembler_arm64.h ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,11 +288,12 @@
// 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));
__ ldr(R0, Address(SP, 1*kWordSize, Address::PostIndex));
+ __ mov(CSP, SP);
__ ret();
}
@@ -302,12 +305,13 @@
ASSEMBLER_TEST_GENERATE(SimpleLoadStoreHeapTag, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ movz(R0, 43, 0);
__ movz(R1, 42, 0);
__ add(R2, SP, Operand(1));
__ str(R1, Address(R2, -1));
__ ldr(R0, Address(R2, -1));
+ __ mov(CSP, SP);
__ ret();
}
@@ -319,7 +323,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.
@@ -328,6 +332,7 @@
__ ldr(R0, Address(SP, 31*kWordSize, Address::PostIndex));
// Correction.
__ add(SP, SP, Operand(kWordSize)); // Restore SP.
+ __ mov(CSP, SP);
__ ret();
}
@@ -339,13 +344,14 @@
ASSEMBLER_TEST_GENERATE(LoadStoreLargeOffset, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ movz(R0, 43, 0);
__ movz(R1, 42, 0);
__ sub(SP, SP, Operand(512*kWordSize));
__ str(R1, Address(SP, 512*kWordSize, Address::Offset));
__ add(SP, SP, Operand(512*kWordSize));
__ ldr(R0, Address(SP));
+ __ mov(CSP, SP);
__ ret();
}
@@ -357,7 +363,7 @@
ASSEMBLER_TEST_GENERATE(LoadStoreExtReg, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ movz(R0, 43, 0);
__ movz(R1, 42, 0);
__ movz(R2, 0xfff8, 0);
@@ -368,6 +374,7 @@
__ sub(SP, SP, Operand(kWordSize));
__ ldr(R0, Address(SP));
__ add(SP, SP, Operand(kWordSize));
+ __ mov(CSP, SP);
__ ret();
}
@@ -379,7 +386,7 @@
ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ movz(R0, 43, 0);
__ movz(R1, 42, 0);
__ movz(R2, 10, 0);
@@ -388,6 +395,7 @@
__ str(R1, Address(SP, R2, UXTX, Address::Scaled));
__ ldr(R0, Address(SP, R2, UXTX, Address::Scaled));
__ add(SP, SP, Operand(10*kWordSize));
+ __ mov(CSP, SP);
__ ret();
}
@@ -399,11 +407,12 @@
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);
__ ldr(R1, Address(SP, 4, Address::PostIndex, kWord), kWord);
+ __ mov(CSP, SP);
__ ret();
}
@@ -1335,11 +1344,12 @@
// 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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1351,11 +1361,12 @@
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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1367,11 +1378,12 @@
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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1384,11 +1396,12 @@
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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1402,11 +1415,12 @@
// 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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1419,11 +1433,12 @@
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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1436,11 +1451,12 @@
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);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
@@ -1597,10 +1613,11 @@
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));
+ __ mov(CSP, SP);
__ ret();
}
@@ -1612,12 +1629,13 @@
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));
__ fldrs(V3, Address(SP, 1*kWordSize, Address::PostIndex));
__ fcvtds(V0, V3);
+ __ mov(CSP, SP);
__ ret();
}
@@ -1629,7 +1647,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);
@@ -1642,6 +1660,7 @@
__ PopDouble(V0);
__ PopDouble(V1);
__ faddd(V0, V0, V1);
+ __ mov(CSP, SP);
__ ret();
}
@@ -1800,7 +1819,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);
@@ -1808,6 +1827,7 @@
__ fstrd(V1, Address(R2, -1));
__ fldrd(V0, Address(R2, -1));
__ AddImmediate(SP, SP, 1 * kWordSize, kNoPP);
+ __ mov(CSP, SP);
__ ret();
}
@@ -1819,7 +1839,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.
@@ -1828,6 +1848,7 @@
__ fldrd(V0, Address(SP, 31*kWordSize, Address::PostIndex));
// Correction.
__ add(SP, SP, Operand(kWordSize)); // Restore SP.
+ __ mov(CSP, SP);
__ ret();
}
@@ -1839,13 +1860,14 @@
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));
__ fstrd(V1, Address(SP, 512*kWordSize, Address::Offset));
__ add(SP, SP, Operand(512*kWordSize));
__ fldrd(V0, Address(SP));
+ __ mov(CSP, SP);
__ ret();
}
@@ -1857,7 +1879,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);
@@ -1868,6 +1890,7 @@
__ sub(SP, SP, Operand(kWordSize));
__ fldrd(V0, Address(SP));
__ add(SP, SP, Operand(kWordSize));
+ __ mov(CSP, SP);
__ ret();
}
@@ -1879,7 +1902,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);
@@ -1888,6 +1911,7 @@
__ fstrd(V1, Address(SP, R2, UXTX, Address::Scaled));
__ fldrd(V0, Address(SP, R2, UXTX, Address::Scaled));
__ add(SP, SP, Operand(10*kWordSize));
+ __ mov(CSP, SP);
__ ret();
}
@@ -2342,7 +2366,7 @@
ASSEMBLER_TEST_GENERATE(Vdupd, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ LoadDImmediate(V0, 21.0, kNoPP);
__ vdupd(V1, V0, 0);
@@ -2354,6 +2378,7 @@
__ fldrd(V3, Address(SP, 1 * dword_bytes, Address::PostIndex));
__ faddd(V0, V2, V3);
+ __ mov(CSP, SP);
__ ret();
}
@@ -2365,7 +2390,7 @@
ASSEMBLER_TEST_GENERATE(Vdups, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ LoadDImmediate(V0, 21.0, kNoPP);
__ fcvtsd(V0, V0);
__ vdups(V1, V0, 0);
@@ -2387,6 +2412,7 @@
__ faddd(V0, V1, V1);
__ faddd(V0, V0, V2);
__ faddd(V0, V0, V3);
+ __ mov(CSP, SP);
__ ret();
}
@@ -2398,7 +2424,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].
@@ -2410,6 +2436,7 @@
__ fldrd(V3, Address(SP, 1 * dword_bytes, Address::PostIndex));
__ fmovdd(V0, V3);
+ __ mov(CSP, SP);
__ ret();
}
@@ -2421,7 +2448,7 @@
ASSEMBLER_TEST_GENERATE(Vinss, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ LoadDImmediate(V0, 21.0, kNoPP);
__ fcvtsd(V0, V0);
__ vinss(V1, 3, V0, 0);
@@ -2444,6 +2471,7 @@
__ faddd(V0, V0, V1);
__ faddd(V0, V0, V2);
__ faddd(V0, V0, V3);
+ __ mov(CSP, SP);
__ ret();
}
@@ -3232,7 +3260,7 @@
// R1: value.
// R2: growable array.
ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
- __ mov(SP, CSP);
+ __ SetupDartSP(kTestStackSpace);
__ TagAndPushPP();
__ LoadPoolPointer(PP);
__ Push(CTX);
@@ -3244,6 +3272,7 @@
__ Pop(LR);
__ Pop(CTX);
__ PopAndUntagPP();
+ __ mov(CSP, SP);
__ ret();
}
« no previous file with comments | « runtime/vm/assembler_arm64.h ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698