| Index: runtime/vm/intermediate_language_x64.cc
|
| diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
|
| index 20e8c490cfe8fe4f6658a3394955d2d6037c3de0..e36e0345e1050ea3f7ec57d3e7f5a4e01f8ce3b2 100644
|
| --- a/runtime/vm/intermediate_language_x64.cc
|
| +++ b/runtime/vm/intermediate_language_x64.cc
|
| @@ -29,7 +29,7 @@ DECLARE_FLAG(bool, use_osr);
|
| // on the stack and return the result in a fixed register RAX.
|
| LocationSummary* Instruction::MakeCallSummary() {
|
| LocationSummary* result = new LocationSummary(0, 0, LocationSummary::kCall);
|
| - result->set_out(Location::RegisterLocation(RAX));
|
| + result->set_out(0, Location::RegisterLocation(RAX));
|
| return result;
|
| }
|
|
|
| @@ -124,13 +124,13 @@ static bool IsPowerOfTwoKind(intptr_t v1, intptr_t v2) {
|
| LocationSummary* IfThenElseInstr::MakeLocationSummary(bool opt) const {
|
| comparison()->InitializeLocationSummary(opt);
|
| // TODO(vegorov): support byte register constraints in the register allocator.
|
| - comparison()->locs()->set_out(Location::RegisterLocation(RDX));
|
| + comparison()->locs()->set_out(0, Location::RegisterLocation(RDX));
|
| return comparison()->locs();
|
| }
|
|
|
|
|
| void IfThenElseInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - ASSERT(locs()->out().reg() == RDX);
|
| + ASSERT(locs()->out(0).reg() == RDX);
|
|
|
| // Clear upper part of the out register. We are going to use setcc on it
|
| // which is a byte move.
|
| @@ -205,7 +205,7 @@ LocationSummary* StoreLocalInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void StoreLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| ASSERT(result == value); // Assert that register assignment is correct.
|
| __ movq(Address(RBP, local().index() * kWordSize), value);
|
| }
|
| @@ -221,8 +221,8 @@ LocationSummary* ConstantInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void ConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The register allocator drops constant definitions that have no uses.
|
| - if (!locs()->out().IsInvalid()) {
|
| - Register result = locs()->out().reg();
|
| + if (!locs()->out(0).IsInvalid()) {
|
| + Register result = locs()->out(0).reg();
|
| __ LoadObject(result, value(), PP);
|
| }
|
| }
|
| @@ -236,7 +236,7 @@ LocationSummary* AssertAssignableInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RegisterLocation(RAX)); // Value.
|
| summary->set_in(1, Location::RegisterLocation(RCX)); // Instantiator.
|
| summary->set_in(2, Location::RegisterLocation(RDX)); // Type arguments.
|
| - summary->set_out(Location::RegisterLocation(RAX));
|
| + summary->set_out(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| }
|
|
|
| @@ -247,7 +247,7 @@ LocationSummary* AssertBooleanInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(RAX));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
| @@ -280,7 +280,7 @@ static void EmitAssertBoolean(Register reg,
|
|
|
| void AssertBooleanInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register obj = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| EmitAssertBoolean(obj, token_pos(), deopt_id(), locs(), compiler);
|
| ASSERT(obj == result);
|
| @@ -310,7 +310,7 @@ LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| locs->set_in(0, Location::RequiresFpuRegister());
|
| locs->set_in(1, Location::RequiresFpuRegister());
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
| if (operation_cid() == kSmiCid) {
|
| @@ -324,7 +324,7 @@ LocationSummary* EqualityCompareInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_in(1, locs->in(0).IsConstant()
|
| ? Location::RequiresRegister()
|
| : Location::RegisterOrConstant(right()));
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
| UNREACHABLE();
|
| @@ -464,7 +464,7 @@ void EqualityCompareInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Condition true_condition = EmitComparisonCode(compiler, labels);
|
| EmitBranchOnCondition(compiler, true_condition, labels);
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| __ Bind(&is_false);
|
| __ LoadObject(result, Bool::False(), PP);
|
| @@ -537,7 +537,7 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| ASSERT(operation_cid() == kSmiCid);
|
| @@ -549,7 +549,7 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(1, summary->in(0).IsConstant()
|
| ? Location::RequiresRegister()
|
| : Location::RegisterOrConstant(right()));
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -571,7 +571,7 @@ void RelationalOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Condition true_condition = EmitComparisonCode(compiler, labels);
|
| EmitBranchOnCondition(compiler, true_condition, labels);
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| __ Bind(&is_false);
|
| __ LoadObject(result, Bool::False(), PP);
|
| @@ -598,7 +598,7 @@ LocationSummary* NativeCallInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_temp(0, Location::RegisterLocation(RAX));
|
| locs->set_temp(1, Location::RegisterLocation(RBX));
|
| locs->set_temp(2, Location::RegisterLocation(R10));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
| @@ -607,7 +607,7 @@ void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->temp(0).reg() == RAX);
|
| ASSERT(locs()->temp(1).reg() == RBX);
|
| ASSERT(locs()->temp(2).reg() == R10);
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| // Push the result place holder initialized to NULL.
|
| __ PushObject(Object::ZoneHandle(), PP);
|
| @@ -657,7 +657,7 @@ LocationSummary* StringFromCharCodeInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void StringFromCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register char_code = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ LoadImmediate(result,
|
| Immediate(reinterpret_cast<uword>(Symbols::PredefinedAddress())), PP);
|
| __ movq(result, Address(result,
|
| @@ -678,7 +678,7 @@ LocationSummary* StringToCharCodeInstr::MakeLocationSummary(bool opt) const {
|
| void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(cid_ == kOneByteStringCid);
|
| Register str = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label is_one, done;
|
| __ movq(result, FieldAddress(str, String::length_offset()));
|
| __ cmpq(result, Immediate(Smi::RawValue(1)));
|
| @@ -698,7 +698,7 @@ LocationSummary* StringInterpolateInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| summary->set_in(0, Location::RegisterLocation(RAX));
|
| - summary->set_out(Location::RegisterLocation(RAX));
|
| + summary->set_out(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| }
|
|
|
| @@ -714,7 +714,7 @@ void StringInterpolateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| kNumberOfArguments,
|
| kNoArgumentNames,
|
| locs());
|
| - ASSERT(locs()->out().reg() == RAX);
|
| + ASSERT(locs()->out(0).reg() == RAX);
|
| }
|
|
|
|
|
| @@ -728,7 +728,7 @@ LocationSummary* LoadUntaggedInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void LoadUntaggedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register object = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ movq(result, FieldAddress(object, offset()));
|
| }
|
|
|
| @@ -743,7 +743,7 @@ LocationSummary* LoadClassIdInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void LoadClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register object = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label load, done;
|
| __ testq(object, Immediate(kSmiTagMask));
|
| __ j(NOT_ZERO, &load, Assembler::kNearJump);
|
| @@ -847,9 +847,9 @@ LocationSummary* LoadIndexedInstr::MakeLocationSummary(bool opt) const {
|
| (representation() == kUnboxedFloat32x4) ||
|
| (representation() == kUnboxedInt32x4) ||
|
| (representation() == kUnboxedFloat64x2)) {
|
| - locs->set_out(Location::RequiresFpuRegister());
|
| + locs->set_out(0, Location::RequiresFpuRegister());
|
| } else {
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| }
|
| return locs;
|
| }
|
| @@ -887,7 +887,7 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ SmiUntag(index.reg());
|
| }
|
|
|
| - XmmRegister result = locs()->out().fpu_reg();
|
| + XmmRegister result = locs()->out(0).fpu_reg();
|
| if (class_id() == kTypedDataFloat32ArrayCid) {
|
| // Load single precision float.
|
| __ movss(result, element_address);
|
| @@ -905,7 +905,7 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if ((index_scale() == 1) && index.IsRegister()) {
|
| __ SmiUntag(index.reg());
|
| }
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| switch (class_id()) {
|
| case kTypedDataInt8ArrayCid:
|
| __ movsxb(result, element_address);
|
| @@ -1507,7 +1507,7 @@ class StoreInstanceFieldSlowPath : public SlowPathCode {
|
| const ExternalLabel label(cls_.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| @@ -1776,7 +1776,7 @@ LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -1788,7 +1788,7 @@ LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(bool opt) const {
|
| // This is safe only so long as LoadStaticFieldInstr cannot deoptimize.
|
| void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register field = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ movq(result, FieldAddress(field, Field::value_offset()));
|
| }
|
|
|
| @@ -1825,7 +1825,7 @@ LocationSummary* InstanceOfInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RegisterLocation(RAX));
|
| summary->set_in(1, Location::RegisterLocation(RCX));
|
| summary->set_in(2, Location::RegisterLocation(RDX));
|
| - summary->set_out(Location::RegisterLocation(RAX));
|
| + summary->set_out(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| }
|
|
|
| @@ -1840,7 +1840,7 @@ void InstanceOfInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| type(),
|
| negate_result(),
|
| locs());
|
| - ASSERT(locs()->out().reg() == RAX);
|
| + ASSERT(locs()->out(0).reg() == RAX);
|
| }
|
|
|
|
|
| @@ -1851,7 +1851,7 @@ LocationSummary* CreateArrayInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(RBX));
|
| locs->set_in(1, Location::RegisterLocation(R10));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
| @@ -1864,7 +1864,7 @@ void CreateArrayInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| &StubCode::AllocateArrayLabel(),
|
| PcDescriptors::kOther,
|
| locs());
|
| - ASSERT(locs()->out().reg() == RAX);
|
| + ASSERT(locs()->out(0).reg() == RAX);
|
| }
|
|
|
|
|
| @@ -1882,14 +1882,14 @@ class BoxDoubleSlowPath : public SlowPathCode {
|
| const ExternalLabel label(double_class.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| &label,
|
| PcDescriptors::kOther,
|
| locs);
|
| - __ MoveRegister(locs->out().reg(), RAX);
|
| + __ MoveRegister(locs->out(0).reg(), RAX);
|
| compiler->RestoreLiveRegisters(locs);
|
|
|
| __ jmp(exit_label());
|
| @@ -1914,14 +1914,14 @@ class BoxFloat32x4SlowPath : public SlowPathCode {
|
| const ExternalLabel label(float32x4_class.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| &label,
|
| PcDescriptors::kOther,
|
| locs);
|
| - __ MoveRegister(locs->out().reg(), RAX);
|
| + __ MoveRegister(locs->out(0).reg(), RAX);
|
| compiler->RestoreLiveRegisters(locs);
|
|
|
| __ jmp(exit_label());
|
| @@ -1946,14 +1946,14 @@ class BoxFloat64x2SlowPath : public SlowPathCode {
|
| const ExternalLabel label(float64x2_class.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| &label,
|
| PcDescriptors::kOther,
|
| locs);
|
| - __ MoveRegister(locs->out().reg(), RAX);
|
| + __ MoveRegister(locs->out(0).reg(), RAX);
|
| compiler->RestoreLiveRegisters(locs);
|
|
|
| __ jmp(exit_label());
|
| @@ -1983,7 +1983,7 @@ LocationSummary* LoadFieldInstr::MakeLocationSummary(bool opt) const {
|
| : Location::FpuRegisterLocation(XMM1));
|
| locs->AddTemp(Location::RequiresRegister());
|
| }
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
|
|
| @@ -1991,7 +1991,7 @@ LocationSummary* LoadFieldInstr::MakeLocationSummary(bool opt) const {
|
| void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register instance_reg = locs()->in(0).reg();
|
| if (IsUnboxedLoad() && compiler->is_optimizing()) {
|
| - XmmRegister result = locs()->out().fpu_reg();
|
| + XmmRegister result = locs()->out(0).fpu_reg();
|
| Register temp = locs()->temp(0).reg();
|
| __ movq(temp, FieldAddress(instance_reg, offset_in_bytes()));
|
| intptr_t cid = field()->UnboxedFieldCid();
|
| @@ -2015,7 +2015,7 @@ void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
| Label done;
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| if (IsPotentialUnboxedLoad()) {
|
| Register temp = locs()->temp(1).reg();
|
| XmmRegister value = locs()->temp(0).fpu_reg();
|
| @@ -2113,14 +2113,14 @@ LocationSummary* InstantiateTypeInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(RAX));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
|
|
| void InstantiateTypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register instantiator_reg = locs()->in(0).reg();
|
| - Register result_reg = locs()->out().reg();
|
| + Register result_reg = locs()->out(0).reg();
|
|
|
| // 'instantiator_reg' is the instantiator TypeArguments object (or null).
|
| // A runtime call to instantiate the type is required.
|
| @@ -2145,7 +2145,7 @@ LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary(
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(RAX));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
| @@ -2153,7 +2153,7 @@ LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary(
|
| void InstantiateTypeArgumentsInstr::EmitNativeCode(
|
| FlowGraphCompiler* compiler) {
|
| Register instantiator_reg = locs()->in(0).reg();
|
| - Register result_reg = locs()->out().reg();
|
| + Register result_reg = locs()->out(0).reg();
|
| ASSERT(instantiator_reg == RAX);
|
| ASSERT(instantiator_reg == result_reg);
|
|
|
| @@ -2216,14 +2216,14 @@ LocationSummary* AllocateContextInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_temp(0, Location::RegisterLocation(R10));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
|
|
| void AllocateContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->temp(0).reg() == R10);
|
| - ASSERT(locs()->out().reg() == RAX);
|
| + ASSERT(locs()->out(0).reg() == RAX);
|
|
|
| __ LoadImmediate(R10, Immediate(num_context_variables()), PP);
|
| const ExternalLabel label("alloc_context",
|
| @@ -2241,14 +2241,14 @@ LocationSummary* CloneContextInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* locs =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(RAX));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
|
|
|
|
| void CloneContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register context_value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| __ PushObject(Object::ZoneHandle(), PP); // Make room for the result.
|
| __ pushq(context_value);
|
| @@ -2391,7 +2391,7 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| const bool is_truncating = shift_left->is_truncating();
|
| const LocationSummary& locs = *shift_left->locs();
|
| Register left = locs.in(0).reg();
|
| - Register result = locs.out().reg();
|
| + Register result = locs.out(0).reg();
|
| ASSERT(left == result);
|
| Label* deopt = shift_left->CanDeoptimize() ?
|
| compiler->AddDeoptStub(shift_left->deopt_id(), kDeoptBinarySmiOp) : NULL;
|
| @@ -2537,7 +2537,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::Constant(right_constant->value()));
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -2550,12 +2550,12 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| ConstantInstr* right_constant = right()->definition()->AsConstant();
|
| summary->set_in(1, Location::Constant(right_constant->value()));
|
| summary->set_temp(0, Location::RequiresRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| } else {
|
| // Both inputs must be writable because they will be untagged.
|
| summary->set_in(0, Location::RegisterLocation(RAX));
|
| summary->set_in(1, Location::WritableRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| // Will be used for sign extension and division.
|
| summary->set_temp(0, Location::RegisterLocation(RDX));
|
| }
|
| @@ -2567,7 +2567,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| // Both inputs must be writable because they will be untagged.
|
| summary->set_in(0, Location::RegisterLocation(RDX));
|
| summary->set_in(1, Location::WritableRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| // Will be used for sign extension and division.
|
| summary->set_temp(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| @@ -2577,7 +2577,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), RCX));
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| } else if (op_kind() == Token::kSHL) {
|
| const intptr_t kNumTemps = 0;
|
| @@ -2588,7 +2588,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| if (!is_truncating()) {
|
| summary->AddTemp(Location::RequiresRegister());
|
| }
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| } else {
|
| const intptr_t kNumTemps = 0;
|
| @@ -2601,7 +2601,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
| } else {
|
| summary->set_in(1, Location::PrefersRegister());
|
| }
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
| }
|
| @@ -2614,7 +2614,7 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
|
|
| ASSERT(!is_truncating());
|
| Register left = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| ASSERT(left == result);
|
| Label* deopt = NULL;
|
| if (CanDeoptimize()) {
|
| @@ -3017,7 +3017,7 @@ LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3026,7 +3026,7 @@ void BoxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| BoxDoubleSlowPath* slow_path = new BoxDoubleSlowPath(this);
|
| compiler->AddSlowPathCode(slow_path);
|
|
|
| - Register out_reg = locs()->out().reg();
|
| + Register out_reg = locs()->out(0).reg();
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
|
|
| __ TryAllocate(compiler->double_class(),
|
| @@ -3048,7 +3048,7 @@ LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, needs_writable_input
|
| ? Location::WritableRegister()
|
| : Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3056,7 +3056,7 @@ LocationSummary* UnboxDoubleInstr::MakeLocationSummary(bool opt) const {
|
| void UnboxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const Register value = locs()->in(0).reg();
|
| - const XmmRegister result = locs()->out().fpu_reg();
|
| + const XmmRegister result = locs()->out(0).fpu_reg();
|
|
|
| if (value_cid == kDoubleCid) {
|
| __ movsd(result, FieldAddress(value, Double::value_offset()));
|
| @@ -3088,7 +3088,7 @@ LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3097,7 +3097,7 @@ void BoxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| BoxFloat32x4SlowPath* slow_path = new BoxFloat32x4SlowPath(this);
|
| compiler->AddSlowPathCode(slow_path);
|
|
|
| - Register out_reg = locs()->out().reg();
|
| + Register out_reg = locs()->out(0).reg();
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
|
|
| __ TryAllocate(compiler->float32x4_class(),
|
| @@ -3121,7 +3121,7 @@ LocationSummary* UnboxFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const Register value = locs()->in(0).reg();
|
| - const XmmRegister result = locs()->out().fpu_reg();
|
| + const XmmRegister result = locs()->out(0).fpu_reg();
|
|
|
| if (value_cid != kFloat32x4Cid) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id_, kDeoptCheckClass);
|
| @@ -3142,7 +3142,7 @@ LocationSummary* BoxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3151,7 +3151,7 @@ void BoxFloat64x2Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| BoxFloat64x2SlowPath* slow_path = new BoxFloat64x2SlowPath(this);
|
| compiler->AddSlowPathCode(slow_path);
|
|
|
| - Register out_reg = locs()->out().reg();
|
| + Register out_reg = locs()->out(0).reg();
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
|
|
| __ TryAllocate(compiler->float64x2_class(),
|
| @@ -3171,7 +3171,7 @@ LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3179,7 +3179,7 @@ LocationSummary* UnboxFloat64x2Instr::MakeLocationSummary(bool opt) const {
|
| void UnboxFloat64x2Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const Register value = locs()->in(0).reg();
|
| - const XmmRegister result = locs()->out().fpu_reg();
|
| + const XmmRegister result = locs()->out(0).fpu_reg();
|
|
|
| if (value_cid != kFloat64x2Cid) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id_, kDeoptCheckClass);
|
| @@ -3200,7 +3200,7 @@ LocationSummary* BoxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| kNumTemps,
|
| LocationSummary::kCallOnSlowPath);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3219,14 +3219,14 @@ class BoxInt32x4SlowPath : public SlowPathCode {
|
| const ExternalLabel label(int32x4_class.ToCString(), stub.EntryPoint());
|
|
|
| LocationSummary* locs = instruction_->locs();
|
| - locs->live_registers()->Remove(locs->out());
|
| + locs->live_registers()->Remove(locs->out(0));
|
|
|
| compiler->SaveLiveRegisters(locs);
|
| compiler->GenerateCall(Scanner::kNoSourcePos, // No token position.
|
| &label,
|
| PcDescriptors::kOther,
|
| locs);
|
| - __ MoveRegister(locs->out().reg(), RAX);
|
| + __ MoveRegister(locs->out(0).reg(), RAX);
|
| compiler->RestoreLiveRegisters(locs);
|
|
|
| __ jmp(exit_label());
|
| @@ -3241,7 +3241,7 @@ void BoxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| BoxInt32x4SlowPath* slow_path = new BoxInt32x4SlowPath(this);
|
| compiler->AddSlowPathCode(slow_path);
|
|
|
| - Register out_reg = locs()->out().reg();
|
| + Register out_reg = locs()->out(0).reg();
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
|
|
| __ TryAllocate(compiler->int32x4_class(),
|
| @@ -3260,7 +3260,7 @@ LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
| @@ -3268,7 +3268,7 @@ LocationSummary* UnboxInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| void UnboxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const Register value = locs()->in(0).reg();
|
| - const XmmRegister result = locs()->out().fpu_reg();
|
| + const XmmRegister result = locs()->out(0).fpu_reg();
|
|
|
| if (value_cid != kInt32x4Cid) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id_, kDeoptCheckClass);
|
| @@ -3288,7 +3288,7 @@ LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3297,7 +3297,7 @@ void BinaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case Token::kADD: __ addsd(left, right); break;
|
| @@ -3316,7 +3316,7 @@ LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3325,7 +3325,7 @@ void BinaryFloat32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case Token::kADD: __ addps(left, right); break;
|
| @@ -3344,7 +3344,7 @@ LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3353,7 +3353,7 @@ void BinaryFloat64x2OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case Token::kADD: __ addpd(left, right); break;
|
| @@ -3371,7 +3371,7 @@ LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3379,7 +3379,7 @@ LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| void Simd32x4ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == value);
|
| + ASSERT(locs()->out(0).fpu_reg() == value);
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4ShuffleX:
|
| @@ -3414,7 +3414,7 @@ LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3423,7 +3423,7 @@ void Simd32x4ShuffleMixInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4ShuffleMix:
|
| case MethodRecognizer::kInt32x4ShuffleMix:
|
| @@ -3440,14 +3440,14 @@ LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
| - Register out = locs()->out().reg();
|
| + Register out = locs()->out(0).reg();
|
|
|
| __ movmskps(out, value);
|
| __ SmiTag(out);
|
| @@ -3464,7 +3464,7 @@ LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary(
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| summary->set_in(2, Location::RequiresFpuRegister());
|
| summary->set_in(3, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3474,7 +3474,7 @@ void Float32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister v1 = locs()->in(1).fpu_reg();
|
| XmmRegister v2 = locs()->in(2).fpu_reg();
|
| XmmRegister v3 = locs()->in(3).fpu_reg();
|
| - ASSERT(v0 == locs()->out().fpu_reg());
|
| + ASSERT(v0 == locs()->out(0).fpu_reg());
|
| __ AddImmediate(RSP, Immediate(-16), PP);
|
| __ cvtsd2ss(v0, v0);
|
| __ movss(Address(RSP, 0), v0);
|
| @@ -3497,13 +3497,13 @@ LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(bool opt) const {
|
| const intptr_t kNumTemps = 0;
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void Float32x4ZeroInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - XmmRegister value = locs()->out().fpu_reg();
|
| + XmmRegister value = locs()->out(0).fpu_reg();
|
| __ xorps(value, value);
|
| }
|
|
|
| @@ -3514,14 +3514,14 @@ LocationSummary* Float32x4SplatInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
|
|
| void Float32x4SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - XmmRegister value = locs()->out().fpu_reg();
|
| - ASSERT(locs()->in(0).fpu_reg() == locs()->out().fpu_reg());
|
| + XmmRegister value = locs()->out(0).fpu_reg();
|
| + ASSERT(locs()->in(0).fpu_reg() == locs()->out(0).fpu_reg());
|
| // Convert to Float32.
|
| __ cvtsd2ss(value, value);
|
| // Splat across all lanes.
|
| @@ -3536,7 +3536,7 @@ LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3545,7 +3545,7 @@ void Float32x4ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4Equal:
|
| @@ -3579,7 +3579,7 @@ LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3588,7 +3588,7 @@ void Float32x4MinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4Min:
|
| @@ -3609,7 +3609,7 @@ LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3618,7 +3618,7 @@ void Float32x4ScaleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4Scale:
|
| @@ -3637,7 +3637,7 @@ LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3645,7 +3645,7 @@ LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(bool opt) const {
|
| void Float32x4SqrtInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4Sqrt:
|
| @@ -3668,7 +3668,7 @@ LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3676,7 +3676,7 @@ LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| void Float32x4ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4Negate:
|
| __ negateps(left);
|
| @@ -3697,7 +3697,7 @@ LocationSummary* Float32x4ClampInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| summary->set_in(2, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3706,7 +3706,7 @@ void Float32x4ClampInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister lower = locs()->in(1).fpu_reg();
|
| XmmRegister upper = locs()->in(2).fpu_reg();
|
| - ASSERT(locs()->out().fpu_reg() == left);
|
| + ASSERT(locs()->out(0).fpu_reg() == left);
|
| __ minps(left, upper);
|
| __ maxps(left, lower);
|
| }
|
| @@ -3719,7 +3719,7 @@ LocationSummary* Float32x4WithInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3728,7 +3728,7 @@ void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister replacement = locs()->in(0).fpu_reg();
|
| XmmRegister value = locs()->in(1).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == replacement);
|
| + ASSERT(locs()->out(0).fpu_reg() == replacement);
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat32x4WithX:
|
| @@ -3786,7 +3786,7 @@ LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3802,7 +3802,7 @@ LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3810,7 +3810,7 @@ LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(bool opt) const {
|
| void Simd64x2ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
|
|
| - ASSERT(locs()->out().fpu_reg() == value);
|
| + ASSERT(locs()->out(0).fpu_reg() == value);
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat64x2GetX:
|
| // nop.
|
| @@ -3828,13 +3828,13 @@ LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(bool opt) const {
|
| const intptr_t kNumTemps = 0;
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void Float64x2ZeroInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - XmmRegister value = locs()->out().fpu_reg();
|
| + XmmRegister value = locs()->out(0).fpu_reg();
|
| __ xorpd(value, value);
|
| }
|
|
|
| @@ -3845,13 +3845,13 @@ LocationSummary* Float64x2SplatInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
|
|
| void Float64x2SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - XmmRegister value = locs()->out().fpu_reg();
|
| + XmmRegister value = locs()->out(0).fpu_reg();
|
| __ shufpd(value, value, Immediate(0x0));
|
| }
|
|
|
| @@ -3864,7 +3864,7 @@ LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary(
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3872,7 +3872,7 @@ LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary(
|
| void Float64x2ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister v0 = locs()->in(0).fpu_reg();
|
| XmmRegister v1 = locs()->in(1).fpu_reg();
|
| - ASSERT(v0 == locs()->out().fpu_reg());
|
| + ASSERT(v0 == locs()->out(0).fpu_reg());
|
| __ AddImmediate(RSP, Immediate(-16), PP);
|
| __ movsd(Address(RSP, 0), v0);
|
| __ movsd(Address(RSP, 8), v1);
|
| @@ -3888,13 +3888,13 @@ LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary(
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
|
|
| void Float64x2ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - XmmRegister value = locs()->out().fpu_reg();
|
| + XmmRegister value = locs()->out(0).fpu_reg();
|
| __ cvtpd2ps(value, value);
|
| }
|
|
|
| @@ -3906,13 +3906,13 @@ LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary(
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
|
|
| void Float32x4ToFloat64x2Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - XmmRegister value = locs()->out().fpu_reg();
|
| + XmmRegister value = locs()->out(0).fpu_reg();
|
| __ cvtps2pd(value, value);
|
| }
|
|
|
| @@ -3925,10 +3925,10 @@ LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| if (representation() == kTagged) {
|
| ASSERT(op_kind() == MethodRecognizer::kFloat64x2GetSignMask);
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| } else {
|
| ASSERT(representation() == kUnboxedFloat64x2);
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| }
|
| return summary;
|
| }
|
| @@ -3938,7 +3938,7 @@ void Float64x2ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
|
|
| ASSERT((op_kind() == MethodRecognizer::kFloat64x2GetSignMask) ||
|
| - (locs()->out().fpu_reg() == left));
|
| + (locs()->out(0).fpu_reg() == left));
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat64x2Negate:
|
| @@ -3951,8 +3951,8 @@ void Float64x2ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ sqrtpd(left);
|
| break;
|
| case MethodRecognizer::kFloat64x2GetSignMask:
|
| - __ movmskpd(locs()->out().reg(), left);
|
| - __ SmiTag(locs()->out().reg());
|
| + __ movmskpd(locs()->out(0).reg(), left);
|
| + __ SmiTag(locs()->out(0).reg());
|
| break;
|
| default: UNREACHABLE();
|
| }
|
| @@ -3966,7 +3966,7 @@ LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -3974,7 +3974,7 @@ LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(bool opt) const {
|
| void Float64x2OneArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
| - ASSERT((locs()->out().fpu_reg() == left));
|
| + ASSERT((locs()->out(0).fpu_reg() == left));
|
|
|
| switch (op_kind()) {
|
| case MethodRecognizer::kFloat64x2Scale:
|
| @@ -4023,7 +4023,7 @@ LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary(
|
| summary->set_in(2, Location::RequiresRegister());
|
| summary->set_in(3, Location::RequiresRegister());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
| @@ -4034,7 +4034,7 @@ void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register v2 = locs()->in(2).reg();
|
| Register v3 = locs()->in(3).reg();
|
| Register temp = locs()->temp(0).reg();
|
| - XmmRegister result = locs()->out().fpu_reg();
|
| + XmmRegister result = locs()->out(0).fpu_reg();
|
| Label x_false, x_done;
|
| Label y_false, y_done;
|
| Label z_false, z_done;
|
| @@ -4088,14 +4088,14 @@ LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| Label non_zero;
|
| __ AddImmediate(RSP, Immediate(-16), PP);
|
| @@ -4136,7 +4136,7 @@ LocationSummary* Int32x4SelectInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| summary->set_in(2, Location::RequiresFpuRegister());
|
| summary->set_temp(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -4145,7 +4145,7 @@ void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister mask = locs()->in(0).fpu_reg();
|
| XmmRegister trueValue = locs()->in(1).fpu_reg();
|
| XmmRegister falseValue = locs()->in(2).fpu_reg();
|
| - XmmRegister out = locs()->out().fpu_reg();
|
| + XmmRegister out = locs()->out(0).fpu_reg();
|
| XmmRegister temp = locs()->temp(0).fpu_reg();
|
| ASSERT(out == mask);
|
| // Copy mask.
|
| @@ -4169,7 +4169,7 @@ LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -4178,7 +4178,7 @@ void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister mask = locs()->in(0).fpu_reg();
|
| Register flag = locs()->in(1).reg();
|
| Register temp = locs()->temp(0).reg();
|
| - ASSERT(mask == locs()->out().fpu_reg());
|
| + ASSERT(mask == locs()->out(0).fpu_reg());
|
| __ AddImmediate(RSP, Immediate(-16), PP);
|
| // Copy mask to stack.
|
| __ movups(Address(RSP, 0), mask);
|
| @@ -4233,7 +4233,7 @@ LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -4250,7 +4250,7 @@ LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -4258,7 +4258,7 @@ LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(bool opt) const {
|
| void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
| - ASSERT(left == locs()->out().fpu_reg());
|
| + ASSERT(left == locs()->out(0).fpu_reg());
|
| switch (op_kind()) {
|
| case Token::kBIT_AND: {
|
| __ andps(left, right);
|
| @@ -4298,7 +4298,7 @@ LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
|
| // R13 is chosen because it is callee saved so we do not need to back it
|
| // up before calling into the runtime.
|
| summary->set_temp(0, Location::RegisterLocation(R13));
|
| - summary->set_out(Location::FpuRegisterLocation(XMM1));
|
| + summary->set_out(0, Location::FpuRegisterLocation(XMM1));
|
| return summary;
|
| }
|
| ASSERT(kind() == MethodRecognizer::kMathSqrt);
|
| @@ -4307,14 +4307,14 @@ LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::RequiresFpuRegister());
|
| + summary->set_out(0, Location::RequiresFpuRegister());
|
| return summary;
|
| }
|
|
|
|
|
| void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (kind() == MethodRecognizer::kMathSqrt) {
|
| - __ sqrtsd(locs()->out().fpu_reg(), locs()->in(0).fpu_reg());
|
| + __ sqrtsd(locs()->out(0).fpu_reg(), locs()->in(0).fpu_reg());
|
| } else {
|
| ASSERT((kind() == MethodRecognizer::kMathSin) ||
|
| (kind() == MethodRecognizer::kMathCos));
|
| @@ -4323,7 +4323,7 @@ void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ ReserveAlignedFrameSpace(0);
|
| __ movaps(XMM0, locs()->in(0).fpu_reg());
|
| __ CallRuntime(TargetFunction(), InputCount());
|
| - __ movaps(locs()->out().fpu_reg(), XMM0);
|
| + __ movaps(locs()->out(0).fpu_reg(), XMM0);
|
| // Restore RSP.
|
| __ movq(RSP, locs()->temp(0).reg());
|
| }
|
| @@ -4340,7 +4340,7 @@ LocationSummary* UnarySmiOpInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void UnarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - ASSERT(value == locs()->out().reg());
|
| + ASSERT(value == locs()->out(0).reg());
|
| switch (op_kind()) {
|
| case Token::kNEGATE: {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(),
|
| @@ -4369,14 +4369,14 @@ LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* summary =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
|
|
| void UnaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
| - ASSERT(locs()->out().fpu_reg() == value);
|
| + ASSERT(locs()->out(0).fpu_reg() == value);
|
| __ DoubleNegate(value);
|
| }
|
|
|
| @@ -4390,7 +4390,7 @@ LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresFpuRegister());
|
| summary->set_in(1, Location::RequiresFpuRegister());
|
| // Reuse the left register so that code can be made shorter.
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| summary->set_temp(0, Location::RequiresRegister());
|
| return summary;
|
| }
|
| @@ -4402,7 +4402,7 @@ LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const {
|
| summary->set_in(0, Location::RequiresRegister());
|
| summary->set_in(1, Location::RequiresRegister());
|
| // Reuse the left register so that code can be made shorter.
|
| - summary->set_out(Location::SameAsFirstInput());
|
| + summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
|
|
| @@ -4415,7 +4415,7 @@ void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label done, returns_nan, are_equal;
|
| XmmRegister left = locs()->in(0).fpu_reg();
|
| XmmRegister right = locs()->in(1).fpu_reg();
|
| - XmmRegister result = locs()->out().fpu_reg();
|
| + XmmRegister result = locs()->out(0).fpu_reg();
|
| Register temp = locs()->temp(0).reg();
|
| __ comisd(left, right);
|
| __ j(PARITY_EVEN, &returns_nan, Assembler::kNearJump);
|
| @@ -4459,7 +4459,7 @@ void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(result_cid() == kSmiCid);
|
| Register left = locs()->in(0).reg();
|
| Register right = locs()->in(1).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| __ cmpq(left, right);
|
| ASSERT(result == left);
|
| if (is_min) {
|
| @@ -4476,14 +4476,14 @@ LocationSummary* SmiToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::WritableRegister());
|
| - result->set_out(Location::RequiresFpuRegister());
|
| + result->set_out(0, Location::RequiresFpuRegister());
|
| return result;
|
| }
|
|
|
|
|
| void SmiToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - FpuRegister result = locs()->out().fpu_reg();
|
| + FpuRegister result = locs()->out(0).fpu_reg();
|
| __ SmiUntag(value);
|
| __ cvtsi2sd(result, value);
|
| }
|
| @@ -4495,14 +4495,14 @@ LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| result->set_in(0, Location::RegisterLocation(RCX));
|
| - result->set_out(Location::RegisterLocation(RAX));
|
| + result->set_out(0, Location::RegisterLocation(RAX));
|
| result->set_temp(0, Location::RegisterLocation(RBX));
|
| return result;
|
| }
|
|
|
|
|
| void DoubleToIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Register value_obj = locs()->in(0).reg();
|
| Register temp = locs()->temp(0).reg();
|
| XmmRegister value_double = XMM0;
|
| @@ -4546,7 +4546,7 @@ LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result = new LocationSummary(
|
| kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location:: Location::RequiresRegister());
|
| + result->set_out(0, Location:: Location::RequiresRegister());
|
| result->set_temp(0, Location::RequiresRegister());
|
| return result;
|
| }
|
| @@ -4554,7 +4554,7 @@ LocationSummary* DoubleToSmiInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void DoubleToSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), kDeoptDoubleToSmi);
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
| Register temp = locs()->temp(0).reg();
|
|
|
| @@ -4578,14 +4578,14 @@ LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location::RequiresFpuRegister());
|
| + result->set_out(0, Location::RequiresFpuRegister());
|
| return result;
|
| }
|
|
|
|
|
| void DoubleToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| XmmRegister value = locs()->in(0).fpu_reg();
|
| - XmmRegister result = locs()->out().fpu_reg();
|
| + XmmRegister result = locs()->out(0).fpu_reg();
|
| switch (recognized_kind()) {
|
| case MethodRecognizer::kDoubleTruncate:
|
| __ roundsd(result, value, Assembler::kRoundToZero);
|
| @@ -4608,13 +4608,13 @@ LocationSummary* DoubleToFloatInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location::SameAsFirstInput());
|
| + result->set_out(0, Location::SameAsFirstInput());
|
| return result;
|
| }
|
|
|
|
|
| void DoubleToFloatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - __ cvtsd2ss(locs()->out().fpu_reg(), locs()->in(0).fpu_reg());
|
| + __ cvtsd2ss(locs()->out(0).fpu_reg(), locs()->in(0).fpu_reg());
|
| }
|
|
|
|
|
| @@ -4624,13 +4624,13 @@ LocationSummary* FloatToDoubleInstr::MakeLocationSummary(bool opt) const {
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| result->set_in(0, Location::RequiresFpuRegister());
|
| - result->set_out(Location::SameAsFirstInput());
|
| + result->set_out(0, Location::SameAsFirstInput());
|
| return result;
|
| }
|
|
|
|
|
| void FloatToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - __ cvtss2sd(locs()->out().fpu_reg(), locs()->in(0).fpu_reg());
|
| + __ cvtss2sd(locs()->out(0).fpu_reg(), locs()->in(0).fpu_reg());
|
| }
|
|
|
|
|
| @@ -4655,7 +4655,7 @@ LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(bool opt) const {
|
| // Temp index 2.
|
| result->AddTemp(Location::FpuRegisterLocation(XMM4));
|
| }
|
| - result->set_out(Location::FpuRegisterLocation(XMM3));
|
| + result->set_out(0, Location::FpuRegisterLocation(XMM3));
|
| return result;
|
| }
|
|
|
| @@ -4679,7 +4679,7 @@ void InvokeMathCFunctionInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // }
|
| XmmRegister base = locs()->in(0).fpu_reg();
|
| XmmRegister exp = locs()->in(1).fpu_reg();
|
| - XmmRegister result = locs()->out().fpu_reg();
|
| + XmmRegister result = locs()->out(0).fpu_reg();
|
| Register temp = locs()->temp(kObjectTempIndex).reg();
|
| XmmRegister zero_temp = locs()->temp(kDoubleTempIndex).fpu_reg();
|
|
|
| @@ -4716,7 +4716,7 @@ void InvokeMathCFunctionInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| __ Bind(&do_call);
|
| __ CallRuntime(TargetFunction(), InputCount());
|
| - __ movaps(locs()->out().fpu_reg(), XMM0);
|
| + __ movaps(locs()->out(0).fpu_reg(), XMM0);
|
| __ Bind(&skip_call);
|
| // Restore RSP.
|
| __ movq(RSP, locs()->temp(kSavedSpTempIndex).reg());
|
| @@ -4732,7 +4732,7 @@ LocationSummary* MergedMathInstr::MakeLocationSummary(bool opt) const {
|
| // Both inputs must be writable because they will be untagged.
|
| summary->set_in(0, Location::RegisterLocation(RAX));
|
| summary->set_in(1, Location::WritableRegister());
|
| - summary->set_out(Location::RequiresRegister());
|
| + summary->set_out(0, Location::RequiresRegister());
|
| // Will be used for sign extension and division.
|
| summary->set_temp(0, Location::RegisterLocation(RDX));
|
| return summary;
|
| @@ -4746,7 +4746,7 @@ LocationSummary* MergedMathInstr::MakeLocationSummary(bool opt) const {
|
| // R13 is chosen because it is callee saved so we do not need to back it
|
| // up before calling into the runtime.
|
| summary->set_temp(0, Location::RegisterLocation(R13));
|
| - summary->set_out(Location::RegisterLocation(RAX));
|
| + summary->set_out(0, Location::RegisterLocation(RAX));
|
| return summary;
|
| }
|
| UNIMPLEMENTED();
|
| @@ -4770,7 +4770,7 @@ void MergedMathInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (kind() == MergedMathInstr::kTruncDivMod) {
|
| Register left = locs()->in(0).reg();
|
| Register right = locs()->in(1).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label not_32bit, done;
|
| Register temp = locs()->temp(0).reg();
|
| ASSERT(left == RAX);
|
| @@ -4895,7 +4895,7 @@ void MergedMathInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // Restore RSP.
|
| __ movq(RSP, locs()->temp(0).reg());
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| const TypedData& res_array = TypedData::ZoneHandle(
|
| TypedData::New(kTypedDataFloat64ArrayCid, 2, Heap::kOld));
|
| __ LoadObject(result, res_array, PP);
|
| @@ -4962,7 +4962,7 @@ void PolymorphicInstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| LocationSummary* BranchInstr::MakeLocationSummary(bool opt) const {
|
| comparison()->InitializeLocationSummary(opt);
|
| // Branches don't produce a result.
|
| - comparison()->locs()->set_out(Location::NoLocation());
|
| + comparison()->locs()->set_out(0, Location::NoLocation());
|
| return comparison()->locs();
|
| }
|
|
|
| @@ -5252,7 +5252,7 @@ LocationSummary* CurrentContextInstr::MakeLocationSummary(bool opt) const {
|
|
|
|
|
| void CurrentContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - __ MoveRegister(locs()->out().reg(), CTX);
|
| + __ MoveRegister(locs()->out(0).reg(), CTX);
|
| }
|
|
|
|
|
| @@ -5264,7 +5264,7 @@ LocationSummary* StrictCompareInstr::MakeLocationSummary(bool opt) const {
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| locs->set_in(0, Location::RegisterLocation(RAX));
|
| locs->set_in(1, Location::RegisterLocation(RCX));
|
| - locs->set_out(Location::RegisterLocation(RAX));
|
| + locs->set_out(0, Location::RegisterLocation(RAX));
|
| return locs;
|
| }
|
| LocationSummary* locs =
|
| @@ -5275,7 +5275,7 @@ LocationSummary* StrictCompareInstr::MakeLocationSummary(bool opt) const {
|
| locs->set_in(1, locs->in(0).IsConstant()
|
| ? Location::RequiresRegister()
|
| : Location::RegisterOrConstant(right()));
|
| - locs->set_out(Location::RequiresRegister());
|
| + locs->set_out(0, Location::RequiresRegister());
|
| return locs;
|
| }
|
|
|
| @@ -5316,7 +5316,7 @@ void StrictCompareInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Condition true_condition = EmitComparisonCode(compiler, labels);
|
| EmitBranchOnCondition(compiler, true_condition, labels);
|
|
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
| Label done;
|
| __ Bind(&is_false);
|
| __ LoadObject(result, Bool::False(), PP);
|
| @@ -5342,7 +5342,7 @@ LocationSummary* ClosureCallInstr::MakeLocationSummary(bool opt) const {
|
| const intptr_t kNumTemps = 1;
|
| LocationSummary* result =
|
| new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall);
|
| - result->set_out(Location::RegisterLocation(RAX));
|
| + result->set_out(0, Location::RegisterLocation(RAX));
|
| result->set_temp(0, Location::RegisterLocation(R10)); // Arg. descriptor.
|
| return result;
|
| }
|
| @@ -5376,7 +5376,7 @@ LocationSummary* BooleanNegateInstr::MakeLocationSummary(bool opt) const {
|
|
|
| void BooleanNegateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| - Register result = locs()->out().reg();
|
| + Register result = locs()->out(0).reg();
|
|
|
| Label done;
|
| __ LoadObject(result, Bool::True(), PP);
|
|
|