1 //===-- SystemZSelectionDAGInfo.h - SystemZ SelectionDAG Info ---*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 // This file defines the SystemZ subclass for SelectionDAGTargetInfo.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
14 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
16 #include "llvm/CodeGen/SelectionDAGTargetInfo.h"
20 class SystemZTargetMachine;
22 class SystemZSelectionDAGInfo : public SelectionDAGTargetInfo {
24 explicit SystemZSelectionDAGInfo() = default;
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;
33 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL,
34 SDValue Chain, SDValue Dst, SDValue Byte,
35 SDValue Size, Align Alignment,
37 MachinePointerInfo DstPtrInfo) const override;
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;
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;
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;
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;
61 std::pair<SDValue, SDValue>
62 EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
64 MachinePointerInfo SrcPtrInfo) const override;
66 std::pair<SDValue, SDValue>
67 EmitTargetCodeForStrnlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
68 SDValue Src, SDValue MaxLength,
69 MachinePointerInfo SrcPtrInfo) const override;
72 } // end namespace llvm