1259698Sdim//===-- SystemZSelectionDAGInfo.h - SystemZ SelectionDAG Info ---*- C++ -*-===// 2259698Sdim// 3259698Sdim// The LLVM Compiler Infrastructure 4259698Sdim// 5259698Sdim// This file is distributed under the University of Illinois Open Source 6259698Sdim// License. See LICENSE.TXT for details. 7259698Sdim// 8259698Sdim//===----------------------------------------------------------------------===// 9259698Sdim// 10259698Sdim// This file defines the SystemZ subclass for TargetSelectionDAGInfo. 11259698Sdim// 12259698Sdim//===----------------------------------------------------------------------===// 13259698Sdim 14280031Sdim#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H 15280031Sdim#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H 16259698Sdim 17259698Sdim#include "llvm/Target/TargetSelectionDAGInfo.h" 18259698Sdim 19259698Sdimnamespace llvm { 20259698Sdim 21259698Sdimclass SystemZTargetMachine; 22259698Sdim 23259698Sdimclass SystemZSelectionDAGInfo : public TargetSelectionDAGInfo { 24259698Sdimpublic: 25288943Sdim explicit SystemZSelectionDAGInfo() = default; 26259698Sdim 27259698Sdim SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 28259698Sdim SDValue Dst, SDValue Src, 29259698Sdim SDValue Size, unsigned Align, 30259698Sdim bool IsVolatile, bool AlwaysInline, 31259698Sdim MachinePointerInfo DstPtrInfo, 32276479Sdim MachinePointerInfo SrcPtrInfo) const override; 33259698Sdim 34276479Sdim SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc DL, 35276479Sdim SDValue Chain, SDValue Dst, SDValue Byte, 36276479Sdim SDValue Size, unsigned Align, bool IsVolatile, 37276479Sdim MachinePointerInfo DstPtrInfo) const override; 38259698Sdim 39276479Sdim std::pair<SDValue, SDValue> 40259698Sdim EmitTargetCodeForMemcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 41259698Sdim SDValue Src1, SDValue Src2, SDValue Size, 42259698Sdim MachinePointerInfo Op1PtrInfo, 43276479Sdim MachinePointerInfo Op2PtrInfo) const override; 44259698Sdim 45276479Sdim std::pair<SDValue, SDValue> 46259698Sdim EmitTargetCodeForMemchr(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 47259698Sdim SDValue Src, SDValue Char, SDValue Length, 48276479Sdim MachinePointerInfo SrcPtrInfo) const override; 49259698Sdim 50276479Sdim std::pair<SDValue, SDValue> 51259698Sdim EmitTargetCodeForStrcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 52259698Sdim SDValue Dest, SDValue Src, 53259698Sdim MachinePointerInfo DestPtrInfo, 54259698Sdim MachinePointerInfo SrcPtrInfo, 55276479Sdim bool isStpcpy) const override; 56259698Sdim 57276479Sdim std::pair<SDValue, SDValue> 58259698Sdim EmitTargetCodeForStrcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 59259698Sdim SDValue Src1, SDValue Src2, 60259698Sdim MachinePointerInfo Op1PtrInfo, 61276479Sdim MachinePointerInfo Op2PtrInfo) const override; 62259698Sdim 63276479Sdim std::pair<SDValue, SDValue> 64259698Sdim EmitTargetCodeForStrlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 65276479Sdim SDValue Src, 66276479Sdim MachinePointerInfo SrcPtrInfo) const override; 67259698Sdim 68276479Sdim std::pair<SDValue, SDValue> 69259698Sdim EmitTargetCodeForStrnlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 70259698Sdim SDValue Src, SDValue MaxLength, 71276479Sdim MachinePointerInfo SrcPtrInfo) const override; 72259698Sdim}; 73259698Sdim 74276479Sdim} // end namespace llvm 75259698Sdim 76259698Sdim#endif 77