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 18namespace llvm { 19 20class SystemZTargetMachine; 21 22class SystemZSelectionDAGInfo : public SelectionDAGTargetInfo { 23public: 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