void *memset(void *optr, int ival, unsigned long size)
{
  unsigned long val = ival;
  void *ptr = optr;

  if (__builtin_expect (size == 0, 0))
    return;

  if (__builtin_expect (val != 0, 0))
    {
      val = val & 0xff;
      val |= val << 8;
      val |= val << 16;
      val |= val << 32;
    }

  if (__builtin_expect ((unsigned long)ptr & 1, 0))
    {
      *(char *)ptr = val;
      ptr += 1;
      size -= 1;
    }

  if (__builtin_expect ((unsigned long)ptr & 2, 0))
    {
      if (size < 2)
	goto tail_1;
      *(short *)ptr = val;
      ptr += 2;
      size -= 2;
    }

  if (__builtin_expect ((unsigned long)ptr & 4, 0))
    {
      if (size < 4)
	goto tail_3;
      *(int *)ptr = val;
      ptr += 4;
      size -= 4;
    }
  
  while (size >= 8)
    {
      *(long *)ptr = val;
      ptr += 8;
      size -= 8;
    }

  if (size >= 4)
    {
      *(int *)ptr = val;
      ptr += 4;
      size -= 4;
    }

 tail_3:
  if (size >= 2)
    {
      *(short *)ptr = val;
      ptr += 2;
      size -= 2;
    }

 tail_1:
  if (size > 0)
    {
      *(char *)ptr = val;
      ptr += 1;
      size -= 1;
    }

  return optr;
}
