Revision tags: llvmorg-21-init |
|
#
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 ...
|
Revision tags: llvmorg-19.1.7 |
|
#
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 |
|
#
31a4d2c2 |
| 19-Nov-2024 |
vporpo <vporpodas@google.com> |
[SandboxVec][DAG] Cleanup: Move callback registration from Scheduler to DAG (#116455)
This is a refactoring patch that moves the callback registration for
getting notified about new instructions fr
[SandboxVec][DAG] Cleanup: Move callback registration from Scheduler to DAG (#116455)
This is a refactoring patch that moves the callback registration for
getting notified about new instructions from the scheduler to the DAG.
This makes sense from a design and testing point of view:
- the DAG should not rely on the scheduler for getting notified
- the notifiers don't need to be public
- it's easier to test the notifiers directly from within the DAG unit
tests
show more ...
|
Revision tags: 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 ...
|
#
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.
|
#
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.
|
#
7b9c6a7c |
| 03-Oct-2024 |
vporpo <vporpodas@google.com> |
[SandboxVec][DAG][NFC] Move functions from Utils to DependencyGraph (#111031)
This patch moves:
- Utils::isStackSaveOrRestoreIntrinsic()
- Utils::isMemIntrinsic()
- Utils::isMemDepCandidate()
[SandboxVec][DAG][NFC] Move functions from Utils to DependencyGraph (#111031)
This patch moves:
- Utils::isStackSaveOrRestoreIntrinsic()
- Utils::isMemIntrinsic()
- Utils::isMemDepCandidate()
to DGNode because they no longer require LLVM IR access and are used
only by the DAG.
show more ...
|
#
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 |
|
#
e22b07e7 |
| 30-Sep-2024 |
vporpo <vporpodas@google.com> |
[SandboxIR][NFC] Move Function class to a separate file (#110526)
|
#
2018f4cc |
| 27-Sep-2024 |
Vasileios Porpodas <vporpodas@google.com> |
Reapply "[SandboxIR][NFC] Delete SandboxIR.h (#110309)"
This reverts commit 8dfeb4ef5d60a5c764f0ce249cc4ec69e012ff93.
|
#
8dfeb4ef |
| 27-Sep-2024 |
Vasileios Porpodas <vporpodas@google.com> |
Revert "[SandboxIR][NFC] Delete SandboxIR.h (#110309)"
This reverts commit ca47f48a5c9e81ef8b5c4a5b1fbc473ea5d5497c.
|
#
ca47f48a |
| 27-Sep-2024 |
vporpo <vporpodas@google.com> |
[SandboxIR][NFC] Delete SandboxIR.h (#110309)
|
#
8f31ee99 |
| 21-Sep-2024 |
vporpo <vporpodas@google.com> |
[SandboxVec][DAG] Implement DGNode::isMem() (#109504)
DGNode::isMem() returns true if the node is a memory dependency
candidate.
|
#
0c9f7ef5 |
| 21-Sep-2024 |
vporpo <vporpodas@google.com> |
[SandboxVec][DAG] Implement extend(ArrayRef) (#109493)
This builds the DAG from an ArrayRef of Instructions.
|
#
318d2f5e |
| 17-Sep-2024 |
vporpo <vporpodas@google.com> |
[SandboxVec][DAG] Boilerplate (#108862)
This patch adds a very basic implementation of the Dependency Graph to
be used by the vectorizer.
|