summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaDup.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2016-05-11 11:07:34 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2016-05-11 11:07:34 -0700
commit6e8efec57d5ef07ca33a3cefc3c1e6c3f7c70856 (patch)
treea932d3800b3dcd220173982289f5bc0c01613a4c /src/aig/gia/giaDup.c
parentc89f987dc7aeea7efa4506503446fd22a1cfd7d3 (diff)
downloadabc-6e8efec57d5ef07ca33a3cefc3c1e6c3f7c70856.tar.gz
abc-6e8efec57d5ef07ca33a3cefc3c1e6c3f7c70856.tar.bz2
abc-6e8efec57d5ef07ca33a3cefc3c1e6c3f7c70856.zip
Experiments with CEC for arithmetic circuits.
Diffstat (limited to 'src/aig/gia/giaDup.c')
-rw-r--r--src/aig/gia/giaDup.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/aig/gia/giaDup.c b/src/aig/gia/giaDup.c
index a01c93fd..dbfe38f3 100644
--- a/src/aig/gia/giaDup.c
+++ b/src/aig/gia/giaDup.c
@@ -2995,7 +2995,12 @@ Gia_Man_t * Gia_ManDupAndCones( Gia_Man_t * p, int * pAnds, int nAnds, int fTrim
// Gia_ObjRiToRo(p, pObj)->Value = Gia_ManAppendCi( pNew );
// create internal nodes
Vec_PtrForEachEntry( Gia_Obj_t *, vNodes, pObj, i )
- pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
+ if ( Gia_ObjIsMux(p, pObj) )
+ pObj->Value = Gia_ManAppendMux( pNew, Gia_ObjFanin2Copy(p, pObj), Gia_ObjFanin1Copy(pObj), Gia_ObjFanin0Copy(pObj) );
+ else if ( Gia_ObjIsXor(pObj) )
+ pObj->Value = Gia_ManAppendXor( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
+ else
+ pObj->Value = Gia_ManAppendAnd( pNew, Gia_ObjFanin0Copy(pObj), Gia_ObjFanin1Copy(pObj) );
// create COs
Vec_PtrForEachEntry( Gia_Obj_t *, vRoots, pObj, i )
// Gia_ManAppendCo( pNew, Gia_ObjFanin0Copy(pObj) );