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
14280031Sdim#ifndef LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H
15280031Sdim#define LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H
16207618Srdivacky
17207618Srdivacky#include "llvm/Target/TargetSelectionDAGInfo.h"
18207618Srdivacky
19207618Srdivackynamespace llvm {
20207618Srdivacky
21208599Srdivackyclass X86TargetLowering;
22208599Srdivackyclass X86TargetMachine;
23208599Srdivackyclass X86Subtarget;
24208599Srdivacky
25207618Srdivackyclass X86SelectionDAGInfo : public TargetSelectionDAGInfo {
26280031Sdim  /// Returns true if it is possible for the base register to conflict with the
27280031Sdim  /// given set of clobbers for a memory intrinsic.
28280031Sdim  bool isBaseRegConflictPossible(SelectionDAG &DAG,
29280031Sdim                                 ArrayRef<unsigned> ClobberSet) const;
30280031Sdim
31207618Srdivackypublic:
32288943Sdim  explicit X86SelectionDAGInfo() = default;
33208599Srdivacky
34261991Sdim  SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc dl,
35208599Srdivacky                                  SDValue Chain,
36208599Srdivacky                                  SDValue Dst, SDValue Src,
37208599Srdivacky                                  SDValue Size, unsigned Align,
38208599Srdivacky                                  bool isVolatile,
39276479Sdim                                  MachinePointerInfo DstPtrInfo) const override;
40208599Srdivacky
41261991Sdim  SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc dl,
42208599Srdivacky                                  SDValue Chain,
43208599Srdivacky                                  SDValue Dst, SDValue Src,
44208599Srdivacky                                  SDValue Size, unsigned Align,
45208599Srdivacky                                  bool isVolatile, bool AlwaysInline,
46218893Sdim                                  MachinePointerInfo DstPtrInfo,
47276479Sdim                                  MachinePointerInfo SrcPtrInfo) const override;
48207618Srdivacky};
49207618Srdivacky
50207618Srdivacky}
51207618Srdivacky
52207618Srdivacky#endif
53