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

Side by Side Diff: src/DartARM32/assembler_arm.cc

Issue 1433743002: Add POP instruction to ARM integrated assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Clean up push/pop. Created 5 years, 1 month 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
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 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe 5 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe
6 // Please update the (git) revision if we merge changes from Dart. 6 // Please update the (git) revision if we merge changes from Dart.
7 // https://code.google.com/p/dart/wiki/GettingTheSource 7 // https://code.google.com/p/dart/wiki/GettingTheSource
8 8
9 #include "vm/globals.h" // NOLINT 9 #include "vm/globals.h" // NOLINT
10 #if defined(TARGET_ARCH_ARM) 10 #if defined(TARGET_ARCH_ARM)
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 ASSERT((rd % 2) == 0); 542 ASSERT((rd % 2) == 0);
543 if (TargetCPUFeatures::arm_version() == ARMv5TE) { 543 if (TargetCPUFeatures::arm_version() == ARMv5TE) {
544 const Register rd2 = static_cast<Register>(static_cast<int32_t>(rd) + 1); 544 const Register rd2 = static_cast<Register>(static_cast<int32_t>(rd) + 1);
545 str(rd, Address(rn, offset), cond); 545 str(rd, Address(rn, offset), cond);
546 str(rd2, Address(rn, offset + kWordSize), cond); 546 str(rd2, Address(rn, offset + kWordSize), cond);
547 } else { 547 } else {
548 EmitMemOpAddressMode3(cond, B7 | B6 | B5 | B4, rd, Address(rn, offset)); 548 EmitMemOpAddressMode3(cond, B7 | B6 | B5 | B4, rd, Address(rn, offset));
549 } 549 }
550 } 550 }
551 551
552 552 #if 0
553 // Folded into ARM32::AssemblerARM32::popList(), since it is its only
554 // use (and doesn't implement ARM STM instruction).
553 void Assembler::ldm(BlockAddressMode am, Register base, RegList regs, 555 void Assembler::ldm(BlockAddressMode am, Register base, RegList regs,
554 Condition cond) { 556 Condition cond) {
555 ASSERT(regs != 0); 557 ASSERT(regs != 0);
556 EmitMultiMemOp(cond, am, true, base, regs); 558 EmitMultiMemOp(cond, am, true, base, regs);
557 } 559 }
558 560
559
560 #if 0
561 // Folded into ARM32::AssemblerARM32::pushList(), since it is its only 561 // Folded into ARM32::AssemblerARM32::pushList(), since it is its only
562 // use (and doesn't implement ARM STM instruction). 562 // use (and doesn't implement ARM STM instruction).
563 void Assembler::stm(BlockAddressMode am, Register base, RegList regs, 563 void Assembler::stm(BlockAddressMode am, Register base, RegList regs,
564 Condition cond) { 564 Condition cond) {
565 ASSERT(regs != 0); 565 ASSERT(regs != 0);
566 EmitMultiMemOp(cond, am, false, base, regs); 566 EmitMultiMemOp(cond, am, false, base, regs);
567 } 567 }
568 #endif 568 #endif
569 569
570 570
(...skipping 1990 matching lines...) Expand 10 before | Expand all | Expand 10 after
2561 bool is_load, intptr_t cid, int64_t offset) { 2561 bool is_load, intptr_t cid, int64_t offset) {
2562 int32_t offset_mask = 0; 2562 int32_t offset_mask = 0;
2563 if (is_load) { 2563 if (is_load) {
2564 return CanHoldLoadOffset(OperandSizeFor(cid), offset, &offset_mask); 2564 return CanHoldLoadOffset(OperandSizeFor(cid), offset, &offset_mask);
2565 } else { 2565 } else {
2566 return CanHoldStoreOffset(OperandSizeFor(cid), offset, &offset_mask); 2566 return CanHoldStoreOffset(OperandSizeFor(cid), offset, &offset_mask);
2567 } 2567 }
2568 } 2568 }
2569 2569
2570 #if 0 2570 #if 0
2571 // Moved to ARM32::AssemblerARM32::push(); 2571 // Moved to ARM32::AssemblerARM32::push().
2572 void Assembler::Push(Register rd, Condition cond) { 2572 void Assembler::Push(Register rd, Condition cond) {
2573 str(rd, Address(SP, -kWordSize, Address::PreIndex), cond); 2573 str(rd, Address(SP, -kWordSize, Address::PreIndex), cond);
2574 } 2574 }
2575 #endif
2576 2575
2576 // Moved to ARM32::AssemblerARM32::pop().
2577 void Assembler::Pop(Register rd, Condition cond) { 2577 void Assembler::Pop(Register rd, Condition cond) {
2578 ldr(rd, Address(SP, kWordSize, Address::PostIndex), cond); 2578 ldr(rd, Address(SP, kWordSize, Address::PostIndex), cond);
2579 } 2579 }
2580 2580
2581 #if 0 2581 // Moved to ARM32::AssemblerARM32::pushList().
2582 // Moved to ARM32::AssemblerARM32::pushList();
2583 void Assembler::PushList(RegList regs, Condition cond) { 2582 void Assembler::PushList(RegList regs, Condition cond) {
2584 stm(DB_W, SP, regs, cond); 2583 stm(DB_W, SP, regs, cond);
2585 } 2584 }
2586 #endif
2587 2585
2586 // Moved to ARM32::AssemblerARM32::popList().
2588 void Assembler::PopList(RegList regs, Condition cond) { 2587 void Assembler::PopList(RegList regs, Condition cond) {
2589 ldm(IA_W, SP, regs, cond); 2588 ldm(IA_W, SP, regs, cond);
2590 } 2589 }
2591 2590 #endif
2592 2591
2593 void Assembler::MoveRegister(Register rd, Register rm, Condition cond) { 2592 void Assembler::MoveRegister(Register rd, Register rm, Condition cond) {
2594 if (rd != rm) { 2593 if (rd != rm) {
2595 mov(rd, Operand(rm), cond); 2594 mov(rd, Operand(rm), cond);
2596 } 2595 }
2597 } 2596 }
2598 2597
2599 2598
2600 void Assembler::Lsl(Register rd, Register rm, const Operand& shift_imm, 2599 void Assembler::Lsl(Register rd, Register rm, const Operand& shift_imm,
2601 Condition cond) { 2600 Condition cond) {
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
3691 3690
3692 3691
3693 const char* Assembler::FpuRegisterName(FpuRegister reg) { 3692 const char* Assembler::FpuRegisterName(FpuRegister reg) {
3694 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); 3693 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters));
3695 return fpu_reg_names[reg]; 3694 return fpu_reg_names[reg];
3696 } 3695 }
3697 3696
3698 } // namespace dart 3697 } // namespace dart
3699 3698
3700 #endif // defined TARGET_ARCH_ARM 3699 #endif // defined TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/DartARM32/assembler_arm.h ('k') | src/IceAssemblerARM32.h » ('j') | src/IceInstARM32.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698