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 SystemZTargetMachine; 21 22 class SystemZSelectionDAGInfo : public SelectionDAGTargetInfo { 23 public: 24 explicit SystemZSelectionDAGInfo() = default; 25 26 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &DL, 27 SDValue Chain, SDValue Dst, SDValue Src, 28 SDValue Size, Align Alignment, 29 bool IsVolatile, bool AlwaysInline, 30 MachinePointerInfo DstPtrInfo, 31 MachinePointerInfo SrcPtrInfo) const override; 32 33 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL, 34 SDValue Chain, SDValue Dst, SDValue Byte, 35 SDValue Size, Align Alignment, 36 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