LLVM API Documentation

SystemZSelectionDAGInfo.h
Go to the documentation of this file.
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