69 lines · c
1//===-- AArch64SelectionDAGInfo.h - AArch64 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines the AArch64 subclass for SelectionDAGTargetInfo.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64SELECTIONDAGINFO_H14#define LLVM_LIB_TARGET_AARCH64_AARCH64SELECTIONDAGINFO_H15 16#include "llvm/CodeGen/SelectionDAGTargetInfo.h"17#include "llvm/IR/RuntimeLibcalls.h"18 19#define GET_SDNODE_ENUM20#include "AArch64GenSDNodeInfo.inc"21#undef GET_SDNODE_ENUM22 23namespace llvm {24 25class AArch64SelectionDAGInfo : public SelectionDAGGenTargetInfo {26public:27 AArch64SelectionDAGInfo();28 29 void verifyTargetNode(const SelectionDAG &DAG,30 const SDNode *N) const override;31 32 SDValue EmitMOPS(unsigned Opcode, SelectionDAG &DAG, const SDLoc &DL,33 SDValue Chain, SDValue Dst, SDValue SrcOrValue, SDValue Size,34 Align Alignment, bool isVolatile,35 MachinePointerInfo DstPtrInfo,36 MachinePointerInfo SrcPtrInfo) const;37 38 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl,39 SDValue Chain, SDValue Dst, SDValue Src,40 SDValue Size, Align Alignment,41 bool isVolatile, bool AlwaysInline,42 MachinePointerInfo DstPtrInfo,43 MachinePointerInfo SrcPtrInfo) const override;44 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &dl,45 SDValue Chain, SDValue Dst, SDValue Src,46 SDValue Size, Align Alignment,47 bool isVolatile, bool AlwaysInline,48 MachinePointerInfo DstPtrInfo) const override;49 SDValue50 EmitTargetCodeForMemmove(SelectionDAG &DAG, const SDLoc &dl, SDValue Chain,51 SDValue Dst, SDValue Src, SDValue Size,52 Align Alignment, bool isVolatile,53 MachinePointerInfo DstPtrInfo,54 MachinePointerInfo SrcPtrInfo) const override;55 56 SDValue EmitTargetCodeForSetTag(SelectionDAG &DAG, const SDLoc &dl,57 SDValue Chain, SDValue Op1, SDValue Op2,58 MachinePointerInfo DstPtrInfo,59 bool ZeroData) const override;60 61 SDValue EmitStreamingCompatibleMemLibCall(SelectionDAG &DAG, const SDLoc &DL,62 SDValue Chain, SDValue Dst,63 SDValue Src, SDValue Size,64 RTLIB::Libcall LC) const;65};66} // namespace llvm67 68#endif69