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