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

Unified Diff: src/arm/macro-assembler-arm.cc

Issue 24793002: Thumb2 Backend: Make arithmetic instructions set condition codes by default Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | test/cctest/test-disasm-arm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm/macro-assembler-arm.cc
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
index e8e72b54c08e96f92d7eff4636c8ad6a20fb1a00..af138594a8605b5b2566b34ddb2d45fe7faac337 100644
--- a/src/arm/macro-assembler-arm.cc
+++ b/src/arm/macro-assembler-arm.cc
@@ -97,7 +97,7 @@ void MacroAssembler::Call(Register target, Condition cond) {
int MacroAssembler::CallSize(
Address target, RelocInfo::Mode rmode, Condition cond) {
int size = 2 * kInstrSize;
- Instr mov_instr = cond | MOV | LeaveCC;
+ Instr mov_instr = cond | MOV | LeaveCCBit;
intptr_t immediate = reinterpret_cast<intptr_t>(target);
if (!Operand(immediate, rmode).is_single_instruction(this, mov_instr)) {
size += kInstrSize;
@@ -109,7 +109,7 @@ int MacroAssembler::CallSize(
int MacroAssembler::CallSizeNotPredictableCodeSize(
Address target, RelocInfo::Mode rmode, Condition cond) {
int size = 2 * kInstrSize;
- Instr mov_instr = cond | MOV | LeaveCC;
+ Instr mov_instr = cond | MOV | LeaveCCBit;
intptr_t immediate = reinterpret_cast<intptr_t>(target);
if (!Operand(immediate, rmode).is_single_instruction(NULL, mov_instr)) {
size += kInstrSize;
@@ -149,7 +149,7 @@ void MacroAssembler::Call(Address target,
// we have to do it explicitly.
positions_recorder()->WriteRecordedPositions();
- mov(ip, Operand(reinterpret_cast<int32_t>(target), rmode));
+ mov(ip, Operand(reinterpret_cast<int32_t>(target), rmode), LeaveCC);
blx(ip, cond);
if (mode == NEVER_INLINE_TARGET_ADDRESS) {
@@ -208,13 +208,13 @@ void MacroAssembler::Swap(Register reg1,
Register scratch,
Condition cond) {
if (scratch.is(no_reg)) {
- eor(reg1, reg1, Operand(reg2), LeaveCC, cond);
- eor(reg2, reg2, Operand(reg1), LeaveCC, cond);
- eor(reg1, reg1, Operand(reg2), LeaveCC, cond);
+ eor(reg1, reg1, Operand(reg2), DontCareCC, cond);
+ eor(reg2, reg2, Operand(reg1), DontCareCC, cond);
+ eor(reg1, reg1, Operand(reg2), DontCareCC, cond);
} else {
- mov(scratch, reg1, LeaveCC, cond);
- mov(reg1, reg2, LeaveCC, cond);
- mov(reg2, scratch, LeaveCC, cond);
+ mov(scratch, reg1, DontCareCC, cond);
+ mov(reg1, reg2, DontCareCC, cond);
+ mov(reg2, scratch, DontCareCC, cond);
}
}
@@ -231,7 +231,7 @@ void MacroAssembler::Push(Handle<Object> handle) {
void MacroAssembler::Move(Register dst, Handle<Object> value) {
- mov(dst, Operand(value));
+ mov(dst, Operand(value), LeaveCC);
}
@@ -254,7 +254,7 @@ void MacroAssembler::And(Register dst, Register src1, const Operand& src2,
if (!src2.is_reg() &&
!src2.must_output_reloc_info(this) &&
src2.immediate() == 0) {
- mov(dst, Operand::Zero(), LeaveCC, cond);
+ mov(dst, Operand::Zero(), DontCareCC, cond);
} else if (!src2.is_single_instruction(this) &&
!src2.must_output_reloc_info(this) &&
CpuFeatures::IsSupported(ARMv7) &&
@@ -262,7 +262,7 @@ void MacroAssembler::And(Register dst, Register src1, const Operand& src2,
ubfx(dst, src1, 0,
WhichPowerOf2(static_cast<uint32_t>(src2.immediate()) + 1), cond);
} else {
- and_(dst, src1, src2, LeaveCC, cond);
+ and_(dst, src1, src2, DontCareCC, cond);
}
}
@@ -272,9 +272,9 @@ void MacroAssembler::Ubfx(Register dst, Register src1, int lsb, int width,
ASSERT(lsb < 32);
if (!CpuFeatures::IsSupported(ARMv7) || predictable_code_size()) {
int mask = (1 << (width + lsb)) - 1 - ((1 << lsb) - 1);
- and_(dst, src1, Operand(mask), LeaveCC, cond);
+ and_(dst, src1, Operand(mask), DontCareCC, cond);
if (lsb != 0) {
- mov(dst, Operand(dst, LSR, lsb), LeaveCC, cond);
+ mov(dst, Operand(dst, LSR, lsb), DontCareCC, cond);
}
} else {
ubfx(dst, src1, lsb, width, cond);
@@ -287,14 +287,14 @@ void MacroAssembler::Sbfx(Register dst, Register src1, int lsb, int width,
ASSERT(lsb < 32);
if (!CpuFeatures::IsSupported(ARMv7) || predictable_code_size()) {
int mask = (1 << (width + lsb)) - 1 - ((1 << lsb) - 1);
- and_(dst, src1, Operand(mask), LeaveCC, cond);
+ and_(dst, src1, Operand(mask), DontCareCC, cond);
int shift_up = 32 - lsb - width;
int shift_down = lsb + shift_up;
if (shift_up != 0) {
- mov(dst, Operand(dst, LSL, shift_up), LeaveCC, cond);
+ mov(dst, Operand(dst, LSL, shift_up), DontCareCC, cond);
}
if (shift_down != 0) {
- mov(dst, Operand(dst, ASR, shift_down), LeaveCC, cond);
+ mov(dst, Operand(dst, ASR, shift_down), DontCareCC, cond);
}
} else {
sbfx(dst, src1, lsb, width, cond);
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | test/cctest/test-disasm-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698