Skip to content

Provide predicated data type#23

Merged
tancheng merged 8 commits intomainfrom
ctrl_flow
Jun 10, 2025
Merged

Provide predicated data type#23
tancheng merged 8 commits intomainfrom
ctrl_flow

Conversation

@tancheng
Copy link
Copy Markdown
Contributor

@tancheng tancheng commented May 26, 2025

  • Include predicate operand for each op
  • Provide predicated data type
    • Partial predication should be leveraged for dataflow acceleration: https://mpslab-asu.github.io/publications/papers/Hamzeh2014DAC.pdf
    • This PR implements the data type embedded with the additional predicate bit
      • Then for the interpreter/reference/emulator/simulator, it should be able to run the IR before and after --leverage-predicated-value
        • If the predicate exists in the data type (after applying the --leverage-predicated-value), we need to respect that, i.e., perform the computation and also set the predicate correctly/correspondingly
        • If the predicate doesn't exist in the data type (without applying the --leverage-predicated-value), we just ignore the predicate-related stuff (i.e., set it as true by default) @Yfeng-44
    • We need to support phi node in the next PR

TODO in next PR:

  • Separate data_mov and ctrl_mov
  • Remove bb but provide ctrl_mov with live-in analysis

@tancheng tancheng self-assigned this May 26, 2025
@tancheng tancheng added the new feature New feature or request label May 26, 2025
@tancheng tancheng linked an issue May 26, 2025 that may be closed by this pull request
@tancheng tancheng requested review from HobbitQia, Yfeng-44 and chz05 June 6, 2025 07:05
@tancheng tancheng changed the title Support ctrl-flow Provide predicated data type Jun 6, 2025
@tancheng tancheng merged commit f76d510 into main Jun 10, 2025
1 check passed
def Neura_MovOp : NeuraBaseMov<"mov"> {
let summary = "Base move operation";
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the difference in functionalities between MovOp and DataMovOp

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DataMov is for data delivery while I also provide CtrlMov.

I initially plan to have both inherited from same base Op, however, failed due to some cmake or tablegen issue. And later I found I need CtrlMov to represent the backward flow. So in the latest commit in this PR, I just give two separate MovOp.

ShangkunLi pushed a commit that referenced this pull request Mar 12, 2026
Provide predicated data type
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P1] Lower for loop

3 participants