Skip to content

Distinguish PHI_START and PHI_CONST #267

@Jackcuii

Description

@Jackcuii

Hi Sir Tan @tancheng ~ I fully manually verified the whole compiled gemv kernel and figure out the problem of PHI_START and PHI_CONST mentioned before.

First we define the two clearly.

PHI_START: in first run, it chooses src0 and does not consume src1. In others, it consumes both and chooses according to the predicates. predicates can be both F (output value is arbitary) or one T one F (normal). Both T is not allowed.

PHI_CONST: in first run, it chooses src0 and does not consume src1. In others, it consumes both and always choose src1.

  1. It seems by now all the generated PHI_X are PHI_START in literal.
  2. Some of the PHI_X can be PHI_CONST (eg. the leftmost node on the graph below), but according to my observation, these positions could also be PHI_START, since src0's predicates are always guaranteed by GRANT_ONCE. I am quite not sure about that,but I did not think of a counter example.

FYI, I paste a verified fully-annotated DFG of gemv here. It shows all the nodes' function in this kernel. They are manually verifed.

Image

Thanks @ShangkunLi for sync with me~

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions