chromium/v8/src/compiler/backend/gap-resolver.cc

// Copyright 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/compiler/backend/gap-resolver.h"

#include <algorithm>
#include <set>

#include "src/base/enum-set.h"
#include "src/codegen/register-configuration.h"

namespace v8 {
namespace internal {
namespace compiler {

namespace {

enum MoveOperandKind : uint8_t {};

MoveOperandKind GetKind(const InstructionOperand& move) {}

}  // namespace

void GapResolver::Resolve(ParallelMove* moves) {}

// Check if a 2-move cycle is a swap. This is not always the case, for instance:
//
// [fp_stack:-3|s128] = [xmm5|R|s128]
// [xmm5|R|s128] = [fp_stack:-4|s128]
//
// The two stack operands conflict but start at a different stack offset, so a
// swap would be incorrect.
// In general, swapping is allowed if the conflicting operands:
// - Have the same representation, and
// - Are the same register, or are stack slots with the same index
bool IsSwap(MoveOperands* move1, MoveOperands* move2) {}

void GapResolver::PerformCycle(const std::vector<MoveOperands*>& cycle) {}

void GapResolver::PerformMove(ParallelMove* moves, MoveOperands* move) {}

MoveOperands* GapResolver::PerformMoveHelper(
    ParallelMove* moves, MoveOperands* move,
    std::vector<MoveOperands*>* cycle) {}

}  // namespace compiler
}  // namespace internal
}  // namespace v8