(self, args)
return claripy.Concat(*highparts)
Sign-extend double each lane, multiply each lane, and store only the high half of the result
Sign-extend double each lane, multiply each lane, and store only the high half of the result
Sign - extend double each lane multiply each lane and store only the high half of the result
def _op_generic_MulHi(self, args):
        """
        Sign-extend double each lane, multiply each lane, and store only the high half of the result
        """
        if self._vector_signed == 'S':
            lanes_0 = [lane.sign_extend(self._vector_size) for lane in args[0].chop(self._vector_size)]
            lanes_1 = [lane.sign_extend(self._vector_size) for lane in args[1].chop(self._vector_size)]
        else:
            lanes_0 = [lane.zero_extend(self._vector_size) for lane in args[0].chop(self._vector_size)]
            lanes_1 = [lane.zero_extend(self._vector_size) for lane in args[1].chop(self._vector_size)]
        mulres = [a*b for a, b in zip(lanes_0, lanes_1)]
        highparts = [x.chop(self._vector_size)[0] for x in mulres]
        return claripy.Concat(*highparts)
def _op_generic_MulHi ( self , args ) : if self . _vector_signed == 'S' : lanes_0 = [ lane . sign_extend ( self . _vector_size ) for lane in args [ 0 ] . chop ( self . _vector_size ) ] lanes_1 = [ lane . sign_extend ( self . _vector_size ) for lane in args [ 1 ] . chop ( self . _vector_size ) ] else : lanes_0 = [ lane . zero_extend ( self . _vector_size ) for lane in args [ 0 ] . chop ( self . _vector_size ) ] lanes_1 = [ lane . zero_extend ( self . _vector_size ) for lane in args [ 1 ] . chop ( self . _vector_size ) ] mulres = [ a * b for a , b in zip ( lanes_0 , lanes_1 ) ] highparts = [ x . chop ( self . _vector_size ) [ 0 ] for x in mulres ] return claripy . Concat ( * highparts )