/*[ movsx.c LOCAL CHAR SccsID[]="@(#)movsx.c 1.5 02/09/94"; MOVSX CPU Functions. -------------------- ]*/ #include #include #include #include #include #include #include #include #include #include #include #include /* ===================================================================== EXTERNAL ROUTINES START HERE ===================================================================== */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* Generic - one size fits all 'movsx'. */ /* NB. This function sign extends to 32-bits. */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ GLOBAL VOID MOVSX IFN3( IU32 *, pop1, /* pntr to dst/lsrc operand */ IU32, op2, /* rsrc operand */ IUM8, op_sz /* 8 or 16-bit (original rsrc operand size) */ ) { if ( SZ2MSB(op_sz) & op2 ) /* sign bit set? */ { /* or in sign extension */ op2 = op2 | ~SZ2MASK(op_sz); } *pop1 = op2; }