llvm / llvm/circt

[Arc] Allow VectorizeOp body to have multiple results

Open
#7,071 0 comments 0 reactions 0 assignees View on GitHub
Arc
Dominant language
C++
Stars
2.2k
Forks
524
Avg merge
3d 2h
Merged PRs (30d)
46

Description

The `arc.vectorize` op currently doesn't allow its body region to produce more than one result. This is a limitation in MLIR, which does not support VariadicOfVariadic results yet. VariadicOfVariadic operands _do_ work however, which is why the vectorize op can have multiple operands. The vectorize op should definitely allow for multiple results, in order to allow for larger vectors to be formed.

Either add VariadicOfVariadic result support upstream in MLIR, or manually add the necessary result segment size attribute and result accessors to `VectorizeOp` here in CIRCT.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by inspecting the VectorizeOp definition and its existing VariadicOfVariadic operand handling. Determine whether result support should be added upstream in MLIR or locally with result segment size handling and accessors; done means arc.vectorize accepts bodies producing multiple results.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.