LLVM API Documentation
00001 //===-- SystemZSelectionDAGInfo.h - SystemZ 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 SystemZ subclass for TargetSelectionDAGInfo. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H 00015 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H 00016 00017 #include "llvm/Target/TargetSelectionDAGInfo.h" 00018 00019 namespace llvm { 00020 00021 class SystemZTargetMachine; 00022 00023 class SystemZSelectionDAGInfo : public TargetSelectionDAGInfo { 00024 public: 00025 explicit SystemZSelectionDAGInfo(const DataLayout &DL); 00026 ~SystemZSelectionDAGInfo(); 00027 00028 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00029 SDValue Dst, SDValue Src, 00030 SDValue Size, unsigned Align, 00031 bool IsVolatile, bool AlwaysInline, 00032 MachinePointerInfo DstPtrInfo, 00033 MachinePointerInfo SrcPtrInfo) const override; 00034 00035 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc DL, 00036 SDValue Chain, SDValue Dst, SDValue Byte, 00037 SDValue Size, unsigned Align, bool IsVolatile, 00038 MachinePointerInfo DstPtrInfo) const override; 00039 00040 std::pair<SDValue, SDValue> 00041 EmitTargetCodeForMemcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00042 SDValue Src1, SDValue Src2, SDValue Size, 00043 MachinePointerInfo Op1PtrInfo, 00044 MachinePointerInfo Op2PtrInfo) const override; 00045 00046 std::pair<SDValue, SDValue> 00047 EmitTargetCodeForMemchr(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00048 SDValue Src, SDValue Char, SDValue Length, 00049 MachinePointerInfo SrcPtrInfo) const override; 00050 00051 std::pair<SDValue, SDValue> 00052 EmitTargetCodeForStrcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00053 SDValue Dest, SDValue Src, 00054 MachinePointerInfo DestPtrInfo, 00055 MachinePointerInfo SrcPtrInfo, 00056 bool isStpcpy) const override; 00057 00058 std::pair<SDValue, SDValue> 00059 EmitTargetCodeForStrcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00060 SDValue Src1, SDValue Src2, 00061 MachinePointerInfo Op1PtrInfo, 00062 MachinePointerInfo Op2PtrInfo) const override; 00063 00064 std::pair<SDValue, SDValue> 00065 EmitTargetCodeForStrlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00066 SDValue Src, 00067 MachinePointerInfo SrcPtrInfo) const override; 00068 00069 std::pair<SDValue, SDValue> 00070 EmitTargetCodeForStrnlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 00071 SDValue Src, SDValue MaxLength, 00072 MachinePointerInfo SrcPtrInfo) const override; 00073 }; 00074 00075 } // end namespace llvm 00076 00077 #endif