From fa93b504b324784dd9a96e28e6e8f3f1b1ac456a Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Wed, 21 Jan 2015 15:44:16 +0000 Subject: Do not use HNot for creating !bool. HNot folds to ~, not !. Change-Id: I681f968449a2ade7110b2f316146ad16ba5da74c --- compiler/optimizing/code_generator_arm.cc | 4 ---- compiler/optimizing/code_generator_arm64.cc | 4 ---- compiler/optimizing/code_generator_x86.cc | 4 ---- compiler/optimizing/code_generator_x86_64.cc | 4 ---- compiler/optimizing/instruction_simplifier.cc | 5 ++--- 5 files changed, 2 insertions(+), 19 deletions(-) (limited to 'compiler/optimizing') diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc index 07c84bcc01..32ec535be1 100644 --- a/compiler/optimizing/code_generator_arm.cc +++ b/compiler/optimizing/code_generator_arm.cc @@ -2437,10 +2437,6 @@ void InstructionCodeGeneratorARM::VisitNot(HNot* not_) { Location out = locations->Out(); Location in = locations->InAt(0); switch (not_->InputAt(0)->GetType()) { - case Primitive::kPrimBoolean: - __ eor(out.AsRegister(), in.AsRegister(), ShifterOperand(1)); - break; - case Primitive::kPrimInt: __ mvn(out.AsRegister(), ShifterOperand(in.AsRegister())); break; diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc index 306845beb8..5bbcd55916 100644 --- a/compiler/optimizing/code_generator_arm64.cc +++ b/compiler/optimizing/code_generator_arm64.cc @@ -2269,10 +2269,6 @@ void LocationsBuilderARM64::VisitNot(HNot* instruction) { void InstructionCodeGeneratorARM64::VisitNot(HNot* instruction) { switch (instruction->InputAt(0)->GetType()) { - case Primitive::kPrimBoolean: - __ Eor(OutputRegister(instruction), InputRegisterAt(instruction, 0), Operand(1)); - break; - case Primitive::kPrimInt: case Primitive::kPrimLong: __ Mvn(OutputRegister(instruction), InputOperandAt(instruction, 0)); diff --git a/compiler/optimizing/code_generator_x86.cc b/compiler/optimizing/code_generator_x86.cc index 57f01e8e16..25a6e84fd1 100644 --- a/compiler/optimizing/code_generator_x86.cc +++ b/compiler/optimizing/code_generator_x86.cc @@ -2608,10 +2608,6 @@ void InstructionCodeGeneratorX86::VisitNot(HNot* not_) { Location out = locations->Out(); DCHECK(in.Equals(out)); switch (not_->InputAt(0)->GetType()) { - case Primitive::kPrimBoolean: - __ xorl(out.AsRegister(), Immediate(1)); - break; - case Primitive::kPrimInt: __ notl(out.AsRegister()); break; diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc index dd6861f67b..619ac09ca6 100644 --- a/compiler/optimizing/code_generator_x86_64.cc +++ b/compiler/optimizing/code_generator_x86_64.cc @@ -2469,10 +2469,6 @@ void InstructionCodeGeneratorX86_64::VisitNot(HNot* not_) { locations->Out().AsRegister().AsRegister()); Location out = locations->Out(); switch (not_->InputAt(0)->GetType()) { - case Primitive::kPrimBoolean: - __ xorq(out.AsRegister(), Immediate(1)); - break; - case Primitive::kPrimInt: __ notl(out.AsRegister()); break; diff --git a/compiler/optimizing/instruction_simplifier.cc b/compiler/optimizing/instruction_simplifier.cc index 49ca44331d..63bc4ae671 100644 --- a/compiler/optimizing/instruction_simplifier.cc +++ b/compiler/optimizing/instruction_simplifier.cc @@ -59,10 +59,9 @@ void InstructionSimplifierVisitor::VisitEqual(HEqual* equal) { equal->ReplaceWith(equal->InputAt(0)); equal->GetBlock()->RemoveInstruction(equal); } else { - // Replace (bool_value == 0) with !bool_value + // We should replace (bool_value == 0) with !bool_value, but we unfortunately + // do not have such instruction. DCHECK_EQ(input2->AsIntConstant()->GetValue(), 0); - equal->GetBlock()->ReplaceAndRemoveInstructionWith( - equal, new (GetGraph()->GetArena()) HNot(Primitive::kPrimBoolean, input1)); } } } -- cgit v1.2.3