diff options
author | Clement Courbet <courbet@google.com> | 2020-01-22 15:49:10 +0100 |
---|---|---|
committer | Clement Courbet <courbet@google.com> | 2020-01-23 11:08:44 +0100 |
commit | 04fd20415612f02c4b09da526f19d24e6fe18e7e (patch) | |
tree | d6860d92fab6828ae78bbad3911b3c99833f2db3 /llvm/tools/llvm-exegesis/lib/Target.cpp | |
parent | 5c02fe1faabd5519c48ded170fe849f9b2c8d10f (diff) | |
download | llvm-04fd20415612f02c4b09da526f19d24e6fe18e7e.zip llvm-04fd20415612f02c4b09da526f19d24e6fe18e7e.tar.gz llvm-04fd20415612f02c4b09da526f19d24e6fe18e7e.tar.bz2 |
[llvm-exegesis] Allow the randomizer to fail nicely...
Summary:
... instead of crashing.
On typical exmaple is when there are no available registers.
Reviewers: gchatelet
Subscribers: tschuett, mstojanovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D73196
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/Target.cpp')
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/Target.cpp | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/Target.cpp b/llvm/tools/llvm-exegesis/lib/Target.cpp index 40021e2..701ff14 100644 --- a/llvm/tools/llvm-exegesis/lib/Target.cpp +++ b/llvm/tools/llvm-exegesis/lib/Target.cpp @@ -99,30 +99,6 @@ ExegesisTarget::createUopsBenchmarkRunner(const LLVMState &State) const { return std::make_unique<UopsBenchmarkRunner>(State); } -void ExegesisTarget::randomizeMCOperand(const Instruction &Instr, - const Variable &Var, - MCOperand &AssignedValue, - const BitVector &ForbiddenRegs) const { - const Operand &Op = Instr.getPrimaryOperand(Var); - switch (Op.getExplicitOperandInfo().OperandType) { - case MCOI::OperandType::OPERAND_IMMEDIATE: - // FIXME: explore immediate values too. - AssignedValue = MCOperand::createImm(1); - break; - case MCOI::OperandType::OPERAND_REGISTER: { - assert(Op.isReg()); - auto AllowedRegs = Op.getRegisterAliasing().sourceBits(); - assert(AllowedRegs.size() == ForbiddenRegs.size()); - for (auto I : ForbiddenRegs.set_bits()) - AllowedRegs.reset(I); - AssignedValue = MCOperand::createReg(randomBit(AllowedRegs)); - break; - } - default: - break; - } -} - static_assert(std::is_pod<PfmCountersInfo>::value, "We shouldn't have dynamic initialization here"); const PfmCountersInfo PfmCountersInfo::Default = {nullptr, nullptr, nullptr, |