Lines Matching full:block
21 /// Metadata associated with an HTR block
25 /// Constructor for a block's metadata.
28 /// The load address of the block's first instruction.
31 /// The total number of instructions in the block.
35 /// the block.
51 /// Get the number of instructions in the block.
54 /// The number of instructions in the block.
57 /// Get the name of the most frequently called function from the block.
60 /// The name of the function that is called the most from this block or
61 /// std::nullopt if no function is called from this block.
64 /// Get the load address of the first instruction in the block.
67 /// The load address of the first instruction in the block.
70 /// Get the function calls map for the block.
75 /// times it is called from this block.
79 /// this block.
88 /// Block structure representing a sequence of trace "units" (ie instructions).
89 /// Sequences of blocks are merged to create a new, single block
93 /// Constructor for a block of an HTR layer.
96 /// The offset of the start of this block in the previous layer.
99 /// Number of blocks/instructions that make up this block in the previous
103 /// General metadata for this block.
107 /// Get the offset of the start of this block in the previous layer.
110 /// The offset of the block.
113 /// Get the number of blocks/instructions that make up this block in the
117 /// The size of the block.
120 /// Get the metadata for this block.
123 /// The metadata of the block.
129 /// Number of blocks/instructions that make up this block in the previous
132 /// General metadata for this block
152 /// Get the metadata of a unit (instruction or block) in the layer.
161 /// Get the total number of units (instruction or block) in this layer.
167 /// Creates a new block from the result of merging a contiguous sequence of
181 /// A new block instance representing the merge of the specified units.
246 /// Construct new block layer.
256 /// Get an \a HTRBlock from its block id.
259 /// The id of the block to retrieve.
262 /// The \a HTRBlock with the specified id, nullptr if no there is no block
263 /// in the layer with the specified block id.
266 /// Get the block ID trace for this layer.
267 /// This block ID trace stores the block ID of each block that occured in the
268 /// trace and the block defs map maps block ID to the corresponding \a
272 /// The block ID trace for this layer.
275 /// Appends a new block to the layer.
278 /// The block id of the new block.
280 /// \param[in] block
281 /// The new \a HTRBlock to be appended to the layer. This block is moved
283 void AppendNewBlock(size_t block_id, HTRBlock &&block);
285 /// Appends a repeated block to the layer.
288 /// The block id of the repeated block.
292 /// Maps a unique Block ID to the corresponding HTRBlock
294 /// Reduce memory footprint by just storing a trace of block IDs and use
330 /// Get the block layers of this HTR.
333 /// The block layers of this HTR.
342 /// Add a new block layer to this HTR.
345 /// The new block layer to be added.
351 // There are one or more block layers per HTR
357 llvm::json::Value toJSON(const HTRBlock &block);
364 /// A "basic super block" is the longest sequence of blocks that always occur in
365 /// the same order. (The concept is akin to “Basic Block" in compiler theory,
370 /// - For each block, compute the number of distinct predecessor and
372 /// Predecessor - the block that occurs directly before (to the left of)
373 /// the current block Successor - the block that occurs directly after
374 /// (to the right of) the current block
375 /// - A block with more than one distinct successor is always the start of a
376 /// super block, the super block will continue until the next block with
380 /// the 'endpoints' of a basic super block:
381 /// A 'head' is defined to be a block in the trace that doesn't have a
383 /// A 'tail' is defined to be a block in the trace that doesn't have a
386 /// A basic super block is defined to be a sequence of blocks between two
390 /// ends at the block preceding the head and the next group begins with
391 /// this head block
394 /// ends with the tail block and the next group begins with the
395 /// following block.