| 544 | } |
| 545 | |
| 546 | int Memory::isInitialMemBlock(const expr &e, bool match_any_init) { |
| 547 | string_view name; |
| 548 | expr load, blk, idx; |
| 549 | unsigned hi, lo; |
| 550 | if (e.isExtract(load, hi, lo) && load.isLoad(blk, idx)) |
| 551 | name = blk.fn_name(); |
| 552 | else |
| 553 | name = e.fn_name(); |
| 554 | |
| 555 | if (name.starts_with("init_mem_")) |
| 556 | return 1; |
| 557 | |
| 558 | return match_any_init && name.starts_with("blk_val!") ? 2 : 0; |
| 559 | } |
| 560 | |
| 561 | bool Memory::isInitialMemoryOrLoad(const expr &e, bool match_any_init) { |
| 562 | expr arr, idx; |