| Index: runtime/vm/assembler_arm64_test.cc
|
| diff --git a/runtime/vm/assembler_arm64_test.cc b/runtime/vm/assembler_arm64_test.cc
|
| index 624a950e717bddb4bfab28bd343bdac7f041024c..1a55d4ce68b3e35296f6c09ca75fa5a843b7ea17 100644
|
| --- a/runtime/vm/assembler_arm64_test.cc
|
| +++ b/runtime/vm/assembler_arm64_test.cc
|
| @@ -15,6 +15,22 @@ namespace dart {
|
|
|
| #define __ assembler->
|
|
|
| +
|
| +// Copies the stack pointer to our "SP", actually R15. Also moves the real SP
|
| +// down so that we can do push and pop in tests. The Linux ABI does not seem
|
| +// to have a red zone.
|
| +static void SetUpStackFrame(Assembler* assembler) {
|
| + __ SetupDartSP();
|
| + __ EnterFrame(0);
|
| +}
|
| +
|
| +
|
| +static void TearDownStackFrame(Assembler* assembler) {
|
| + __ LeaveFrame();
|
| + __ RestoreCSP();
|
| +}
|
| +
|
| +
|
| ASSEMBLER_TEST_GENERATE(Simple, assembler) {
|
| __ add(R0, ZR, Operand(ZR));
|
| __ add(R0, R0, Operand(42));
|
| @@ -388,12 +404,12 @@ ASSEMBLER_TEST_RUN(WordOverflow, test) {
|
|
|
| // Loads and Stores.
|
| ASSEMBLER_TEST_GENERATE(SimpleLoadStore, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ str(R1, Address(SP, -1 * kWordSize, Address::PreIndex));
|
| __ ldr(R0, Address(SP, 1 * kWordSize, Address::PostIndex));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -405,13 +421,13 @@ ASSEMBLER_TEST_RUN(SimpleLoadStore, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(SimpleLoadStoreHeapTag, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ add(R2, SP, Operand(1));
|
| __ str(R1, Address(R2, -1));
|
| __ ldr(R0, Address(R2, -1));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -423,7 +439,7 @@ ASSEMBLER_TEST_RUN(SimpleLoadStoreHeapTag, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreLargeIndex, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| // Largest negative offset that can fit in the signed 9-bit immediate field.
|
| @@ -432,7 +448,7 @@ ASSEMBLER_TEST_GENERATE(LoadStoreLargeIndex, assembler) {
|
| __ ldr(R0, Address(SP, 31 * kWordSize, Address::PostIndex));
|
| // Correction.
|
| __ add(SP, SP, Operand(kWordSize)); // Restore SP.
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -444,14 +460,14 @@ ASSEMBLER_TEST_RUN(LoadStoreLargeIndex, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreLargeOffset, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ sub(SP, SP, Operand(512 * kWordSize));
|
| __ str(R1, Address(SP, 512 * kWordSize, Address::Offset));
|
| __ add(SP, SP, Operand(512 * kWordSize));
|
| __ ldr(R0, Address(SP));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -463,7 +479,7 @@ ASSEMBLER_TEST_RUN(LoadStoreLargeOffset, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreExtReg, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ movz(R2, Immediate(0xfff8), 0);
|
| @@ -474,7 +490,7 @@ ASSEMBLER_TEST_GENERATE(LoadStoreExtReg, assembler) {
|
| __ sub(SP, SP, Operand(kWordSize));
|
| __ ldr(R0, Address(SP));
|
| __ add(SP, SP, Operand(kWordSize));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -486,7 +502,7 @@ ASSEMBLER_TEST_RUN(LoadStoreExtReg, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(43), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ movz(R2, Immediate(10), 0);
|
| @@ -495,7 +511,7 @@ ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
|
| __ str(R1, Address(SP, R2, UXTX, Address::Scaled));
|
| __ ldr(R0, Address(SP, R2, UXTX, Address::Scaled));
|
| __ add(SP, SP, Operand(10 * kWordSize));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -507,12 +523,12 @@ ASSEMBLER_TEST_RUN(LoadStoreScaledReg, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadSigned32Bit, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadImmediate(R1, 0xffffffff);
|
| __ str(R1, Address(SP, -4, Address::PreIndex, kWord), kWord);
|
| __ ldr(R0, Address(SP), kWord);
|
| __ ldr(R1, Address(SP, 4, Address::PostIndex, kWord), kWord);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -524,13 +540,13 @@ ASSEMBLER_TEST_RUN(LoadSigned32Bit, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(SimpleLoadStorePair, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadImmediate(R2, 43);
|
| __ LoadImmediate(R3, 42);
|
| __ stp(R2, R3, Address(SP, -2 * kWordSize, Address::PairPreIndex));
|
| __ ldp(R0, R1, Address(SP, 2 * kWordSize, Address::PairPostIndex));
|
| __ sub(R0, R0, Operand(R1));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -542,7 +558,7 @@ ASSEMBLER_TEST_RUN(SimpleLoadStorePair, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadStorePairOffset, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadImmediate(R2, 43);
|
| __ LoadImmediate(R3, 42);
|
| __ sub(SP, SP, Operand(4 * kWordSize));
|
| @@ -550,7 +566,7 @@ ASSEMBLER_TEST_GENERATE(LoadStorePairOffset, assembler) {
|
| __ ldp(R0, R1, Address::Pair(SP, 2 * kWordSize));
|
| __ add(SP, SP, Operand(4 * kWordSize));
|
| __ sub(R0, R0, Operand(R1));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -562,7 +578,7 @@ ASSEMBLER_TEST_RUN(LoadStorePairOffset, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(40), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ Push(R0);
|
| @@ -573,7 +589,7 @@ ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
|
| __ cmp(TMP, Operand(0));
|
| __ b(&retry, NE); // NE if context switch occurred between ldrex and strex.
|
| __ Pop(R0); // 42
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -586,7 +602,7 @@ ASSEMBLER_TEST_RUN(Semaphore, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ movz(R0, Immediate(40), 0);
|
| __ movz(R1, Immediate(42), 0);
|
| __ Push(R0);
|
| @@ -595,7 +611,7 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
|
| __ stxr(TMP, R1, SP); // IP == 1, failure
|
| __ Pop(R0); // 40
|
| __ add(R0, R0, Operand(TMP));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -608,7 +624,8 @@ ASSEMBLER_TEST_RUN(FailedSemaphore, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Semaphore32, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| + __ EnterFrame(0);
|
| __ movz(R0, Immediate(40), 0);
|
| __ add(R0, R0, Operand(R0, LSL, 32));
|
| __ Push(R0);
|
| @@ -625,7 +642,7 @@ ASSEMBLER_TEST_GENERATE(Semaphore32, assembler) {
|
| __ cmp(TMP, Operand(0));
|
| __ b(&retry, NE); // NE if context switch occurred between ldrex and strex.
|
| __ Pop(R0); // 42 + 42 * 2**32
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -641,7 +658,8 @@ ASSEMBLER_TEST_RUN(Semaphore32, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FailedSemaphore32, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| + __ EnterFrame(0);
|
| __ movz(R0, Immediate(40), 0);
|
| __ add(R0, R0, Operand(R0, LSL, 32));
|
| __ Push(R0);
|
| @@ -654,7 +672,7 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore32, assembler) {
|
| __ stxr(TMP, R1, SP, kWord); // IP == 1, failure
|
| __ Pop(R0); // 40
|
| __ add(R0, R0, Operand(TMP));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -1924,11 +1942,11 @@ static void LeaveTestFrame(Assembler* assembler) {
|
|
|
| // Loading immediate values with the object pool.
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPSmall, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadImmediate(R0, 42);
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -1939,11 +1957,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPSmall, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadImmediate(R0, 0xf1234123);
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -1954,11 +1972,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPMed, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed2, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadImmediate(R0, 0x4321f1234124);
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -1969,11 +1987,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPMed2, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadImmediatePPLarge, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadImmediate(R0, 0x9287436598237465);
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -1986,11 +2004,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPLarge, test) {
|
|
|
| // LoadObject null.
|
| ASSEMBLER_TEST_GENERATE(LoadObjectNull, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadObject(R0, Object::null_object());
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2001,11 +2019,11 @@ ASSEMBLER_TEST_RUN(LoadObjectNull, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadObjectTrue, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadObject(R0, Bool::True());
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2016,11 +2034,11 @@ ASSEMBLER_TEST_RUN(LoadObjectTrue, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(LoadObjectFalse, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| EnterTestFrame(assembler);
|
| __ LoadObject(R0, Bool::False());
|
| LeaveTestFrame(assembler);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2208,11 +2226,11 @@ ASSEMBLER_TEST_RUN(Fmovsr, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdPrePostIndex, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ fstrd(V1, Address(SP, -1 * kWordSize, Address::PreIndex));
|
| __ fldrd(V0, Address(SP, 1 * kWordSize, Address::PostIndex));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2224,13 +2242,13 @@ ASSEMBLER_TEST_RUN(FldrdFstrdPrePostIndex, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrsFstrsPrePostIndex, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ fcvtsd(V2, V1);
|
| __ fstrs(V2, Address(SP, -1 * kWordSize, Address::PreIndex));
|
| __ fldrs(V3, Address(SP, 1 * kWordSize, Address::PostIndex));
|
| __ fcvtds(V0, V3);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2242,7 +2260,7 @@ ASSEMBLER_TEST_RUN(FldrsFstrsPrePostIndex, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrqFstrqPrePostIndex, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V1, 21.0);
|
| __ LoadDImmediate(V2, 21.0);
|
| __ LoadImmediate(R1, 42);
|
| @@ -2255,7 +2273,7 @@ ASSEMBLER_TEST_GENERATE(FldrqFstrqPrePostIndex, assembler) {
|
| __ PopDouble(V0);
|
| __ PopDouble(V1);
|
| __ faddd(V0, V0, V1);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2428,7 +2446,7 @@ ASSEMBLER_TEST_RUN(Fsubd, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdHeapTag, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ AddImmediate(SP, SP, -1 * kWordSize);
|
| @@ -2436,7 +2454,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdHeapTag, assembler) {
|
| __ fstrd(V1, Address(R2, -1));
|
| __ fldrd(V0, Address(R2, -1));
|
| __ AddImmediate(SP, 1 * kWordSize);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2448,7 +2466,7 @@ ASSEMBLER_TEST_RUN(FldrdFstrdHeapTag, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeIndex, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| // Largest negative offset that can fit in the signed 9-bit immediate field.
|
| @@ -2457,7 +2475,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeIndex, assembler) {
|
| __ fldrd(V0, Address(SP, 31 * kWordSize, Address::PostIndex));
|
| // Correction.
|
| __ add(SP, SP, Operand(kWordSize)); // Restore SP.
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2469,14 +2487,14 @@ ASSEMBLER_TEST_RUN(FldrdFstrdLargeIndex, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeOffset, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ sub(SP, SP, Operand(512 * kWordSize));
|
| __ fstrd(V1, Address(SP, 512 * kWordSize, Address::Offset));
|
| __ add(SP, SP, Operand(512 * kWordSize));
|
| __ fldrd(V0, Address(SP));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2488,7 +2506,7 @@ ASSEMBLER_TEST_RUN(FldrdFstrdLargeOffset, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdExtReg, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ movz(R2, Immediate(0xfff8), 0);
|
| @@ -2499,7 +2517,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdExtReg, assembler) {
|
| __ sub(SP, SP, Operand(kWordSize));
|
| __ fldrd(V0, Address(SP));
|
| __ add(SP, SP, Operand(kWordSize));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2511,7 +2529,7 @@ ASSEMBLER_TEST_RUN(FldrdFstrdExtReg, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(FldrdFstrdScaledReg, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 43.0);
|
| __ LoadDImmediate(V1, 42.0);
|
| __ movz(R2, Immediate(10), 0);
|
| @@ -2520,7 +2538,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdScaledReg, assembler) {
|
| __ fstrd(V1, Address(SP, R2, UXTX, Address::Scaled));
|
| __ fldrd(V0, Address(SP, R2, UXTX, Address::Scaled));
|
| __ add(SP, SP, Operand(10 * kWordSize));
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2975,7 +2993,7 @@ ASSEMBLER_TEST_RUN(Vdivd, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vdupd, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 21.0);
|
| __ vdupd(V1, V0, 0);
|
|
|
| @@ -2987,7 +3005,7 @@ ASSEMBLER_TEST_GENERATE(Vdupd, assembler) {
|
| __ fldrd(V3, Address(SP, 1 * dword_bytes, Address::PostIndex));
|
|
|
| __ faddd(V0, V2, V3);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -2999,7 +3017,7 @@ ASSEMBLER_TEST_RUN(Vdupd, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vdups, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 21.0);
|
| __ fcvtsd(V0, V0);
|
| __ vdups(V1, V0, 0);
|
| @@ -3021,7 +3039,7 @@ ASSEMBLER_TEST_GENERATE(Vdups, assembler) {
|
| __ faddd(V0, V1, V1);
|
| __ faddd(V0, V0, V2);
|
| __ faddd(V0, V0, V3);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -3033,7 +3051,7 @@ ASSEMBLER_TEST_RUN(Vdups, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vinsd, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V5, 42.0);
|
| __ vinsd(V1, 1, V5, 0); // V1[1] <- V0[0].
|
|
|
| @@ -3045,7 +3063,7 @@ ASSEMBLER_TEST_GENERATE(Vinsd, assembler) {
|
| __ fldrd(V3, Address(SP, 1 * dword_bytes, Address::PostIndex));
|
|
|
| __ fmovdd(V0, V3);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -3057,7 +3075,7 @@ ASSEMBLER_TEST_RUN(Vinsd, test) {
|
|
|
|
|
| ASSEMBLER_TEST_GENERATE(Vinss, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ LoadDImmediate(V0, 21.0);
|
| __ fcvtsd(V0, V0);
|
| __ vinss(V1, 3, V0, 0);
|
| @@ -3080,7 +3098,7 @@ ASSEMBLER_TEST_GENERATE(Vinss, assembler) {
|
| __ faddd(V0, V0, V1);
|
| __ faddd(V0, V0, V2);
|
| __ faddd(V0, V0, V3);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
| @@ -3876,7 +3894,7 @@ ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
|
| // R1: growable array.
|
| // R2: current thread.
|
| ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
|
| - __ SetupDartSP();
|
| + SetUpStackFrame(assembler);
|
| __ Push(CODE_REG);
|
| __ Push(THR);
|
| __ Push(LR);
|
| @@ -3886,7 +3904,7 @@ ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
|
| __ Pop(LR);
|
| __ Pop(THR);
|
| __ Pop(CODE_REG);
|
| - __ RestoreCSP();
|
| + TearDownStackFrame(assembler);
|
| __ ret();
|
| }
|
|
|
|
|