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

Side by Side Diff: runtime/vm/assembler_arm64_test.cc

Issue 253623003: Enables all startup code for arm64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/assembler_arm64.cc ('k') | runtime/vm/code_generator_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_ARM64) 6 #if defined(TARGET_ARCH_ARM64)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/cpu.h" 9 #include "vm/cpu.h"
10 #include "vm/os.h" 10 #include "vm/os.h"
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry())); 372 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry()));
373 } 373 }
374 374
375 375
376 ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) { 376 ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
377 __ movz(R0, 43, 0); 377 __ movz(R0, 43, 0);
378 __ movz(R1, 42, 0); 378 __ movz(R1, 42, 0);
379 __ movz(R2, 10, 0); 379 __ movz(R2, 10, 0);
380 __ sub(SP, SP, Operand(10*kWordSize)); 380 __ sub(SP, SP, Operand(10*kWordSize));
381 // Store R1 into SP + R2 * kWordSize. 381 // Store R1 into SP + R2 * kWordSize.
382 __ str(R1, Address(SP, R2, UXTX, true)); 382 __ str(R1, Address(SP, R2, UXTX, Address::Scaled));
383 __ ldr(R0, Address(SP, R2, UXTX, true)); 383 __ ldr(R0, Address(SP, R2, UXTX, Address::Scaled));
384 __ add(SP, SP, Operand(10*kWordSize)); 384 __ add(SP, SP, Operand(10*kWordSize));
385 __ ret(); 385 __ ret();
386 } 386 }
387 387
388 388
389 ASSEMBLER_TEST_RUN(LoadStoreScaledReg, test) { 389 ASSEMBLER_TEST_RUN(LoadStoreScaledReg, test) {
390 typedef int (*SimpleCode)(); 390 typedef int (*SimpleCode)();
391 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry())); 391 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry()));
392 } 392 }
393 393
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 } 1279 }
1280 1280
1281 1281
1282 ASSEMBLER_TEST_RUN(LoadObjectFalse, test) { 1282 ASSEMBLER_TEST_RUN(LoadObjectFalse, test) {
1283 typedef int (*SimpleCode)(); 1283 typedef int (*SimpleCode)();
1284 EXPECT_EQ(reinterpret_cast<int64_t>(Bool::False().raw()), 1284 EXPECT_EQ(reinterpret_cast<int64_t>(Bool::False().raw()),
1285 EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry())); 1285 EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry()));
1286 } 1286 }
1287 1287
1288 1288
1289 ASSEMBLER_TEST_GENERATE(CSelTrue, assembler) {
1290 __ LoadImmediate(R1, 42, kNoRegister);
1291 __ LoadImmediate(R2, 1234, kNoRegister);
1292 __ CompareRegisters(R1, R2);
1293 __ csel(R0, R1, R2, LT);
1294 __ ret();
1295 }
1296
1297
1298 ASSEMBLER_TEST_RUN(CSelTrue, test) {
1299 typedef int (*SimpleCode)();
1300 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry()));
1301 }
1302
1303
1304 ASSEMBLER_TEST_GENERATE(CSelFalse, assembler) {
1305 __ LoadImmediate(R1, 42, kNoRegister);
1306 __ LoadImmediate(R2, 1234, kNoRegister);
1307 __ CompareRegisters(R1, R2);
1308 __ csel(R0, R1, R2, GE);
1309 __ ret();
1310 }
1311
1312
1313 ASSEMBLER_TEST_RUN(CSelFalse, test) {
1314 typedef int (*SimpleCode)();
1315 EXPECT_EQ(1234, EXECUTE_TEST_CODE_INT64(SimpleCode, test->entry()));
1316 }
1317
1318
1289 // Called from assembler_test.cc. 1319 // Called from assembler_test.cc.
1290 // LR: return address. 1320 // LR: return address.
1291 // R0: context. 1321 // R0: context.
1292 // R1: value. 1322 // R1: value.
1293 // R2: growable array. 1323 // R2: growable array.
1294 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) { 1324 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
1295 __ TagAndPushPP(); 1325 __ TagAndPushPP();
1296 __ LoadPoolPointer(PP); 1326 __ LoadPoolPointer(PP);
1297 __ Push(CTX); 1327 __ Push(CTX);
1298 __ Push(LR); 1328 __ Push(LR);
1299 __ mov(CTX, R0); 1329 __ mov(CTX, R0);
1300 __ StoreIntoObject(R2, 1330 __ StoreIntoObject(R2,
1301 FieldAddress(R2, GrowableObjectArray::data_offset()), 1331 FieldAddress(R2, GrowableObjectArray::data_offset()),
1302 R1); 1332 R1);
1303 __ Pop(LR); 1333 __ Pop(LR);
1304 __ Pop(CTX); 1334 __ Pop(CTX);
1305 __ PopAndUntagPP(); 1335 __ PopAndUntagPP();
1306 __ ret(); 1336 __ ret();
1307 } 1337 }
1308 1338
1309 } // namespace dart 1339 } // namespace dart
1310 1340
1311 #endif // defined(TARGET_ARCH_ARM64) 1341 #endif // defined(TARGET_ARCH_ARM64)
OLDNEW
« no previous file with comments | « runtime/vm/assembler_arm64.cc ('k') | runtime/vm/code_generator_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698