ResourceSegments are a collection of intervals closed on the left and opened on the right:

Synopsis

Declared in <llvm/CodeGen/MachineScheduler.h>

class ResourceSegments;

Description

list{ [a1, b1), [a2, b2), ..., [a_N, b_N) }]]]

The collection has the following properties:

1. The list is ordered: a_i < b_i and b_i < a_(i+1)

2. The intervals in the collection do not intersect each other.

A ResourceSegments instance represents the cycle reservation history of the instance of and individual resource.

Type Aliases

Name

Description

IntervalTy

Represents an interval of discrete integer values closed on the left and open on the right: [a, b).]

Member Functions

Name

Description

ResourceSegments [constructor]

Constructors

add

Adds an interval [a, b) to the collection of the instance.]

empty

Return true if no resource intervals are reserved.

getFirstAvailableAtFromBottom

Return the first bottom‐up cycle where this resource is free.

getFirstAvailableAtFromTop

Return the first top‐down cycle where this resource is free.

Static Member Functions

Name

Description

getResourceIntervalBottom

These function return the interval used by a resource in bottom and top scheduling.

getResourceIntervalTop

Compute the resource interval for top‐down scheduling at cycle C.

intersects

Return true if intervals A and B intersect.

Friends

Name

Description

llvm::operator<<

Print the reserved intervals of Segments to os.

llvm::operator==

Return true if c1 and c2 reserve the same intervals.

Created with MrDocs