brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 42c2797 Raw
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