//===-- PPC32ISelPattern.cpp - A pattern matching inst selector for PPC32 -===////// The LLVM Compiler Infrastructure//// This file was developed by Nate Begeman and is distributed under// the University of Illinois Open Source License. See LICENSE.TXT for details.// //===----------------------------------------------------------------------===////// This file defines a pattern matching instruction selector for 32 bit PowerPC.////===----------------------------------------------------------------------===//#include"PowerPC.h"#include"PowerPCInstrBuilder.h"#include"PowerPCInstrInfo.h"#include"PPC32RegisterInfo.h"#include"llvm/Constants.h" // FIXME: REMOVE#include"llvm/Function.h"#include"llvm/CodeGen/MachineConstantPool.h" // FIXME: REMOVE#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/SelectionDAG.h"#include"llvm/CodeGen/SelectionDAGISel.h"#include"llvm/CodeGen/SSARegMap.h"#include"llvm/Target/TargetData.h"#include"llvm/Target/TargetLowering.h"#include"llvm/Support/Debug.h"#include"llvm/Support/MathExtras.h"#include"llvm/ADT/Statistic.h"#include<set>#include<algorithm>usingnamespacellvm;//===----------------------------------------------------------------------===//// PPC32TargetLowering - PPC32 Implementation of the TargetLowering interfacenamespace{classPPC32TargetLowering:publicTargetLowering{intVarArgsFrameIndex;// FrameIndex for start of varargs area.intReturnAddrIndex;// FrameIndex for return slot.public:PPC32TargetLowering(TargetMachine&TM):TargetLowering(TM){// Set up the TargetLowering object.// Set up the register classes.addRegisterClass(MVT::i32,PPC32::GPRCRegisterClass);addRegisterClass(MVT::f32,PPC32::