ARM64: Fix LCodeGen::ToOperand32.
This fixes the following generated code sequence: movn w1, #0 // Synthesize -1. cmp w0, w1 With a properly-constructed Operand, the MacroAssembler can optimize it as follows: cmn w0, #1 BUG= R=ulan@chromium.org Review URL: https://codereview.chromium.org/253513003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20989 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
81a101678f
commit
486a9fdb3f
@ -1235,9 +1235,9 @@ Operand LCodeGen::ToOperand32(LOperand* op, IntegerSignedness signedness) {
|
|||||||
Representation r = chunk_->LookupLiteralRepresentation(const_op);
|
Representation r = chunk_->LookupLiteralRepresentation(const_op);
|
||||||
if (r.IsInteger32()) {
|
if (r.IsInteger32()) {
|
||||||
ASSERT(constant->HasInteger32Value());
|
ASSERT(constant->HasInteger32Value());
|
||||||
return Operand(signedness == SIGNED_INT32
|
return (signedness == SIGNED_INT32)
|
||||||
? constant->Integer32Value()
|
? Operand(constant->Integer32Value())
|
||||||
: static_cast<uint32_t>(constant->Integer32Value()));
|
: Operand(static_cast<uint32_t>(constant->Integer32Value()));
|
||||||
} else {
|
} else {
|
||||||
// Other constants not implemented.
|
// Other constants not implemented.
|
||||||
Abort(kToOperand32UnsupportedImmediate);
|
Abort(kToOperand32UnsupportedImmediate);
|
||||||
|
Loading…
Reference in New Issue
Block a user