[X86] Preserve volatile ATOMIC_LOAD_OR nodes
[llvm-project.git] / llvm / lib / Target / X86 / X86SelectionDAGInfo.h
blob19136ca4f6f586dce63b56f688a27462c214f74e
1 //===-- X86SelectionDAGInfo.h - X86 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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines the X86 subclass for SelectionDAGTargetInfo.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H
14 #define LLVM_LIB_TARGET_X86_X86SELECTIONDAGINFO_H
16 #include "llvm/CodeGen/SelectionDAGTargetInfo.h"
18 namespace llvm {
20 class X86SelectionDAGInfo : public SelectionDAGTargetInfo {
21 /// Returns true if it is possible for the base register to conflict with the
22 /// given set of clobbers for a memory intrinsic.
23 bool isBaseRegConflictPossible(SelectionDAG &DAG,
24 ArrayRef<MCPhysReg> ClobberSet) const;
26 public:
27 explicit X86SelectionDAGInfo() = default;
29 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &dl,
30 SDValue Chain, SDValue Dst, SDValue Src,
31 SDValue Size, Align Alignment,
32 bool isVolatile, bool AlwaysInline,
33 MachinePointerInfo DstPtrInfo) const override;
35 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl,
36 SDValue Chain, SDValue Dst, SDValue Src,
37 SDValue Size, Align Alignment,
38 bool isVolatile, bool AlwaysInline,
39 MachinePointerInfo DstPtrInfo,
40 MachinePointerInfo SrcPtrInfo) const override;
45 #endif