OLD | NEW |
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 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 void CompareImmediate(Register rn, int32_t value, Condition cond = AL); | 586 void CompareImmediate(Register rn, int32_t value, Condition cond = AL); |
587 | 587 |
588 | 588 |
589 // Signed integer division of left by right. Checks to see if integer | 589 // Signed integer division of left by right. Checks to see if integer |
590 // division is supported. If not, uses the FPU for division with | 590 // division is supported. If not, uses the FPU for division with |
591 // temporary registers tmpl and tmpr. tmpl and tmpr must be different | 591 // temporary registers tmpl and tmpr. tmpl and tmpr must be different |
592 // registers. | 592 // registers. |
593 void IntegerDivide(Register result, Register left, Register right, | 593 void IntegerDivide(Register result, Register left, Register right, |
594 DRegister tmpl, DRegister tmpr); | 594 DRegister tmpl, DRegister tmpr); |
595 | 595 |
| 596 // If we aren't on ARMv7, there is no smull. |
| 597 void CheckMultSignedOverflow(Register left, |
| 598 Register right, |
| 599 Register tmp, |
| 600 DRegister dtmp0, DRegister dtmp1, |
| 601 Label* overflow); |
| 602 |
596 // Load and Store. May clobber IP. | 603 // Load and Store. May clobber IP. |
597 void LoadPatchableImmediate(Register rd, int32_t value, Condition cond = AL); | 604 void LoadPatchableImmediate(Register rd, int32_t value, Condition cond = AL); |
598 void LoadDecodableImmediate(Register rd, int32_t value, Condition cond = AL); | 605 void LoadDecodableImmediate(Register rd, int32_t value, Condition cond = AL); |
599 void LoadImmediate(Register rd, int32_t value, Condition cond = AL); | 606 void LoadImmediate(Register rd, int32_t value, Condition cond = AL); |
600 void LoadSImmediate(SRegister sd, float value, Condition cond = AL); | 607 void LoadSImmediate(SRegister sd, float value, Condition cond = AL); |
601 void LoadDImmediate(DRegister dd, double value, | 608 void LoadDImmediate(DRegister dd, double value, |
602 Register scratch, Condition cond = AL); | 609 Register scratch, Condition cond = AL); |
603 | 610 |
604 void MarkExceptionHandler(Label* label); | 611 void MarkExceptionHandler(Label* label); |
605 | 612 |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 Register value, | 905 Register value, |
899 Label* no_update); | 906 Label* no_update); |
900 | 907 |
901 DISALLOW_ALLOCATION(); | 908 DISALLOW_ALLOCATION(); |
902 DISALLOW_COPY_AND_ASSIGN(Assembler); | 909 DISALLOW_COPY_AND_ASSIGN(Assembler); |
903 }; | 910 }; |
904 | 911 |
905 } // namespace dart | 912 } // namespace dart |
906 | 913 |
907 #endif // VM_ASSEMBLER_ARM_H_ | 914 #endif // VM_ASSEMBLER_ARM_H_ |
OLD | NEW |