10b57cec5SDimitry Andric //===-- AArch64SelectionDAGInfo.h - AArch64 SelectionDAG Info ---*- C++ -*-===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric // 90b57cec5SDimitry Andric // This file defines the AArch64 subclass for SelectionDAGTargetInfo. 100b57cec5SDimitry Andric // 110b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64SELECTIONDAGINFO_H 140b57cec5SDimitry Andric #define LLVM_LIB_TARGET_AARCH64_AARCH64SELECTIONDAGINFO_H 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric #include "llvm/CodeGen/SelectionDAGTargetInfo.h" 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric namespace llvm { 190b57cec5SDimitry Andric 200b57cec5SDimitry Andric class AArch64SelectionDAGInfo : public SelectionDAGTargetInfo { 210b57cec5SDimitry Andric public: 221fd87a68SDimitry Andric SDValue EmitMOPS(AArch64ISD::NodeType SDOpcode, SelectionDAG &DAG, 231fd87a68SDimitry Andric const SDLoc &DL, SDValue Chain, SDValue Dst, 241fd87a68SDimitry Andric SDValue SrcOrValue, SDValue Size, Align Alignment, 251fd87a68SDimitry Andric bool isVolatile, MachinePointerInfo DstPtrInfo, 261fd87a68SDimitry Andric MachinePointerInfo SrcPtrInfo) const; 271fd87a68SDimitry Andric 281fd87a68SDimitry Andric SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl, 291fd87a68SDimitry Andric SDValue Chain, SDValue Dst, SDValue Src, 301fd87a68SDimitry Andric SDValue Size, Align Alignment, 311fd87a68SDimitry Andric bool isVolatile, bool AlwaysInline, 321fd87a68SDimitry Andric MachinePointerInfo DstPtrInfo, 331fd87a68SDimitry Andric MachinePointerInfo SrcPtrInfo) const override; 340b57cec5SDimitry Andric SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &dl, 350b57cec5SDimitry Andric SDValue Chain, SDValue Dst, SDValue Src, 365ffd83dbSDimitry Andric SDValue Size, Align Alignment, 3781ad6265SDimitry Andric bool isVolatile, bool AlwaysInline, 380b57cec5SDimitry Andric MachinePointerInfo DstPtrInfo) const override; 391fd87a68SDimitry Andric SDValue 401fd87a68SDimitry Andric EmitTargetCodeForMemmove(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, 411fd87a68SDimitry Andric SDValue Dst, SDValue Src, SDValue Size, 421fd87a68SDimitry Andric Align Alignment, bool isVolatile, 431fd87a68SDimitry Andric MachinePointerInfo DstPtrInfo, 441fd87a68SDimitry Andric MachinePointerInfo SrcPtrInfo) const override; 451fd87a68SDimitry Andric 460b57cec5SDimitry Andric SDValue EmitTargetCodeForSetTag(SelectionDAG &DAG, const SDLoc &dl, 470b57cec5SDimitry Andric SDValue Chain, SDValue Op1, SDValue Op2, 480b57cec5SDimitry Andric MachinePointerInfo DstPtrInfo, 490b57cec5SDimitry Andric bool ZeroData) const override; 50*0fca6ea1SDimitry Andric 51*0fca6ea1SDimitry Andric SDValue EmitStreamingCompatibleMemLibCall(SelectionDAG &DAG, const SDLoc &DL, 52*0fca6ea1SDimitry Andric SDValue Chain, SDValue Dst, 53*0fca6ea1SDimitry Andric SDValue Src, SDValue Size, 54*0fca6ea1SDimitry Andric RTLIB::Libcall LC) const; 550b57cec5SDimitry Andric }; 560b57cec5SDimitry Andric } 570b57cec5SDimitry Andric 580b57cec5SDimitry Andric #endif 59