Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init
# 1c4341d1 25-Jan-2025 Vasileios Porpodas <vporpodas@google.com>

[SandboxVec][DAG] Fix interval check without Node

This patch moves the check of whether a node exists before the check of
whether it is contained in the interval.


# b41987be 24-Jan-2025 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Fix MemDGNode chain maintenance when move destination is non-mem (#124227)

This patch fixes a bug in the maintenance of the MemDGNode chain of the
DAG. Whenever we move a memory i

[SandboxVec][DAG] Fix MemDGNode chain maintenance when move destination is non-mem (#124227)

This patch fixes a bug in the maintenance of the MemDGNode chain of the
DAG. Whenever we move a memory instruction, the DAG gets notified about
the move and maintains the chain of memory nodes. The bug was that if
the destination of the move was not a memory instruction, then the
memory node's next node would end up pointing to itself.

show more ...


# c7053ac2 23-Jan-2025 vporpo <vporpodas@google.com>

[SandboxVec][BottomUpVec] Disable crossing BBs (#124039)

Crossing BBs is not currently supported by the structures of the
vectorizer. This patch fixes instances where this was happening,
including

[SandboxVec][BottomUpVec] Disable crossing BBs (#124039)

Crossing BBs is not currently supported by the structures of the
vectorizer. This patch fixes instances where this was happening,
including:
- a walk of use-def operands that updates the UnscheduledSuccs counter,
- the dead instruction removal is now done per BB,
- the scheduler, which will reject bundles that cross BBs.

show more ...


# 40893149 22-Jan-2025 Vasileios Porpodas <vporpodas@google.com>

[SandboxVec][DAG][NFC] Remove early return in notifyMoveInstr()

It used to early return when destination is same as origin. But it's redundant
because in that case the callback won't get called in t

[SandboxVec][DAG][NFC] Remove early return in notifyMoveInstr()

It used to early return when destination is same as origin. But it's redundant
because in that case the callback won't get called in the first place.

show more ...


Revision tags: llvmorg-19.1.7
# 9248428d 10-Jan-2025 vporpo <vporpodas@google.com>

[SandboxVec][DAG][NFC] Refactor setNextNode() and setPrevNode() (#122363)

This patch updates DAG's `setNextNode()` and `setPrevNode()` to update
both nodes of the link.


# 7a38445e 21-Dec-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Register move instr callback (#120146)

This patch implements the move instruction notifier for the DAG.
Whenever an instruction moves the notifier will maintain the DAG.


Revision tags: llvmorg-19.1.6
# cafb6b99 10-Dec-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Update MemDGNode chain upon instr deletion (#118921)


# eeb55d3a 06-Dec-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Update MemDGNode chain upon instr creation (#116896)

The DAG maintains a chain of MemDGNodes that links together all the
nodes that may touch memroy.
Whenever a new instruction g

[SandboxVec][DAG] Update MemDGNode chain upon instr creation (#116896)

The DAG maintains a chain of MemDGNodes that links together all the
nodes that may touch memroy.
Whenever a new instruction gets created we need to make sure that this
chain gets updated. If the new instruction touches memory then its
corresponding MemDGNode should be inserted into the chain.

show more ...


Revision tags: llvmorg-19.1.5
# 6e482148 20-Nov-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Register callback for erase instr (#116742)

This patch adds the callback registration logic in the DAG's constructor
and the corresponding deregistration logic in the destructor.

[SandboxVec][DAG] Register callback for erase instr (#116742)

This patch adds the callback registration logic in the DAG's constructor
and the corresponding deregistration logic in the destructor. It also
implements the code that makes sure that SchedBundle and DGNodes can be
safely destroyed in any order.

show more ...


Revision tags: llvmorg-19.1.4, llvmorg-19.1.3
# 1d09925b 18-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][Scheduler] Boilerplate and initial implementation. (#112449)

This patch implements a ready-list-based scheduler that operates on
DependencyGraph.
It is used by the sandbox vectorizer

[SandboxVec][Scheduler] Boilerplate and initial implementation. (#112449)

This patch implements a ready-list-based scheduler that operates on
DependencyGraph.
It is used by the sandbox vectorizer to test the legality of vectorizing
a group of instrs.

SchedBundle is a helper container, containing all DGNodes that
correspond to the instructions that we are attempting to schedule with
trySchedule(Instrs).

show more ...


Revision tags: llvmorg-19.1.2
# fc08ad66 14-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Implement UnscheduledSuccs (#112255)

This patch implements the UnscheduledSuccs counter in DGNode. It counts
the number of unscheduled successors and is used by the scheduler to

[SandboxVec][DAG] Implement UnscheduledSuccs (#112255)

This patch implements the UnscheduledSuccs counter in DGNode. It counts
the number of unscheduled successors and is used by the scheduler to
determine when a node is ready.

show more ...


# 08bfc9b0 14-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Avoid unnecessary dependency scan and improve description (#112057)

When NewInterval is below DAGInterval we used to revisit instructions
already visited. This patch fixes this by

[SandboxVec][DAG] Avoid unnecessary dependency scan and improve description (#112057)

When NewInterval is below DAGInterval we used to revisit instructions
already visited. This patch fixes this by separating the scan in two:
1. The full scan of the NewInterval, and
2. The cross-interval scan for DAGInterval.

This is further explained in the new description.

show more ...


# 31b85c6e 11-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][Interval] Implement Interval::comesBefore() (#112026)

This patch implements `Interval::comesBefore(const Interval &Other)`
which returns true if this interval is strictly before Other

[SandboxVec][Interval] Implement Interval::comesBefore() (#112026)

This patch implements `Interval::comesBefore(const Interval &Other)`
which returns true if this interval is strictly before Other in program
order. The function asserts that the intervals are disjoint.

show more ...


# e8dd95e9 11-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Extend DAG (#111908)

This patch implements growing the DAG towards the top or bottom. This
does the necessary dependency checks and adds new mem dependencies.


# 69c00679 10-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Refactoring: Outline code that looks for mem nodes (#111750)


# a4916d20 10-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Refactoring: Move MemPreds from DGNode to MemDGNode (#111897)


# 747d8f3f 10-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Implement PredIterator (#111604)

This patch implements an iterator for iterating over both use-def and
mem dependencies of MemDGNodes.


# ee0e17a4 09-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Drop RAR and fix dependency scanning loop (#111715)


# 00c1c589 09-Oct-2024 Simon Pilgrim <llvm-dev@redking.me.uk>

DependencyGraph.cpp - mix MSVC "not all control paths return a value" warning. NFC.


# 267e8521 09-Oct-2024 Vasileios Porpodas <vporpodas@google.com>

[SandboxVec][DAG][NFC] Rename enumerators


# 04a8bffd 08-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Build actual dependencies (#111094)

This patch implements actual dependencies checking using BatchAA. This
adds memory dep edges between MemDGNodes.


# 45582ed2 03-Oct-2024 Vasileios Porpodas <vporpodas@google.com>

[SandboxVec][DAG][NFC] Rename isMemDepCandidate() to isMemDepNodeCandidate()


# fd5e220f 01-Oct-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] MemDGNode for memory-dependency candidate nodes (#109684)

This patch implements the MemDGNode class for DAG nodes that are
candidates
for memory dependencies. These nodes form a

[SandboxVec][DAG] MemDGNode for memory-dependency candidate nodes (#109684)

This patch implements the MemDGNode class for DAG nodes that are
candidates
for memory dependencies. These nodes form a chain that is accessible by
`getPrevNode()` and `getNextNode()`.

It also implements a builder class that creates MemDGNode intervals from
Instructions.

show more ...


Revision tags: llvmorg-19.1.1
# 3c66a510 27-Sep-2024 vporpo <vporpodas@google.com>

[SandboxVec][Interval] Convert InstrInterval class to a class template (#110021)

This patch converts InstrInterval class to a class template and renames
InstrInterval to Itnerval.

This change wi

[SandboxVec][Interval] Convert InstrInterval class to a class template (#110021)

This patch converts InstrInterval class to a class template and renames
InstrInterval to Itnerval.

This change will allow us to reuse the Interval for dependency graph
nodes.

show more ...


# 0c9f7ef5 21-Sep-2024 vporpo <vporpodas@google.com>

[SandboxVec][DAG] Implement extend(ArrayRef) (#109493)

This builds the DAG from an ArrayRef of Instructions.


12