diff options
author | Clement Courbet <courbet@google.com> | 2018-05-17 08:12:29 +0000 |
---|---|---|
committer | Clement Courbet <courbet@google.com> | 2018-05-17 08:12:29 +0000 |
commit | 295a554ce4a29ab2ef5e9ab538ac83596a536635 (patch) | |
tree | 2bb66578ef79379869c71cd47850b712d03ac02e /llvm/tools/llvm-exegesis/lib/RegisterAliasing.h | |
parent | ee110fb735651d63252f70104d39c5a0376ee20d (diff) | |
download | bcm5719-llvm-295a554ce4a29ab2ef5e9ab538ac83596a536635.tar.gz bcm5719-llvm-295a554ce4a29ab2ef5e9ab538ac83596a536635.zip |
Revert r332579 "[llvm-exegesis] Update to cover latency through another opcode."
The revision failed to update the ARM tests.
llvm-svn: 332580
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/RegisterAliasing.h')
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/RegisterAliasing.h | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/RegisterAliasing.h b/llvm/tools/llvm-exegesis/lib/RegisterAliasing.h deleted file mode 100644 index 3387adf01b7..00000000000 --- a/llvm/tools/llvm-exegesis/lib/RegisterAliasing.h +++ /dev/null @@ -1,107 +0,0 @@ -//===-- RegisterAliasingTracker.h -------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -/// -/// \file -/// Defines classes to keep track of register aliasing. -/// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_TOOLS_LLVM_EXEGESIS_ALIASINGTRACKER_H -#define LLVM_TOOLS_LLVM_EXEGESIS_ALIASINGTRACKER_H - -#include <memory> -#include <unordered_map> - -#include "llvm/ADT/BitVector.h" -#include "llvm/ADT/PackedVector.h" -#include "llvm/MC/MCRegisterInfo.h" - -namespace exegesis { - -// Returns the registers that are aliased by the ones set in SourceBits. -llvm::BitVector getAliasedBits(const llvm::MCRegisterInfo &RegInfo, - const llvm::BitVector &SourceBits); - -// Keeps track of a mapping from one register (or a register class) to its -// aliased registers. -// -// e.g. -// RegisterAliasingTracker Tracker(RegInfo, llvm::X86::EAX); -// Tracker.sourceBits() == { llvm::X86::EAX } -// Tracker.aliasedBits() == { llvm::X86::AL, llvm::X86::AH, llvm::X86::AX, -// llvm::X86::EAX,llvm::X86::HAX, llvm::X86::RAX } -// Tracker.getOrigin(llvm::X86::AL) == llvm::X86::EAX; -// Tracker.getOrigin(llvm::X86::BX) == -1; -struct RegisterAliasingTracker { - // Construct a tracker from an MCRegisterClass. - RegisterAliasingTracker(const llvm::MCRegisterInfo &RegInfo, - const llvm::BitVector &ReservedReg, - const llvm::MCRegisterClass &RegClass); - - // Construct a tracker from an MCPhysReg. - RegisterAliasingTracker(const llvm::MCRegisterInfo &RegInfo, - const llvm::MCPhysReg Register); - - const llvm::BitVector &sourceBits() const { return SourceBits; } - - // Retrieves all the touched registers as a BitVector. - const llvm::BitVector &aliasedBits() const { return AliasedBits; } - - // Returns the origin of this register or -1. - int getOrigin(llvm::MCPhysReg Aliased) const { - if (!AliasedBits[Aliased]) - return -1; - return Origins[Aliased]; - } - -private: - RegisterAliasingTracker(const llvm::MCRegisterInfo &RegInfo); - - void FillOriginAndAliasedBits(const llvm::MCRegisterInfo &RegInfo, - const llvm::BitVector &OriginalBits); - - llvm::BitVector SourceBits; - llvm::BitVector AliasedBits; - llvm::PackedVector<size_t, 10> Origins; // Max 1024 physical registers. -}; - -// A cache of existing trackers. -struct RegisterAliasingTrackerCache { - // RegInfo must outlive the cache. - RegisterAliasingTrackerCache(const llvm::MCRegisterInfo &RegInfo, - const llvm::BitVector &ReservedReg); - - // Convenient function to retrieve a BitVector of the right size. - const llvm::BitVector &emptyRegisters() const { return EmptyRegisters; } - - // Convenient function to retrieve the registers the function body can't use. - const llvm::BitVector &reservedRegisters() const { return ReservedReg; } - - // Convenient function to retrieve the underlying MCRegInfo. - const llvm::MCRegisterInfo ®Info() const { return RegInfo; } - - // Retrieves the RegisterAliasingTracker for this particular register. - const RegisterAliasingTracker &getRegister(llvm::MCPhysReg Reg); - - // Retrieves the RegisterAliasingTracker for this particular register class. - const RegisterAliasingTracker &getRegisterClass(unsigned RegClassIndex); - -private: - const llvm::MCRegisterInfo &RegInfo; - const llvm::BitVector ReservedReg; - const llvm::BitVector EmptyRegisters; - std::unordered_map<unsigned, std::unique_ptr<RegisterAliasingTracker>> - Registers; - std::unordered_map<unsigned, std::unique_ptr<RegisterAliasingTracker>> - RegisterClasses; -}; - -} // namespace exegesis - -#endif // LLVM_TOOLS_LLVM_EXEGESIS_ALIASINGTRACKER_H |