diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonVectorPrint.cpp')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonVectorPrint.cpp | 56 |
1 files changed, 37 insertions, 19 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonVectorPrint.cpp b/llvm/lib/Target/Hexagon/HexagonVectorPrint.cpp index af6d018d0ec..085d4645df0 100644 --- a/llvm/lib/Target/Hexagon/HexagonVectorPrint.cpp +++ b/llvm/lib/Target/Hexagon/HexagonVectorPrint.cpp @@ -15,8 +15,24 @@ #define DEBUG_TYPE "hexagon-vector-print" -#include "HexagonTargetMachine.h" +#include "HexagonInstrInfo.h" +#include "HexagonSubtarget.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/CodeGen/MachineBasicBlock.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" +#include "llvm/CodeGen/MachineOperand.h" +#include "llvm/IR/DebugLoc.h" +#include "llvm/IR/InlineAsm.h" +#include "llvm/Pass.h" +#include "llvm/Support/CommandLine.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/raw_ostream.h" +#include <string> +#include <vector> using namespace llvm; @@ -25,40 +41,43 @@ static cl::opt<bool> TraceHexVectorStoresOnly("trace-hex-vector-stores-only", cl::desc("Enables tracing of vector stores")); namespace llvm { + FunctionPass *createHexagonVectorPrint(); void initializeHexagonVectorPrintPass(PassRegistry&); -} +} // end namespace llvm namespace { class HexagonVectorPrint : public MachineFunctionPass { - const HexagonSubtarget *QST; - const HexagonInstrInfo *QII; - const HexagonRegisterInfo *QRI; - - public: - static char ID; - HexagonVectorPrint() : MachineFunctionPass(ID), - QST(0), QII(0), QRI(0) { - initializeHexagonVectorPrintPass(*PassRegistry::getPassRegistry()); - } + const HexagonSubtarget *QST; + const HexagonInstrInfo *QII; + const HexagonRegisterInfo *QRI; - StringRef getPassName() const override { - return "Hexagon VectorPrint pass"; - } - bool runOnMachineFunction(MachineFunction &Fn) override; +public: + static char ID; + + HexagonVectorPrint() + : MachineFunctionPass(ID), QST(nullptr), QII(nullptr), QRI(nullptr) { + initializeHexagonVectorPrintPass(*PassRegistry::getPassRegistry()); + } + + StringRef getPassName() const override { return "Hexagon VectorPrint pass"; } + + bool runOnMachineFunction(MachineFunction &Fn) override; }; char HexagonVectorPrint::ID = 0; +} // end anonymous namespace + static bool isVecReg(unsigned Reg) { return (Reg >= Hexagon::V0 && Reg <= Hexagon::V31) || (Reg >= Hexagon::W0 && Reg <= Hexagon::W15) || (Reg >= Hexagon::Q0 && Reg <= Hexagon::Q3); } -std::string getStringReg(unsigned R) { +static std::string getStringReg(unsigned R) { if (R >= Hexagon::V0 && R <= Hexagon::V31) { static const char* S[] = { "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", @@ -138,7 +157,7 @@ bool HexagonVectorPrint::runOnMachineFunction(MachineFunction &Fn) { } } - Changed = VecPrintList.size() > 0; + Changed = !VecPrintList.empty(); if (!Changed) return Changed; @@ -179,7 +198,6 @@ bool HexagonVectorPrint::runOnMachineFunction(MachineFunction &Fn) { return Changed; } -} //===----------------------------------------------------------------------===// // Public Constructor Functions //===----------------------------------------------------------------------===// |

