Files
TheRock/rocm-systems/projects/rocprofiler-systems/external/dyninst/dataflowAPI/doc/Assignment.tex
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

81 lines
2.4 KiB
TeX

\subsection{Class Assignment}
\label{sec:assign}
\definedin{Absloc.h}
An assignment represents data dependencies between an output abstract region
that is modified by this instruction and several input abstract regions that are
used by this instruction. An instruction may modify several abstract regions,
so an instruction can correspond to multiple assignments.
\begin{apient}
typedef boost::shared_ptr<Assignment> Ptr;
\end{apient}
\apidesc{Shared pointer for Assignment class.}
\begin{apient}
const std::vector<AbsRegion> &inputs() const;
std::vector<AbsRegion> &inputs();
\end{apient}
\apidesc{Return the input abstract regions.}
\begin{apient}
const AbsRegion &out() const;
AbsRegion &out();
\end{apient}
\apidesc{Return the output abstract region.}
\begin{apient}
InstructionAPI::Instruction::Ptr insn() const;
\end{apient}
\apidesc{Return the instruction that contains this assignment.}
\begin{apient}
Address addr() const;
\end{apient}
\apidesc{Return the address of this assignment.}
\begin{apient}
ParseAPI::Function *func() const;
\end{apient}
\apidesc{Return the function that contains this assignment.}
\begin{apient}
ParseAPI::Block *block() const;
\end{apient}
\apidesc{Return the block that contains this assignment.}
\begin{apient}
const std::string format() const;
\end{apient}
\apidesc{Return the string representation of this assignment.}
\subsection{Class AssignmentConverter}
\label{sec:assignmentcovnert}
\definedin{AbslocInterface.h}
This class should be used to convert instructions to assignments.
\begin{apient}
AssignmentConverter(bool cache, bool stack = true);
\end{apient}
\apidesc{Construct an AssignmentConverter.
When \code{cache} is \code{true}, this object
will cache the conversion results for converted instructions. When \code{stack}
is \code{true}, stack analysis is used to distinguish stack variables at
different offset. When \code{stack} is \code{false}, the stack is treated as a
single memory region.}
\begin{apient}
void convert(InstructionAPI::Instruction::Ptr insn,
const Address &addr,
ParseAPI::Function *func,
ParseAPI::Block *blk,
std::vector<Assignment::Ptr> &assign);
\end{apient}
\apidesc{Convert instruction \code{insn} to assignments and return these
assignments in \code{assign}. The user also needs to provide the context of
\code{insn}, including its address \code{addr}, function \code{func}, and block
\code{blk}.}