1 //===-- AArch64SelectionDAGInfo.h - AArch64 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 AArch64 subclass for SelectionDAGTargetInfo.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64SELECTIONDAGINFO_H
14 #define LLVM_LIB_TARGET_AARCH64_AARCH64SELECTIONDAGINFO_H
16 #include "llvm/CodeGen/SelectionDAGTargetInfo.h"
20 class AArch64SelectionDAGInfo
: public SelectionDAGTargetInfo
{
22 SDValue
EmitMOPS(AArch64ISD::NodeType SDOpcode
, SelectionDAG
&DAG
,
23 const SDLoc
&DL
, SDValue Chain
, SDValue Dst
,
24 SDValue SrcOrValue
, SDValue Size
, Align Alignment
,
25 bool isVolatile
, MachinePointerInfo DstPtrInfo
,
26 MachinePointerInfo SrcPtrInfo
) const;
28 SDValue
EmitTargetCodeForMemcpy(SelectionDAG
&DAG
, const SDLoc
&dl
,
29 SDValue Chain
, SDValue Dst
, SDValue Src
,
30 SDValue Size
, Align Alignment
,
31 bool isVolatile
, bool AlwaysInline
,
32 MachinePointerInfo DstPtrInfo
,
33 MachinePointerInfo SrcPtrInfo
) const override
;
34 SDValue
EmitTargetCodeForMemset(SelectionDAG
&DAG
, const SDLoc
&dl
,
35 SDValue Chain
, SDValue Dst
, SDValue Src
,
36 SDValue Size
, Align Alignment
,
37 bool isVolatile
, bool AlwaysInline
,
38 MachinePointerInfo DstPtrInfo
) const override
;
40 EmitTargetCodeForMemmove(SelectionDAG
&DAG
, const SDLoc
&dl
, SDValue Chain
,
41 SDValue Dst
, SDValue Src
, SDValue Size
,
42 Align Alignment
, bool isVolatile
,
43 MachinePointerInfo DstPtrInfo
,
44 MachinePointerInfo SrcPtrInfo
) const override
;
46 SDValue
EmitTargetCodeForSetTag(SelectionDAG
&DAG
, const SDLoc
&dl
,
47 SDValue Chain
, SDValue Op1
, SDValue Op2
,
48 MachinePointerInfo DstPtrInfo
,
49 bool ZeroData
) const override
;
51 SDValue
EmitStreamingCompatibleMemLibCall(SelectionDAG
&DAG
, const SDLoc
&DL
,
52 SDValue Chain
, SDValue Dst
,
53 SDValue Src
, SDValue Size
,
54 RTLIB::Libcall LC
) const;