Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
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.