-
Notifications
You must be signed in to change notification settings - Fork 15
[P1] Conditional branch successor block didn't depend on condition #41
Copy link
Copy link
Labels
bugSomething isn't workingSomething isn't working
Description
During ctrl -> data flow transformation, for cond_br cond, bb1, bb2, bb1 should depend on cond while bb2 should depend on NOT cond. Good example can be seen here:
dataflow/test/neura/ctrl/branch.mlir
Lines 64 to 75 in df70824
| // CTRL2DATA-NEXT: %9 = "neura.icmp"(%arg0, %0) <{cmpType = "eq"}> : (i64, !neura.data<i64, i1>) -> !neura.data<i1, i1> | |
| // CTRL2DATA-NEXT: %10 = "neura.grant_once"(%9) : (!neura.data<i1, i1>) -> !neura.data<i1, i1> | |
| // CTRL2DATA-NEXT: %11 = neura.grant_predicate %6, %10 : !neura.data<f32, i1>, !neura.data<i1, i1> -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: %12 = neura.grant_predicate %8, %10 : !neura.data<f32, i1>, !neura.data<i1, i1> -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: %13 = "neura.not"(%10) : (!neura.data<i1, i1>) -> !neura.data<i1, i1> | |
| // CTRL2DATA-NEXT: %14 = neura.grant_predicate %2, %13 : !neura.data<f32, i1>, !neura.data<i1, i1> -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: %15 = "neura.not"(%10) : (!neura.data<i1, i1>) -> !neura.data<i1, i1> | |
| // CTRL2DATA-NEXT: %16 = neura.grant_predicate %4, %15 : !neura.data<f32, i1>, !neura.data<i1, i1> -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: %17 = "neura.fadd"(%14, %16) : (!neura.data<f32, i1>, !neura.data<f32, i1>) -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: %18 = "neura.fmul"(%11, %12) : (!neura.data<f32, i1>, !neura.data<f32, i1>) -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: %19 = "neura.phi"(%17, %18) : (!neura.data<f32, i1>, !neura.data<f32, i1>) -> !neura.data<f32, i1> | |
| // CTRL2DATA-NEXT: "neura.return"(%19) : (!neura.data<f32, i1>) -> () |
However, when bb2 has no arguments, NOT cond is not generated as shown here:
| // CTRL2DATA-NEXT: %13 = "neura.fadd"(%2, %4) : (!neura.data<f32, i1>, !neura.data<f32, i1>) -> !neura.data<f32, i1> |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working