mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 23:36:05 +00:00

A more lightweight variant of https://github.com/llvm/llvm-project/pull/109193, which dispatches to multiple exit blocks via the middle blocks. The patch also introduces a bit of required scaffolding to enable early-exit vectorization, including an option. At the moment, early-exit vectorization doesn't come with legality checks, and is only used if the option is provided and the loop has metadata forcing vectorization. This is only intended to be used for testing during bring-up, with @david-arm enabling auto early-exit vectorization plugging in the changes from https://github.com/llvm/llvm-project/pull/88385. PR: https://github.com/llvm/llvm-project/pull/112138
42 lines
725 B
Plaintext
42 lines
725 B
Plaintext
digraph VPlan {
|
|
graph [labelloc=t, fontsize=30; label=""]
|
|
node [shape=rect, fontname=Courier, fontsize=30]
|
|
edge [fontname=Courier, fontsize=30]
|
|
compound=true
|
|
N1 [label =
|
|
"vector.ph"
|
|
]
|
|
N1 -> N2 [ label="" lhead=cluster_N3]
|
|
subgraph cluster_N3 {
|
|
fontname=Courier
|
|
label="\<x1\> vector loop"
|
|
N2 [label =
|
|
"vector.body"
|
|
]
|
|
}
|
|
N2 -> N4 [ label="" ltail=cluster_N3]
|
|
N4 [label =
|
|
"middle.split"
|
|
]
|
|
N4 -> N5 [ label=""]
|
|
N4 -> N6 [ label=""]
|
|
N5 [label =
|
|
"early.exit"
|
|
]
|
|
N6 [label =
|
|
"middle.block"
|
|
]
|
|
N6 -> N9 [ label=""]
|
|
N6 -> N7 [ label=""]
|
|
N7 [label =
|
|
"scalar.ph"
|
|
]
|
|
N7 -> N8 [ label=""]
|
|
N8 [label =
|
|
"loop.header"
|
|
]
|
|
N9 [label =
|
|
"latch.exit"
|
|
]
|
|
}
|