Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Nedeľa, 25. október 2026

Rozdiely pre libplaton/platon/str/strmmx.c medzi verziami 1.3 a 1.4

verzia 1.3, 2002/07/14 15:24:44 verzia 1.4, 2002/07/15 18:31:26
Riadok 8 
Riadok 8 
   
 char *strcpymmx(void *dest, const void *src)  char *strcpymmx(void *dest, const void *src)
 {  {
     return (char *) memcpymmx(dest, src, strlen(src));      int len = strlen(src);
       char *ret = memcpymmx(dest, src, len);
       ret[len] = '\0';
       return ret;
 }  }
 char *strncpymmx(void *dest, const void *src, size_t n)  char *strncpymmx(void *dest, const void *src, size_t n)
 {  {
     return (char *) memcpymmx(dest, src, n);      char *ret = memcpymmx(dest, src, n);
       ret[n] = '\0';
       return ret;
 }  }
   <<<<<<< strmmx.c
   
   int align(const int n)
   =======
   
 static int align(const int n)  static int align(const int n)
   >>>>>>> 1.3
 {  {
     return ((n >> 3) + (n % 8 != 0)) << 3;      return ((n >> 3) + (n % 8 != 0)) << 3;
 }  }
Riadok 24  void *memcpymmx(void *dest, const void *
Riadok 34  void *memcpymmx(void *dest, const void *
 {  {
     if ((n % 8) != 0)      if ((n % 8) != 0)
         n = align(n);          n = align(n);
     n /= 8;      n = n >> 3;
     __asm__ __volatile__("1:\n\t"      __asm__ __volatile__("1:\n\t"
                          "movq (%%eax),%%mm0\n\t"                           "movq (%%eax),%%mm0\n\t"
                          "movq %%mm0,(%%ebx)\n\t"                           "movq %%mm0,(%%ebx)\n\t"
Riadok 38  void *memcpymmx(void *dest, const void *
Riadok 48  void *memcpymmx(void *dest, const void *
 void *memsetmmx(void *s, int c, size_t n)  void *memsetmmx(void *s, int c, size_t n)
 {  {
     char set[8];      char set[8];
     int i;      set[0] = set[1] = set[2] = set[3] = set[4] = set[5] = set[6] = set[7] = c;
     for (i = 0; i <= 7; i++)  
         set[i] = c;  
     if ((n % 8) != 0)      if ((n % 8) != 0)
         n = align(n);          n = align(n);
     n /= 8;      n = n >> 3;
     __asm__ __volatile__("movq (%%ebx),%%mm0\n\t"      __asm__ __volatile__("movq (%%ebx),%%mm0\n\t"
                          "1:\n\t"                           "1:\n\t"
                          "movq %%mm0,(%%eax)\n\t"                           "movq %%mm0,(%%eax)\n\t"
Riadok 58  int memcmpmmx(const void *s1, const void
Riadok 66  int memcmpmmx(const void *s1, const void
 {  {
     if ((n % 8) != 0)      if ((n % 8) != 0)
         n = align(n);          n = align(n);
     n /= 8;      n = n >> 3;
     __asm__ __volatile__("1:\n\t"      __asm__ __volatile__("1:\n\t"
                          "movq (%%eax),%%mm0\n\t"                           "movq (%%eax),%%mm0\n\t"
                          "movq (%%ebx),%%mm1\n\t"                           "movq (%%ebx),%%mm1\n\t"
Riadok 92  int main(int argc, char *argv[])
Riadok 100  int main(int argc, char *argv[])
     bsize = atoi(argv[1]);      bsize = atoi(argv[1]);
     pole1 = (char *) malloc(bsize);      pole1 = (char *) malloc(bsize);
     pole2 = (char *) malloc(bsize);      pole2 = (char *) malloc(bsize);
     n = atoi(argv[2]) / atoi(bzize);      n = atoi(argv[2]) / bsize;
     memsetmmx(pole1, 'A', bsize);      memsetmmx(pole1, 'A', bsize);
     for (i = 0; i <= n; i++)      for (i = 0; i <= n; i++)
         memcpymmx(pole2, pole1, bsize);          memcpymmx(pole2, pole1, bsize);

Legend:
Odstranené z verzie1.3  
zmenené riadky
  Pridané vo verzii1.4

Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok