From b762d2ebf9dc604561d9915c96b377235c94960c Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Wed, 22 Oct 2014 10:11:06 +0100 Subject: Various fixes related to integer negate operations. - Emit an RSB instruction for HNeg nodes in the ARM code generator instead of RSBS, as we do not need to update the condition code flags in this case. - Simply punt when trying to statically evaluate a long unary operation, instead of aborting. - Move a test case to the right place. Change-Id: I35eb8dea58ed35258d4d8df77181159c3ab07b6f --- compiler/optimizing/code_generator_arm.cc | 2 +- compiler/optimizing/nodes.cc | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'compiler/optimizing') diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc index 24b7c2dd42..f07cb30a64 100644 --- a/compiler/optimizing/code_generator_arm.cc +++ b/compiler/optimizing/code_generator_arm.cc @@ -1065,7 +1065,7 @@ void InstructionCodeGeneratorARM::VisitNeg(HNeg* neg) { switch (neg->GetResultType()) { case Primitive::kPrimInt: DCHECK(in.IsRegister()); - __ rsbs(out.As(), in.As(), ShifterOperand(0)); + __ rsb(out.As(), in.As(), ShifterOperand(0)); break; case Primitive::kPrimLong: diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 0505510213..d624ad5e5e 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -602,7 +602,11 @@ HConstant* HUnaryOperation::TryStaticEvaluation() const { int32_t value = Evaluate(GetInput()->AsIntConstant()->GetValue()); return new(GetBlock()->GetGraph()->GetArena()) HIntConstant(value); } else if (GetInput()->IsLongConstant()) { - LOG(FATAL) << "Static evaluation of long unary operations is not yet implemented."; + // TODO: Implement static evaluation of long unary operations. + // + // Do not exit with a fatal condition here. Instead, simply + // return `nullptr' to notify the caller that this instruction + // cannot (yet) be statically evaluated. return nullptr; } return nullptr; -- cgit v1.2.3-59-g8ed1b