From a41272fb4833b6f4a472bd7aaa6ad7ca40ee8744 Mon Sep 17 00:00:00 2001 From: Quentin Colombet Date: Wed, 8 Jun 2016 15:49:23 +0000 Subject: [RegBankSelect] Introduce a command line option to override the running mode. When the command line option is set, it overrides any thing that the target may have set. The rationale is that we get what we asked for. Options are respectively regbankselect-fast and regbankselect-greedy for fast and greedy mode. llvm-svn: 272158 --- llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'llvm/lib/CodeGen') diff --git a/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp b/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp index 53472857b9a..726ef268adb 100644 --- a/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp +++ b/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp @@ -18,6 +18,7 @@ #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/IR/Function.h" #include "llvm/Support/BlockFrequency.h" +#include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Target/TargetSubtargetInfo.h" @@ -25,6 +26,14 @@ using namespace llvm; +static cl::opt RegBankSelectMode( + cl::desc("Mode of the RegBankSelect pass"), cl::Hidden, cl::Optional, + cl::values(clEnumValN(RegBankSelect::Mode::Fast, "regbankselect-fast", + "Run the Fast mode (default mapping)"), + clEnumValN(RegBankSelect::Mode::Greedy, "regbankselect-greedy", + "Use the Greedy mode (best local mapping)"), + clEnumValEnd)); + char RegBankSelect::ID = 0; INITIALIZE_PASS_BEGIN(RegBankSelect, "regbankselect", "Assign register bank of generic virtual registers", @@ -39,6 +48,11 @@ RegBankSelect::RegBankSelect(Mode RunningMode) : MachineFunctionPass(ID), RBI(nullptr), MRI(nullptr), TRI(nullptr), MBFI(nullptr), MBPI(nullptr), OptMode(RunningMode) { initializeRegBankSelectPass(*PassRegistry::getPassRegistry()); + if (RegBankSelectMode.getNumOccurrences() != 0) { + OptMode = RegBankSelectMode; + if (RegBankSelectMode != RunningMode) + DEBUG(dbgs() << "RegBankSelect mode overrided by command line\n"); + } } void RegBankSelect::init(MachineFunction &MF) { -- cgit v1.2.3