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

Side by Side Diff: runtime/vm/assembler_arm.h

Issue 12459005: Adds muls, sdiv, udiv instructions to ARM simulator, assembler, disassembler (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 9 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 | « no previous file | runtime/vm/assembler_arm.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 #ifndef VM_ASSEMBLER_ARM_H_ 5 #ifndef VM_ASSEMBLER_ARM_H_
6 #define VM_ASSEMBLER_ARM_H_ 6 #define VM_ASSEMBLER_ARM_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_arm.h directly; use assembler.h instead. 9 #error Do not include assembler_arm.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 void mvn(Register rd, ShifterOperand so, Condition cond = AL); 383 void mvn(Register rd, ShifterOperand so, Condition cond = AL);
384 void mvns(Register rd, ShifterOperand so, Condition cond = AL); 384 void mvns(Register rd, ShifterOperand so, Condition cond = AL);
385 385
386 // Miscellaneous data-processing instructions. 386 // Miscellaneous data-processing instructions.
387 void clz(Register rd, Register rm, Condition cond = AL); 387 void clz(Register rd, Register rm, Condition cond = AL);
388 void movw(Register rd, uint16_t imm16, Condition cond = AL); 388 void movw(Register rd, uint16_t imm16, Condition cond = AL);
389 void movt(Register rd, uint16_t imm16, Condition cond = AL); 389 void movt(Register rd, uint16_t imm16, Condition cond = AL);
390 390
391 // Multiply instructions. 391 // Multiply instructions.
392 void mul(Register rd, Register rn, Register rm, Condition cond = AL); 392 void mul(Register rd, Register rn, Register rm, Condition cond = AL);
393 void muls(Register rd, Register rn, Register rm, Condition cond = AL);
393 void mla(Register rd, Register rn, Register rm, Register ra, 394 void mla(Register rd, Register rn, Register rm, Register ra,
394 Condition cond = AL); 395 Condition cond = AL);
395 void mls(Register rd, Register rn, Register rm, Register ra, 396 void mls(Register rd, Register rn, Register rm, Register ra,
396 Condition cond = AL); 397 Condition cond = AL);
397 void umull(Register rd_lo, Register rd_hi, Register rn, Register rm, 398 void umull(Register rd_lo, Register rd_hi, Register rn, Register rm,
398 Condition cond = AL); 399 Condition cond = AL);
399 400
401 // Division instructions.
402 void sdiv(Register rd, Register rn, Register rm, Condition cond = AL);
403 void udiv(Register rd, Register rn, Register rm, Condition cond = AL);
404
400 // Load/store instructions. 405 // Load/store instructions.
401 void ldr(Register rd, Address ad, Condition cond = AL); 406 void ldr(Register rd, Address ad, Condition cond = AL);
402 void str(Register rd, Address ad, Condition cond = AL); 407 void str(Register rd, Address ad, Condition cond = AL);
403 408
404 void ldrb(Register rd, Address ad, Condition cond = AL); 409 void ldrb(Register rd, Address ad, Condition cond = AL);
405 void strb(Register rd, Address ad, Condition cond = AL); 410 void strb(Register rd, Address ad, Condition cond = AL);
406 411
407 void ldrh(Register rd, Address ad, Condition cond = AL); 412 void ldrh(Register rd, Address ad, Condition cond = AL);
408 void strh(Register rd, Address ad, Condition cond = AL); 413 void strh(Register rd, Address ad, Condition cond = AL);
409 414
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 Register rm, 704 Register rm,
700 ShifterOperand so); 705 ShifterOperand so);
701 706
702 void EmitMulOp(Condition cond, 707 void EmitMulOp(Condition cond,
703 int32_t opcode, 708 int32_t opcode,
704 Register rd, 709 Register rd,
705 Register rn, 710 Register rn,
706 Register rm, 711 Register rm,
707 Register rs); 712 Register rs);
708 713
714 void EmitDivOp(Condition cond,
715 int32_t opcode,
716 Register rd,
717 Register rn,
718 Register rm);
719
709 void EmitMultiVSMemOp(Condition cond, 720 void EmitMultiVSMemOp(Condition cond,
710 BlockAddressMode am, 721 BlockAddressMode am,
711 bool load, 722 bool load,
712 Register base, 723 Register base,
713 SRegister start, 724 SRegister start,
714 uint32_t count); 725 uint32_t count);
715 726
716 void EmitMultiVDMemOp(Condition cond, 727 void EmitMultiVDMemOp(Condition cond,
717 BlockAddressMode am, 728 BlockAddressMode am,
718 bool load, 729 bool load,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 return *reg1 - *reg2; 764 return *reg1 - *reg2;
754 } 765 }
755 766
756 DISALLOW_ALLOCATION(); 767 DISALLOW_ALLOCATION();
757 DISALLOW_COPY_AND_ASSIGN(Assembler); 768 DISALLOW_COPY_AND_ASSIGN(Assembler);
758 }; 769 };
759 770
760 } // namespace dart 771 } // namespace dart
761 772
762 #endif // VM_ASSEMBLER_ARM_H_ 773 #endif // VM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/assembler_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698