blob: 2558a96c04ed043814bbb4f389c6582a746ea044 [file] [log] [blame]
Chris Lattner9562add2002-11-17 21:03:35 +00001//===-- X86InstrBuilder.h - Functions to aid building x86 insts -*- C++ -*-===//
2//
3// This file exposes functions that may be used with BuildMI from the
4// MachineInstrBuilder.h file to handle X86'isms in a clean way.
5//
6// The BuildMem function may be used with the BuildMI function to add entire
7// memory references in a single, typed, function call. X86 memory references
8// can be very complex expressions (described in the README), so wrapping them
9// up behind an easier to use interface makes sense. Descriptions of the
10// functions are included below.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef X86INSTRBUILDER_H
15#define X86INSTRBUILDER_H
16
17#include "llvm/CodeGen/MachineInstrBuilder.h"
18
19/// addDirectMem - This function is used to add a direct memory reference to the
20/// current instruction. Because memory references are always represented with
21/// four values, this adds: Reg, [1, NoReg, 0] to the instruction
22///
23inline const MachineInstrBuilder &addDirectMem(const MachineInstrBuilder &MIB,
24 unsigned Reg) {
25 return MIB.addReg(Reg).addZImm(1).addMReg(0).addSImm(0);
26}
27
Misha Brukmanfaf0b8c2002-11-22 22:42:12 +000028
29/// addRegOffset -
30///
31///
32inline const MachineInstrBuilder &addRegOffset(const MachineInstrBuilder &MIB,
33 unsigned Reg, unsigned Offset) {
34 return MIB.addReg(Reg).addZImm(1).addMReg(0).addSImm(Offset);
35}
36
Chris Lattner9562add2002-11-17 21:03:35 +000037#endif