//===-- InstSelectSimple.cpp - A simple instruction selector for SparcV8 --===//// // The LLVM Compiler Infrastructure//// This file was developed by the LLVM research group and is distributed under// the University of Illinois Open Source License. See LICENSE.TXT for details.// //===----------------------------------------------------------------------===////// This file defines a simple peephole instruction selector for the V8 target////===----------------------------------------------------------------------===//#include"SparcV8.h"#include"SparcV8InstrInfo.h"#include"llvm/Support/Debug.h"#include"llvm/Instructions.h"#include"llvm/Pass.h"#include"llvm/Constants.h"#include"llvm/CodeGen/IntrinsicLowering.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/MachineConstantPool.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/SSARegMap.h"#include"llvm/Target/TargetMachine.h"#include"llvm/Support/GetElementPtrTypeIterator.h"#include"llvm/Support/InstVisitor.h"#include"llvm/Support/CFG.h"usingnamespacellvm;namespace{structV8ISel:publicFunctionPass,publicInstVisitor<V8ISel>{TargetMachine&TM;MachineFunction*F;// The function we are compiling intoMachineBasicBlock*BB;// The current MBB we are compilingintVarArgsOffset;// Offset from fp for start of varargs areastd::map<Value*,unsigned>RegMap;// Mapping between Val's and SSA Regs// MBBMap - Mapping between LLVM BB -> Machine BBstd::map<