SystemZInstrBuilder.h revision 251662
133965Sjdp//===-- SystemZInstrBuilder.h - Functions to aid building insts -*- C++ -*-===// 278828Sobrien// 391041Sobrien// The LLVM Compiler Infrastructure 478828Sobrien// 578828Sobrien// This file is distributed under the University of Illinois Open Source 678828Sobrien// License. See LICENSE.TXT for details. 778828Sobrien// 878828Sobrien//===----------------------------------------------------------------------===// 978828Sobrien// 1078828Sobrien// This file exposes functions that may be used with BuildMI from the 1178828Sobrien// MachineInstrBuilder.h file to handle SystemZ'isms in a clean way. 1278828Sobrien// 1378828Sobrien//===----------------------------------------------------------------------===// 1478828Sobrien 1578828Sobrien#ifndef SYSTEMZINSTRBUILDER_H 1678828Sobrien#define SYSTEMZINSTRBUILDER_H 1778828Sobrien 1878828Sobrien#include "llvm/CodeGen/MachineFrameInfo.h" 1978828Sobrien#include "llvm/CodeGen/MachineInstrBuilder.h" 2078828Sobrien#include "llvm/CodeGen/MachineMemOperand.h" 2178828Sobrien#include "llvm/CodeGen/PseudoSourceValue.h" 2278828Sobrien 2378828Sobriennamespace llvm { 2478828Sobrien 2578828Sobrien/// Add a BDX memory reference for frame object FI to MIB. 2678828Sobrienstatic inline const MachineInstrBuilder & 2733965SjdpaddFrameReference(const MachineInstrBuilder &MIB, int FI) { 2833965Sjdp MachineInstr *MI = MIB; 2933965Sjdp MachineFunction &MF = *MI->getParent()->getParent(); 3033965Sjdp MachineFrameInfo *MFFrame = MF.getFrameInfo(); 3133965Sjdp const MCInstrDesc &MCID = MI->getDesc(); 3233965Sjdp unsigned Flags = 0; 3333965Sjdp if (MCID.mayLoad()) 3433965Sjdp Flags |= MachineMemOperand::MOLoad; 3533965Sjdp if (MCID.mayStore()) 3633965Sjdp Flags |= MachineMemOperand::MOStore; 3733965Sjdp int64_t Offset = 0; 3838889Sjdp MachineMemOperand *MMO = 3938889Sjdp MF.getMachineMemOperand(MachinePointerInfo( 4038889Sjdp PseudoSourceValue::getFixedStack(FI), Offset), 4138889Sjdp Flags, MFFrame->getObjectSize(FI), 4233965Sjdp MFFrame->getObjectAlignment(FI)); 4333965Sjdp return MIB.addFrameIndex(FI).addImm(Offset).addReg(0).addMemOperand(MMO); 4477298Sobrien} 4577298Sobrien 4677298Sobrien} // End llvm namespace 4777298Sobrien 4877298Sobrien#endif 4977298Sobrien