1207618Srdivacky//===-- X86SelectionDAGInfo.h - X86 SelectionDAG Info -----------*- C++ -*-===//
2207618Srdivacky//
3207618Srdivacky//                     The LLVM Compiler Infrastructure
4207618Srdivacky//
5207618Srdivacky// This file is distributed under the University of Illinois Open Source
6207618Srdivacky// License. See LICENSE.TXT for details.
7207618Srdivacky//
8207618Srdivacky//===----------------------------------------------------------------------===//
9207618Srdivacky//
10207618Srdivacky// This file defines the X86 subclass for TargetSelectionDAGInfo.
11207618Srdivacky//
12207618Srdivacky//===----------------------------------------------------------------------===//
13207618Srdivacky
14207618Srdivacky#ifndef X86SELECTIONDAGINFO_H
15207618Srdivacky#define X86SELECTIONDAGINFO_H
16207618Srdivacky
17207618Srdivacky#include "llvm/Target/TargetSelectionDAGInfo.h"
18207618Srdivacky
19207618Srdivackynamespace llvm {
20207618Srdivacky
21208599Srdivackyclass X86TargetLowering;
22208599Srdivackyclass X86TargetMachine;
23208599Srdivackyclass X86Subtarget;
24208599Srdivacky
25207618Srdivackyclass X86SelectionDAGInfo : public TargetSelectionDAGInfo {
26208599Srdivacky  /// Subtarget - Keep a pointer to the X86Subtarget around so that we can
27208599Srdivacky  /// make the right decision when generating code for different targets.
28208599Srdivacky  const X86Subtarget *Subtarget;
29208599Srdivacky
30208599Srdivacky  const X86TargetLowering &TLI;
31208599Srdivacky
32207618Srdivackypublic:
33208599Srdivacky  explicit X86SelectionDAGInfo(const X86TargetMachine &TM);
34207618Srdivacky  ~X86SelectionDAGInfo();
35208599Srdivacky
36208599Srdivacky  virtual
37263508Sdim  SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc dl,
38208599Srdivacky                                  SDValue Chain,
39208599Srdivacky                                  SDValue Dst, SDValue Src,
40208599Srdivacky                                  SDValue Size, unsigned Align,
41208599Srdivacky                                  bool isVolatile,
42218893Sdim                                  MachinePointerInfo DstPtrInfo) const;
43208599Srdivacky
44208599Srdivacky  virtual
45263508Sdim  SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc dl,
46208599Srdivacky                                  SDValue Chain,
47208599Srdivacky                                  SDValue Dst, SDValue Src,
48208599Srdivacky                                  SDValue Size, unsigned Align,
49208599Srdivacky                                  bool isVolatile, bool AlwaysInline,
50218893Sdim                                  MachinePointerInfo DstPtrInfo,
51218893Sdim                                  MachinePointerInfo SrcPtrInfo) const;
52207618Srdivacky};
53207618Srdivacky
54207618Srdivacky}
55207618Srdivacky
56207618Srdivacky#endif
57