diff options
| author | azidar | 2015-04-24 12:31:12 -0700 |
|---|---|---|
| committer | azidar | 2015-04-24 12:31:12 -0700 |
| commit | 1652c3cf8329246fa372513fb0d2bdf53ddd227f (patch) | |
| tree | ec7bb9d5e76dee406232a11df1bd1f2eebae11b5 /test | |
| parent | 6add45d9bb45a179cb7b81f0b4fc3e201019f9cc (diff) | |
Fixed performance bug in expand-when where equality between the consequence and alternate were always assumed different, causing a huge blow-up in logic
Diffstat (limited to 'test')
| -rw-r--r-- | test/passes/jacktest/MemorySearch.fir | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/passes/jacktest/MemorySearch.fir b/test/passes/jacktest/MemorySearch.fir new file mode 100644 index 00000000..955d44f2 --- /dev/null +++ b/test/passes/jacktest/MemorySearch.fir @@ -0,0 +1,46 @@ +; RUN: firrtl -i %s -o %s.flo -x X -p cd | tee %s.out | FileCheck %s +; CHECK: Done! + +circuit MemorySearch : + module MemorySearch : + input target : UInt(4) + output address : UInt(3) + input en : UInt(1) + output done : UInt(1) + + node T_35 = UInt(0, 3) + reg index : UInt(3) + index.init := T_35 + node T_36 = UInt(0, 1) + node T_37 = UInt(4, 3) + node T_38 = UInt(15, 4) + node T_39 = UInt(14, 4) + node T_40 = UInt(2, 2) + node T_41 = UInt(5, 3) + node T_42 = UInt(13, 4) + wire elts : UInt(1)[7] + elts.0 := Pad(T_36,?) + elts.1 := Pad(T_37,?) + elts.2 := Pad(T_38,?) + elts.3 := Pad(T_39,?) + elts.4 := Pad(T_40,?) + elts.5 := Pad(T_41,?) + elts.6 := Pad(T_42,?) + accessor elt = elts[index] + node T_43 = bit-not(en) + node T_44 = eq(Pad(elt,?), Pad(target,?)) + node T_45 = UInt(7, 3) + node T_46 = eq(Pad(index,?), Pad(T_45,?)) + node T_47 = bit-or(T_44, T_46) + node end = bit-and(T_43, T_47) + when en : + node T_48 = UInt(0, 1) + index := Pad(T_48,?) + else : + node T_49 = bit-not(end) + when T_49 : + node T_50 = UInt(1, 1) + node T_51 = add-wrap(Pad(index,?), Pad(T_50,?)) + index := Pad(T_51,?) + done := Pad(end,?) + address := Pad(index,?) |
