/3rd_party/llvm/lib/Target/SystemZ/SystemZInstrBuilder.h
https://code.google.com/p/softart/ · C Header · 48 lines · 28 code · 6 blank · 14 comment · 2 complexity · 0ce38fdb344b815d2b45e6e632c732f9 MD5 · raw file
- //===-- SystemZInstrBuilder.h - Functions to aid building insts -*- C++ -*-===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This file exposes functions that may be used with BuildMI from the
- // MachineInstrBuilder.h file to handle SystemZ'isms in a clean way.
- //
- //===----------------------------------------------------------------------===//
- #ifndef SYSTEMZINSTRBUILDER_H
- #define SYSTEMZINSTRBUILDER_H
- #include "llvm/CodeGen/MachineFrameInfo.h"
- #include "llvm/CodeGen/MachineInstrBuilder.h"
- #include "llvm/CodeGen/MachineMemOperand.h"
- #include "llvm/CodeGen/PseudoSourceValue.h"
- namespace llvm {
- /// Add a BDX memory reference for frame object FI to MIB.
- static inline const MachineInstrBuilder &
- addFrameReference(const MachineInstrBuilder &MIB, int FI) {
- MachineInstr *MI = MIB;
- MachineFunction &MF = *MI->getParent()->getParent();
- MachineFrameInfo *MFFrame = MF.getFrameInfo();
- const MCInstrDesc &MCID = MI->getDesc();
- unsigned Flags = 0;
- if (MCID.mayLoad())
- Flags |= MachineMemOperand::MOLoad;
- if (MCID.mayStore())
- Flags |= MachineMemOperand::MOStore;
- int64_t Offset = 0;
- MachineMemOperand *MMO =
- MF.getMachineMemOperand(MachinePointerInfo(
- PseudoSourceValue::getFixedStack(FI), Offset),
- Flags, MFFrame->getObjectSize(FI),
- MFFrame->getObjectAlignment(FI));
- return MIB.addFrameIndex(FI).addImm(Offset).addReg(0).addMemOperand(MMO);
- }
- } // End llvm namespace
- #endif