Revision 8ac7a0c7
Added by Xavier Thirioux over 9 years ago
src/clocks.ml | ||
---|---|---|
354 | 354 |
| Carry_const id1, Carry_const id2 -> id1 = id2 |
355 | 355 |
| _ -> cr1.carrier_id = cr2.carrier_id |
356 | 356 |
|
357 |
let eq_clock ck1 ck2 = |
|
358 |
(repr ck1).cid = (repr ck2).cid |
|
359 |
|
|
357 | 360 |
(* Returns the clock root of a clock *) |
358 | 361 |
let rec root ck = |
359 |
match (repr ck).cdesc with |
|
362 |
let ck = repr ck in |
|
363 |
match ck.cdesc with |
|
360 | 364 |
| Ctuple (ck'::_) |
361 | 365 |
| Con (ck',_,_) | Clink ck' | Ccarrying (_,ck') -> root ck' |
362 | 366 |
| Pck_up _ | Pck_down _ | Pck_phase _ | Pck_const _ | Cvar _ | Cunivar _ -> ck |
... | ... | |
369 | 373 |
| Ccarrying (_, ck) -> branch ck acc |
370 | 374 |
| Con (ck, cr, l) -> branch ck ((cr, l) :: acc) |
371 | 375 |
| Ctuple (ck::_) -> branch ck acc |
376 |
| Ctuple _ |
|
372 | 377 |
| Carrow _ -> assert false |
373 | 378 |
| _ -> acc |
374 | 379 |
in branch ck [];; |
... | ... | |
382 | 387 |
|
383 | 388 |
(* Disjunction relation between variables based upon their static clocks. *) |
384 | 389 |
let disjoint ck1 ck2 = |
385 |
root ck1 = root ck2 && disjoint_branches (branch ck1) (branch ck2);;
|
|
390 |
eq_clock (root ck1) (root ck2) && disjoint_branches (branch ck1) (branch ck2)
|
|
386 | 391 |
|
387 | 392 |
(** [normalize pck] returns the normal form of clock [pck]. *) |
388 | 393 |
let normalize pck = |
Also available in: Unified diff
- missing case in clock disjunction predicate, the absence of which produced
weak (but still correct) optimization results.