1285163Sdim//=- WebAssemblySelectionDAGInfo.h - WebAssembly SelectionDAG Info -*- C++ -*-//
2285163Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6285163Sdim//
7285163Sdim//===----------------------------------------------------------------------===//
8285163Sdim///
9285163Sdim/// \file
10341825Sdim/// This file defines the WebAssembly subclass for
11309124Sdim/// SelectionDAGTargetInfo.
12285163Sdim///
13285163Sdim//===----------------------------------------------------------------------===//
14285163Sdim
15285163Sdim#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYSELECTIONDAGINFO_H
16285163Sdim#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYSELECTIONDAGINFO_H
17285163Sdim
18309124Sdim#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
19285163Sdim
20285163Sdimnamespace llvm {
21285163Sdim
22309124Sdimclass WebAssemblySelectionDAGInfo final : public SelectionDAGTargetInfo {
23285163Sdimpublic:
24285163Sdim  ~WebAssemblySelectionDAGInfo() override;
25353358Sdim  SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl,
26353358Sdim                                  SDValue Chain, SDValue Op1, SDValue Op2,
27353358Sdim                                  SDValue Op3, unsigned Align, bool isVolatile,
28353358Sdim                                  bool AlwaysInline,
29353358Sdim                                  MachinePointerInfo DstPtrInfo,
30353358Sdim                                  MachinePointerInfo SrcPtrInfo) const override;
31353358Sdim  SDValue EmitTargetCodeForMemmove(SelectionDAG &DAG, const SDLoc &dl,
32353358Sdim                                   SDValue Chain, SDValue Op1, SDValue Op2,
33353358Sdim                                   SDValue Op3, unsigned Align, bool isVolatile,
34353358Sdim                                   MachinePointerInfo DstPtrInfo,
35353358Sdim                                   MachinePointerInfo SrcPtrInfo) const override;
36353358Sdim  SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL,
37353358Sdim                                  SDValue Chain, SDValue Op1, SDValue Op2,
38353358Sdim                                  SDValue Op3, unsigned Align, bool IsVolatile,
39353358Sdim                                  MachinePointerInfo DstPtrInfo) const override;
40285163Sdim};
41285163Sdim
42285163Sdim} // end namespace llvm
43285163Sdim
44285163Sdim#endif
45