diff options
Diffstat (limited to 'lib/Target/SystemZ/SystemZInstrInfo.cpp')
| -rw-r--r-- | lib/Target/SystemZ/SystemZInstrInfo.cpp | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.cpp b/lib/Target/SystemZ/SystemZInstrInfo.cpp index 4533f4fdf21a..572446c1aa12 100644 --- a/lib/Target/SystemZ/SystemZInstrInfo.cpp +++ b/lib/Target/SystemZ/SystemZInstrInfo.cpp @@ -16,8 +16,9 @@  #include "SystemZ.h"  #include "SystemZInstrBuilder.h"  #include "SystemZSubtarget.h" +#include "llvm/ADT/Statistic.h"  #include "llvm/CodeGen/LiveInterval.h" -#include "llvm/CodeGen/LiveIntervalAnalysis.h" +#include "llvm/CodeGen/LiveIntervals.h"  #include "llvm/CodeGen/LiveVariables.h"  #include "llvm/CodeGen/MachineBasicBlock.h"  #include "llvm/CodeGen/MachineFrameInfo.h" @@ -27,14 +28,14 @@  #include "llvm/CodeGen/MachineOperand.h"  #include "llvm/CodeGen/MachineRegisterInfo.h"  #include "llvm/CodeGen/SlotIndexes.h" +#include "llvm/CodeGen/TargetInstrInfo.h" +#include "llvm/CodeGen/TargetSubtargetInfo.h"  #include "llvm/MC/MCInstrDesc.h"  #include "llvm/MC/MCRegisterInfo.h"  #include "llvm/Support/BranchProbability.h"  #include "llvm/Support/ErrorHandling.h"  #include "llvm/Support/MathExtras.h" -#include "llvm/Target/TargetInstrInfo.h"  #include "llvm/Target/TargetMachine.h" -#include "llvm/Target/TargetSubtargetInfo.h"  #include <cassert>  #include <cstdint>  #include <iterator> @@ -45,6 +46,9 @@ using namespace llvm;  #define GET_INSTRMAP_INFO  #include "SystemZGenInstrInfo.inc" +#define DEBUG_TYPE "systemz-II" +STATISTIC(LOCRMuxJumps, "Number of LOCRMux jump-sequences (lower is better)"); +  // Return a mask with Count low bits set.  static uint64_t allOnes(unsigned int Count) {    return Count == 0 ? 0 : (uint64_t(1) << (Count - 1) << 1) - 1; @@ -209,6 +213,8 @@ void SystemZInstrInfo::expandLOCRPseudo(MachineInstr &MI, unsigned LowOpcode,      MI.setDesc(get(LowOpcode));    else if (DestIsHigh && SrcIsHigh)      MI.setDesc(get(HighOpcode)); +  else +    LOCRMuxJumps++;    // If we were unable to implement the pseudo with a single instruction, we    // need to convert it back into a branch sequence.  This cannot be done here  | 
