28 if (
const auto [node, ioBarrierOp] =
29 rvsdg::TryGetSimpleNodeAndOptionalOp<IOBarrierOperation>(trace1);
38 if (
const auto [node, loadOp] = rvsdg::TryGetSimpleNodeAndOptionalOp<LoadOperation>(trace1);
41 if (is<MemoryStateType>(trace1.Type()))
45 return *memoryStateInput.origin();
56 constexpr
bool enableCaching =
false;
58 return tracer.
trace(output, withinRegion);
61 std::optional<int64_t>
66 if (
const auto [_, constant] =
67 rvsdg::TryGetSimpleNodeAndOptionalOp<IntegerConstantOperation>(normalized);
70 const auto & rep = constant->Representation();
71 if (rep.is_known() && rep.nbits() <= 64)
76 if (
const auto [_, constant] =
77 rvsdg::TryGetSimpleNodeAndOptionalOp<rvsdg::BitConstantOperation>(normalized);
80 const auto & rep = constant->value();
81 if (rep.is_known() && rep.nbits() <= 64)
static rvsdg::Input & BarredInput(const rvsdg::SimpleNode &node) noexcept
static rvsdg::Input & MapMemoryStateOutputToInput(const rvsdg::Output &output)
bool traceThroughLoadedStates_
rvsdg::Output & traceStep(rvsdg::Output &output, const rvsdg::Region *withinRegion) override
OutputTracer(bool enableCaching)
Output & trace(Output &output)
virtual Output & traceStep(Output &output, const rvsdg::Region *withinRegion)
Represent acyclic RVSDG subgraphs.
Global memory state passed between functions.
rvsdg::Output & traceOutput(rvsdg::Output &output, const rvsdg::Region *withinRegion)
std::optional< int64_t > tryGetConstantSignedInteger(const rvsdg::Output &output)