1 //===-- SystemZSelectionDAGInfo.h - SystemZ SelectionDAG Info ---*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines the SystemZ subclass for SelectionDAGTargetInfo. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H 15 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H 16 17 #include "llvm/CodeGen/SelectionDAGTargetInfo.h" 18 19 namespace llvm { 20 21 class SystemZTargetMachine; 22 23 class SystemZSelectionDAGInfo : public SelectionDAGTargetInfo { 24 public: 25 explicit SystemZSelectionDAGInfo() = default; 26 27 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &DL, 28 SDValue Chain, SDValue Dst, SDValue Src, 29 SDValue Size, unsigned Align, bool IsVolatile, 30 bool AlwaysInline, 31 MachinePointerInfo DstPtrInfo, 32 MachinePointerInfo SrcPtrInfo) const override; 33 34 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL, 35 SDValue Chain, SDValue Dst, SDValue Byte, 36 SDValue Size, unsigned Align, bool IsVolatile, 37 MachinePointerInfo DstPtrInfo) const override; 38 39 std::pair<SDValue, SDValue> 40 EmitTargetCodeForMemcmp(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, 41 SDValue Src1, SDValue Src2, SDValue Size, 42 MachinePointerInfo Op1PtrInfo, 43 MachinePointerInfo Op2PtrInfo) const override; 44 45 std::pair<SDValue, SDValue> 46 EmitTargetCodeForMemchr(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, 47 SDValue Src, SDValue Char, SDValue Length, 48 MachinePointerInfo SrcPtrInfo) const override; 49 50 std::pair<SDValue, SDValue> EmitTargetCodeForStrcpy( 51 SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest, 52 SDValue Src, MachinePointerInfo DestPtrInfo, 53 MachinePointerInfo SrcPtrInfo, bool isStpcpy) const override; 54 55 std::pair<SDValue, SDValue> 56 EmitTargetCodeForStrcmp(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, 57 SDValue Src1, SDValue Src2, 58 MachinePointerInfo Op1PtrInfo, 59 MachinePointerInfo Op2PtrInfo) const override; 60 61 std::pair<SDValue, SDValue> 62 EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, 63 SDValue Src, 64 MachinePointerInfo SrcPtrInfo) const override; 65 66 std::pair<SDValue, SDValue> 67 EmitTargetCodeForStrnlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, 68 SDValue Src, SDValue MaxLength, 69 MachinePointerInfo SrcPtrInfo) const override; 70 }; 71 72 } // end namespace llvm 73 74 #endif 75