[all-commits] [llvm/llvm-project] 0d6a58: [MachinePipeliner] Add an abstract layer to manipu...
Ryotaro Kasuga via All-commits
all-commits at lists.llvm.org
Mon Dec 23 17:02:36 PST 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 0d6a584f69f07cfb900cdf6c83a10e872a5861f9
https://github.com/llvm/llvm-project/commit/0d6a584f69f07cfb900cdf6c83a10e872a5861f9
Author: Ryotaro Kasuga <kasuga.ryotaro at fujitsu.com>
Date: 2024-12-24 (Tue, 24 Dec 2024)
Changed paths:
M llvm/include/llvm/CodeGen/MachinePipeliner.h
M llvm/lib/CodeGen/MachinePipeliner.cpp
Log Message:
-----------
[MachinePipeliner] Add an abstract layer to manipulate Data Dependenc… (#109918)
…e Graph
In MachinePipeliner, a DAG class is used to represent the Data
Dependence Graph. Data Dependence Graph generally contains cycles, so
it's not appropriate to use DAG classes. In fact, some "hacks" are used
to express back-edges in the current implementation. This patch adds a
new class to provide a better interface for manipulating dependencies.
Our approach is as follows:
- To build the graph, we use the ScheduleDAGInstrs class as it is,
because it has powerful functions and the current implementation depends
heavily on it.
- After the graph construction is finished (i.e., during scheduling), we
use the new class DataDependenceGraph to manipulate the dependencies.
Since we don't change the dependencies during scheduling, the new class
only provides functions to read them. Also, this patch is just a
refactoring, i.e., scheduling results should not change with or without
this patch.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list