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
, unsigned Align
, bool IsVolatile
,
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
, unsigned Align
, bool IsVolatile
,
36 MachinePointerInfo DstPtrInfo
) const override
;
38 std::pair
<SDValue
, SDValue
>
39 EmitTargetCodeForMemcmp(SelectionDAG
&DAG
, const SDLoc
&DL
, SDValue Chain
,
40 SDValue Src1
, SDValue Src2
, SDValue Size
,
41 MachinePointerInfo Op1PtrInfo
,
42 MachinePointerInfo Op2PtrInfo
) const override
;
44 std::pair
<SDValue
, SDValue
>
45 EmitTargetCodeForMemchr(SelectionDAG
&DAG
, const SDLoc
&DL
, SDValue Chain
,
46 SDValue Src
, SDValue Char
, SDValue Length
,
47 MachinePointerInfo SrcPtrInfo
) const override
;
49 std::pair
<SDValue
, SDValue
> EmitTargetCodeForStrcpy(
50 SelectionDAG
&DAG
, const SDLoc
&DL
, SDValue Chain
, SDValue Dest
,
51 SDValue Src
, MachinePointerInfo DestPtrInfo
,
52 MachinePointerInfo SrcPtrInfo
, bool isStpcpy
) const override
;
54 std::pair
<SDValue
, SDValue
>
55 EmitTargetCodeForStrcmp(SelectionDAG
&DAG
, const SDLoc
&DL
, SDValue Chain
,
56 SDValue Src1
, SDValue Src2
,
57 MachinePointerInfo Op1PtrInfo
,
58 MachinePointerInfo Op2PtrInfo
) const override
;
60 std::pair
<SDValue
, SDValue
>
61 EmitTargetCodeForStrlen(SelectionDAG
&DAG
, const SDLoc
&DL
, SDValue Chain
,
63 MachinePointerInfo SrcPtrInfo
) const override
;
65 std::pair
<SDValue
, SDValue
>
66 EmitTargetCodeForStrnlen(SelectionDAG
&DAG
, const SDLoc
&DL
, SDValue Chain
,
67 SDValue Src
, SDValue MaxLength
,
68 MachinePointerInfo SrcPtrInfo
) const override
;
71 } // end namespace llvm