diff options
Diffstat (limited to 'src/sop/mvc/mvcCompare.c')
-rw-r--r-- | src/sop/mvc/mvcCompare.c | 369 |
1 files changed, 0 insertions, 369 deletions
diff --git a/src/sop/mvc/mvcCompare.c b/src/sop/mvc/mvcCompare.c deleted file mode 100644 index c7999d40..00000000 --- a/src/sop/mvc/mvcCompare.c +++ /dev/null @@ -1,369 +0,0 @@ -/**CFile**************************************************************** - - FileName [mvcCompare.c] - - PackageName [MVSIS 2.0: Multi-valued logic synthesis system.] - - Synopsis [Various cube comparison functions.] - - Author [MVSIS Group] - - Affiliation [UC Berkeley] - - Date [Ver. 1.0. Started - February 1, 2003.] - - Revision [$Id: mvcCompare.c,v 1.5 2003/04/03 23:25:41 alanmi Exp $] - -***********************************************************************/ - -#include "mvc.h" - -//////////////////////////////////////////////////////////////////////// -/// DECLARATIONS /// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -/// FUNCTION DEFITIONS /// -//////////////////////////////////////////////////////////////////////// - -/**Function************************************************************* - - Synopsis [Compares two cubes according to their integer value.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Mvc_CubeCompareInt( Mvc_Cube_t * pC1, Mvc_Cube_t * pC2, Mvc_Cube_t * pMask ) -{ - if ( Mvc_Cube1Words(pC1) ) - { - if ( pC1->pData[0] < pC2->pData[0] ) - return -1; - if ( pC1->pData[0] > pC2->pData[0] ) - return 1; - return 0; - } - else if ( Mvc_Cube2Words(pC1) ) - { - if ( pC1->pData[1] < pC2->pData[1] ) - return -1; - if ( pC1->pData[1] > pC2->pData[1] ) - return 1; - if ( pC1->pData[0] < pC2->pData[0] ) - return -1; - if ( pC1->pData[0] > pC2->pData[0] ) - return 1; - return 0; - } - else - { - int i = Mvc_CubeReadLast(pC1); - for(; i >= 0; i--) - { - if ( pC1->pData[i] < pC2->pData[i] ) - return -1; - if ( pC1->pData[i] > pC2->pData[i] ) - return 1; - } - return 0; - } -} - - -/**Function************************************************************* - - Synopsis [Compares the cubes (1) by size, (2) by integer value.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Mvc_CubeCompareSizeAndInt( Mvc_Cube_t * pC1, Mvc_Cube_t * pC2, Mvc_Cube_t * pMask ) -{ - // compare the cubes by size - if ( Mvc_CubeReadSize( pC1 ) < Mvc_CubeReadSize( pC2 ) ) - return 1; - if ( Mvc_CubeReadSize( pC1 ) > Mvc_CubeReadSize( pC2 ) ) - return -1; - // the cubes have the same size - - // compare the cubes as integers - if ( Mvc_Cube1Words( pC1 ) ) - { - if ( pC1->pData[0] < pC2->pData[0] ) - return -1; - if ( pC1->pData[0] > pC2->pData[0] ) - return 1; - return 0; - } - else if ( Mvc_Cube2Words( pC1 ) ) - { - if ( pC1->pData[1] < pC2->pData[1] ) - return -1; - if ( pC1->pData[1] > pC2->pData[1] ) - return 1; - if ( pC1->pData[0] < pC2->pData[0] ) - return -1; - if ( pC1->pData[0] > pC2->pData[0] ) - return 1; - return 0; - } - else - { - int i = Mvc_CubeReadLast( pC1 ); - for(; i >= 0; i--) - { - if ( pC1->pData[i] < pC2->pData[i] ) - return -1; - if ( pC1->pData[i] > pC2->pData[i] ) - return 1; - } - return 0; - } -} - -/**Function************************************************************* - - Synopsis [Compares two cubes under the mask.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Mvc_CubeCompareIntUnderMask( Mvc_Cube_t * pC1, Mvc_Cube_t * pC2, Mvc_Cube_t * pMask ) -{ - unsigned uBits1, uBits2; - - // compare the cubes under the mask - if ( Mvc_Cube1Words(pC1) ) - { - uBits1 = pC1->pData[0] & pMask->pData[0]; - uBits2 = pC2->pData[0] & pMask->pData[0]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - // cubes are equal - return 0; - } - else if ( Mvc_Cube2Words(pC1) ) - { - uBits1 = pC1->pData[1] & pMask->pData[1]; - uBits2 = pC2->pData[1] & pMask->pData[1]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - uBits1 = pC1->pData[0] & pMask->pData[0]; - uBits2 = pC2->pData[0] & pMask->pData[0]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - return 0; - } - else - { - int i = Mvc_CubeReadLast(pC1); - for(; i >= 0; i--) - { - uBits1 = pC1->pData[i] & pMask->pData[i]; - uBits2 = pC2->pData[i] & pMask->pData[i]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - } - return 0; - } -} - -/**Function************************************************************* - - Synopsis [Compares two cubes under the mask.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Mvc_CubeCompareIntOutsideMask( Mvc_Cube_t * pC1, Mvc_Cube_t * pC2, Mvc_Cube_t * pMask ) -{ - unsigned uBits1, uBits2; - - // compare the cubes under the mask - if ( Mvc_Cube1Words(pC1) ) - { - uBits1 = pC1->pData[0] | pMask->pData[0]; - uBits2 = pC2->pData[0] | pMask->pData[0]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - // cubes are equal - return 0; - } - else if ( Mvc_Cube2Words(pC1) ) - { - uBits1 = pC1->pData[1] | pMask->pData[1]; - uBits2 = pC2->pData[1] | pMask->pData[1]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - uBits1 = pC1->pData[0] | pMask->pData[0]; - uBits2 = pC2->pData[0] | pMask->pData[0]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - return 0; - } - else - { - int i = Mvc_CubeReadLast(pC1); - for(; i >= 0; i--) - { - uBits1 = pC1->pData[i] | pMask->pData[i]; - uBits2 = pC2->pData[i] | pMask->pData[i]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - } - return 0; - } -} - - -/**Function************************************************************* - - Synopsis [Compares the cubes (1) outside the mask, (2) under the mask.] - - Description [] - - SideEffects [] - - SeeAlso [] - -***********************************************************************/ -int Mvc_CubeCompareIntOutsideAndUnderMask( Mvc_Cube_t * pC1, Mvc_Cube_t * pC2, Mvc_Cube_t * pMask ) -{ - unsigned uBits1, uBits2; - - if ( Mvc_Cube1Words(pC1) ) - { - // compare the cubes outside the mask - uBits1 = pC1->pData[0] & ~(pMask->pData[0]); - uBits2 = pC2->pData[0] & ~(pMask->pData[0]); - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - - // compare the cubes under the mask - uBits1 = pC1->pData[0] & pMask->pData[0]; - uBits2 = pC2->pData[0] & pMask->pData[0]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - // cubes are equal - // should never happen - assert( 0 ); - return 0; - } - else if ( Mvc_Cube2Words(pC1) ) - { - // compare the cubes outside the mask - uBits1 = pC1->pData[1] & ~(pMask->pData[1]); - uBits2 = pC2->pData[1] & ~(pMask->pData[1]); - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - - uBits1 = pC1->pData[0] & ~(pMask->pData[0]); - uBits2 = pC2->pData[0] & ~(pMask->pData[0]); - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - - // compare the cubes under the mask - uBits1 = pC1->pData[1] & pMask->pData[1]; - uBits2 = pC2->pData[1] & pMask->pData[1]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - - uBits1 = pC1->pData[0] & pMask->pData[0]; - uBits2 = pC2->pData[0] & pMask->pData[0]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - - // cubes are equal - // should never happen - assert( 0 ); - return 0; - } - else - { - int i; - - // compare the cubes outside the mask - for( i = Mvc_CubeReadLast(pC1); i >= 0; i-- ) - { - uBits1 = pC1->pData[i] & ~(pMask->pData[i]); - uBits2 = pC2->pData[i] & ~(pMask->pData[i]); - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - } - // compare the cubes under the mask - for( i = Mvc_CubeReadLast(pC1); i >= 0; i-- ) - { - uBits1 = pC1->pData[i] & pMask->pData[i]; - uBits2 = pC2->pData[i] & pMask->pData[i]; - if ( uBits1 < uBits2 ) - return -1; - if ( uBits1 > uBits2 ) - return 1; - } -/* - { - Mvc_Cover_t * pCover; - pCover = Mvc_CoverAlloc( NULL, 96 ); - Mvc_CubePrint( pCover, pC1 ); - Mvc_CubePrint( pCover, pC2 ); - Mvc_CubePrint( pCover, pMask ); - } -*/ - // cubes are equal - // should never happen - assert( 0 ); - return 0; - } -} - -//////////////////////////////////////////////////////////////////////// -/// END OF FILE /// -//////////////////////////////////////////////////////////////////////// - - |