18b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//===-- X86SelectionDAGInfo.h - X86 SelectionDAG Info -----------*- C++ -*-===//
28b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//
38b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//                     The LLVM Compiler Infrastructure
48b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//
58b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman// This file is distributed under the University of Illinois Open Source
68b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman// License. See LICENSE.TXT for details.
78b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//
88b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//===----------------------------------------------------------------------===//
98b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//
108b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman// This file defines the X86 subclass for TargetSelectionDAGInfo.
118b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//
128b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman//===----------------------------------------------------------------------===//
138b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman
148b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman#ifndef X86SELECTIONDAGINFO_H
158b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman#define X86SELECTIONDAGINFO_H
168b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman
178b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman#include "llvm/Target/TargetSelectionDAGInfo.h"
188b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman
198b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohmannamespace llvm {
208b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman
21cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohmanclass X86TargetLowering;
22cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohmanclass X86TargetMachine;
23cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohmanclass X86Subtarget;
24cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman
258b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohmanclass X86SelectionDAGInfo : public TargetSelectionDAGInfo {
26cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  /// Subtarget - Keep a pointer to the X86Subtarget around so that we can
27cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  /// make the right decision when generating code for different targets.
28cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  const X86Subtarget *Subtarget;
29cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman
30cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  const X86TargetLowering &TLI;
31cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman
328b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohmanpublic:
33cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  explicit X86SelectionDAGInfo(const X86TargetMachine &TM);
348b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman  ~X86SelectionDAGInfo();
35cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman
36cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  virtual
37cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, DebugLoc dl,
38cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  SDValue Chain,
39cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  SDValue Dst, SDValue Src,
40cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  SDValue Size, unsigned Align,
41cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  bool isVolatile,
42c515938bc6c609b156fbf3609a2849091489282dChris Lattner                                  MachinePointerInfo DstPtrInfo) const;
43cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman
44cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  virtual
45cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman  SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, DebugLoc dl,
46cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  SDValue Chain,
47cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  SDValue Dst, SDValue Src,
48cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  SDValue Size, unsigned Align,
49cfbb32346a7eca19d4dc00fd2c1a0248537b3497Dan Gohman                                  bool isVolatile, bool AlwaysInline,
50c515938bc6c609b156fbf3609a2849091489282dChris Lattner                                  MachinePointerInfo DstPtrInfo,
51c515938bc6c609b156fbf3609a2849091489282dChris Lattner                                  MachinePointerInfo SrcPtrInfo) const;
528b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman};
538b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman
548b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman}
558b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman
568b8dc1cdcf5f34b66c3f929186168102f3149cb1Dan Gohman#endif
57