mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
558cec9d9b
This adds the actual lib/Target/SystemZ target files necessary to implement the SystemZ target. Note that at this point, the target cannot yet be built since the configure bits are missing. Those will be provided shortly by a follow-on patch. This version of the patch incorporates feedback from reviews by Chris Lattner and Anton Korobeynikov. Thanks to all reviewers! Patch by Richard Sandiford. llvm-svn: 181203
49 lines
1.7 KiB
C++
49 lines
1.7 KiB
C++
//===-- 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
|