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

Side by Side Diff: src/arm/assembler-arm.h

Issue 426233002: Land the Fan (disabled) (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 // The constant for movw and movt should be in the range 0-0xffff. 915 // The constant for movw and movt should be in the range 0-0xffff.
916 void movw(Register reg, uint32_t immediate, Condition cond = al); 916 void movw(Register reg, uint32_t immediate, Condition cond = al);
917 void movt(Register reg, uint32_t immediate, Condition cond = al); 917 void movt(Register reg, uint32_t immediate, Condition cond = al);
918 918
919 void bic(Register dst, Register src1, const Operand& src2, 919 void bic(Register dst, Register src1, const Operand& src2,
920 SBit s = LeaveCC, Condition cond = al); 920 SBit s = LeaveCC, Condition cond = al);
921 921
922 void mvn(Register dst, const Operand& src, 922 void mvn(Register dst, const Operand& src,
923 SBit s = LeaveCC, Condition cond = al); 923 SBit s = LeaveCC, Condition cond = al);
924 924
925 // Shift instructions
926
927 void asr(Register dst, Register src1, const Operand& src2,
928 SBit s = LeaveCC, Condition cond = al) {
929 if (src2.is_reg()) {
930 mov(dst, Operand(src1, ASR, src2.rm()), s, cond);
931 } else {
932 mov(dst, Operand(src1, ASR, src2.immediate()), s, cond);
933 }
934 }
935
936 void lsl(Register dst, Register src1, const Operand& src2,
937 SBit s = LeaveCC, Condition cond = al) {
938 if (src2.is_reg()) {
939 mov(dst, Operand(src1, LSL, src2.rm()), s, cond);
940 } else {
941 mov(dst, Operand(src1, LSL, src2.immediate()), s, cond);
942 }
943 }
944
945 void lsr(Register dst, Register src1, const Operand& src2,
946 SBit s = LeaveCC, Condition cond = al) {
947 if (src2.is_reg()) {
948 mov(dst, Operand(src1, LSR, src2.rm()), s, cond);
949 } else {
950 mov(dst, Operand(src1, LSR, src2.immediate()), s, cond);
951 }
952 }
953
925 // Multiply instructions 954 // Multiply instructions
926 955
927 void mla(Register dst, Register src1, Register src2, Register srcA, 956 void mla(Register dst, Register src1, Register src2, Register srcA,
928 SBit s = LeaveCC, Condition cond = al); 957 SBit s = LeaveCC, Condition cond = al);
929 958
930 void mls(Register dst, Register src1, Register src2, Register srcA, 959 void mls(Register dst, Register src1, Register src2, Register srcA,
931 Condition cond = al); 960 Condition cond = al);
932 961
933 void sdiv(Register dst, Register src1, Register src2, 962 void sdiv(Register dst, Register src1, Register src2,
934 Condition cond = al); 963 Condition cond = al);
935 964
965 void udiv(Register dst, Register src1, Register src2,
966 Condition cond = al);
967
936 void mul(Register dst, Register src1, Register src2, 968 void mul(Register dst, Register src1, Register src2,
937 SBit s = LeaveCC, Condition cond = al); 969 SBit s = LeaveCC, Condition cond = al);
938 970
939 void smlal(Register dstL, Register dstH, Register src1, Register src2, 971 void smlal(Register dstL, Register dstH, Register src1, Register src2,
940 SBit s = LeaveCC, Condition cond = al); 972 SBit s = LeaveCC, Condition cond = al);
941 973
942 void smull(Register dstL, Register dstH, Register src1, Register src2, 974 void smull(Register dstL, Register dstH, Register src1, Register src2,
943 SBit s = LeaveCC, Condition cond = al); 975 SBit s = LeaveCC, Condition cond = al);
944 976
945 void umlal(Register dstL, Register dstH, Register src1, Register src2, 977 void umlal(Register dstL, Register dstH, Register src1, Register src2,
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
1283 int SizeOfCodeGeneratedSince(Label* label) { 1315 int SizeOfCodeGeneratedSince(Label* label) {
1284 return pc_offset() - label->pos(); 1316 return pc_offset() - label->pos();
1285 } 1317 }
1286 1318
1287 // Check the number of instructions generated from label to here. 1319 // Check the number of instructions generated from label to here.
1288 int InstructionsGeneratedSince(Label* label) { 1320 int InstructionsGeneratedSince(Label* label) {
1289 return SizeOfCodeGeneratedSince(label) / kInstrSize; 1321 return SizeOfCodeGeneratedSince(label) / kInstrSize;
1290 } 1322 }
1291 1323
1292 // Check whether an immediate fits an addressing mode 1 instruction. 1324 // Check whether an immediate fits an addressing mode 1 instruction.
1293 bool ImmediateFitsAddrMode1Instruction(int32_t imm32); 1325 static bool ImmediateFitsAddrMode1Instruction(int32_t imm32);
1294 1326
1295 // Check whether an immediate fits an addressing mode 2 instruction. 1327 // Check whether an immediate fits an addressing mode 2 instruction.
1296 bool ImmediateFitsAddrMode2Instruction(int32_t imm32); 1328 bool ImmediateFitsAddrMode2Instruction(int32_t imm32);
1297 1329
1298 // Class for scoping postponing the constant pool generation. 1330 // Class for scoping postponing the constant pool generation.
1299 class BlockConstPoolScope { 1331 class BlockConstPoolScope {
1300 public: 1332 public:
1301 explicit BlockConstPoolScope(Assembler* assem) : assem_(assem) { 1333 explicit BlockConstPoolScope(Assembler* assem) : assem_(assem) {
1302 assem_->StartBlockConstPool(); 1334 assem_->StartBlockConstPool();
1303 } 1335 }
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 public: 1656 public:
1625 explicit EnsureSpace(Assembler* assembler) { 1657 explicit EnsureSpace(Assembler* assembler) {
1626 assembler->CheckBuffer(); 1658 assembler->CheckBuffer();
1627 } 1659 }
1628 }; 1660 };
1629 1661
1630 1662
1631 } } // namespace v8::internal 1663 } } // namespace v8::internal
1632 1664
1633 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1665 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/arm/assembler-arm.cc » ('j') | src/lithium-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698