brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 5ea91b4 Raw
41 lines · c
1//==- AArch64PBQPRegAlloc.h - AArch64 specific PBQP constraints --*- C++ -*-==//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64PBQPREGALOC_H10#define LLVM_LIB_TARGET_AARCH64_AARCH64PBQPREGALOC_H11 12#include "llvm/ADT/SetVector.h"13#include "llvm/CodeGen/PBQPRAConstraint.h"14 15namespace llvm {16 17class TargetRegisterInfo;18 19/// Add the accumulator chaining constraint to a PBQP graph20class A57ChainingConstraint : public PBQPRAConstraint {21public:22  // Add A57 specific constraints to the PBQP graph.23  void apply(PBQPRAGraph &G) override;24 25private:26  SmallSetVector<unsigned, 32> Chains;27  const TargetRegisterInfo *TRI;28 29  // Add the accumulator chaining constraint, inside the chain, i.e. so that30  // parity(Rd) == parity(Ra).31  // \return true if a constraint was added32  bool addIntraChainConstraint(PBQPRAGraph &G, unsigned Rd, unsigned Ra);33 34  // Add constraints between existing chains35  void addInterChainConstraint(PBQPRAGraph &G, unsigned Rd, unsigned Ra);36};37 38} // end namespace llvm39 40#endif // LLVM_LIB_TARGET_AARCH64_AARCH64PBQPREGALOC_H41