LLVM API Documentation
00001 //===-- X86SelectionDAGInfo.h - X86 SelectionDAG Info -----------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file defines the X86 subclass for TargetSelectionDAGInfo. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H 00015 #define LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H 00016 00017 #include "llvm/Target/TargetSelectionDAGInfo.h" 00018 00019 namespace llvm { 00020 00021 class X86TargetLowering; 00022 class X86TargetMachine; 00023 class X86Subtarget; 00024 00025 class X86SelectionDAGInfo : public TargetSelectionDAGInfo { 00026 /// Returns true if it is possible for the base register to conflict with the 00027 /// given set of clobbers for a memory intrinsic. 00028 bool isBaseRegConflictPossible(SelectionDAG &DAG, 00029 ArrayRef<unsigned> ClobberSet) const; 00030 00031 public: 00032 explicit X86SelectionDAGInfo(const DataLayout &DL); 00033 ~X86SelectionDAGInfo(); 00034 00035 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc dl, 00036 SDValue Chain, 00037 SDValue Dst, SDValue Src, 00038 SDValue Size, unsigned Align, 00039 bool isVolatile, 00040 MachinePointerInfo DstPtrInfo) const override; 00041 00042 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc dl, 00043 SDValue Chain, 00044 SDValue Dst, SDValue Src, 00045 SDValue Size, unsigned Align, 00046 bool isVolatile, bool AlwaysInline, 00047 MachinePointerInfo DstPtrInfo, 00048 MachinePointerInfo SrcPtrInfo) const override; 00049 }; 00050 00051 } 00052 00053 #endif