summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/lib/RegisterAliasing.h
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2018-05-17 08:12:29 +0000
committerClement Courbet <courbet@google.com>2018-05-17 08:12:29 +0000
commit295a554ce4a29ab2ef5e9ab538ac83596a536635 (patch)
tree2bb66578ef79379869c71cd47850b712d03ac02e /llvm/tools/llvm-exegesis/lib/RegisterAliasing.h
parentee110fb735651d63252f70104d39c5a0376ee20d (diff)
downloadbcm5719-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.h107
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 &regInfo() 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
OpenPOWER on IntegriCloud