xref: /llvm-project/llvm/lib/Target/AMDGPU/Utils/AMDGPUDelayedMCExpr.h (revision 3d1705d00c5f183b73d69aa0ceca481845e82fe8)
1*3d1705d0SJanek van Oirschot //===- AMDGPUDelayedMCExpr.h - Delayed MCExpr resolve -----------*- C++ -*-===//
2*3d1705d0SJanek van Oirschot //
3*3d1705d0SJanek van Oirschot // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*3d1705d0SJanek van Oirschot // See https://llvm.org/LICENSE.txt for license information.
5*3d1705d0SJanek van Oirschot // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*3d1705d0SJanek van Oirschot //
7*3d1705d0SJanek van Oirschot //===----------------------------------------------------------------------===//
8*3d1705d0SJanek van Oirschot 
9*3d1705d0SJanek van Oirschot #ifndef LLVM_LIB_TARGET_AMDGPU_UTILS_AMDGPUDELAYEDMCEXPR_H
10*3d1705d0SJanek van Oirschot #define LLVM_LIB_TARGET_AMDGPU_UTILS_AMDGPUDELAYEDMCEXPR_H
11*3d1705d0SJanek van Oirschot 
12*3d1705d0SJanek van Oirschot #include "llvm/BinaryFormat/MsgPackDocument.h"
13*3d1705d0SJanek van Oirschot #include <deque>
14*3d1705d0SJanek van Oirschot 
15*3d1705d0SJanek van Oirschot namespace llvm {
16*3d1705d0SJanek van Oirschot class MCExpr;
17*3d1705d0SJanek van Oirschot 
18*3d1705d0SJanek van Oirschot class DelayedMCExprs {
19*3d1705d0SJanek van Oirschot   struct Expr {
20*3d1705d0SJanek van Oirschot     msgpack::DocNode &DN;
21*3d1705d0SJanek van Oirschot     msgpack::Type Type;
22*3d1705d0SJanek van Oirschot     const MCExpr *ExprValue;
ExprExpr23*3d1705d0SJanek van Oirschot     Expr(msgpack::DocNode &DN, msgpack::Type Type, const MCExpr *ExprValue)
24*3d1705d0SJanek van Oirschot         : DN(DN), Type(Type), ExprValue(ExprValue) {}
25*3d1705d0SJanek van Oirschot   };
26*3d1705d0SJanek van Oirschot 
27*3d1705d0SJanek van Oirschot   std::deque<Expr> DelayedExprs;
28*3d1705d0SJanek van Oirschot 
29*3d1705d0SJanek van Oirschot public:
30*3d1705d0SJanek van Oirschot   bool resolveDelayedExpressions();
31*3d1705d0SJanek van Oirschot   void assignDocNode(msgpack::DocNode &DN, msgpack::Type Type,
32*3d1705d0SJanek van Oirschot                      const MCExpr *ExprValue);
33*3d1705d0SJanek van Oirschot   void clear();
34*3d1705d0SJanek van Oirschot   bool empty();
35*3d1705d0SJanek van Oirschot };
36*3d1705d0SJanek van Oirschot 
37*3d1705d0SJanek van Oirschot } // end namespace llvm
38*3d1705d0SJanek van Oirschot 
39*3d1705d0SJanek van Oirschot #endif // LLVM_LIB_TARGET_AMDGPU_UTILS_AMDGPUDELAYEDMCEXPR_H
40