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