(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
memcmp-1.c
       1  /* Test memcmp/strncmp builtin expansion for compilation and proper execution.  */
       2  /* { dg-do run } */
       3  /* { dg-options "-O2" } */
       4  /* { dg-require-effective-target ptr32plus } */
       5  /* { dg-timeout-factor 2 } */
       6  
       7  #include <stdio.h>
       8  #include <stdlib.h>
       9  #include <string.h>
      10  #include <stdint.h>
      11  
      12  #define STR1(X) #X
      13  #define STR2(X) STR1(X)
      14  
      15  int lib_memcmp(const void *a, const void *b, size_t n)
      16   asm(STR2(__USER_LABEL_PREFIX__) "memcmp");
      17  int lib_strncmp(const char *a, const char *b, size_t n)
      18   asm(STR2(__USER_LABEL_PREFIX__) "strncmp");
      19  
      20  #ifndef NRAND
      21  #ifdef TEST_ALL
      22  #define NRAND 10000
      23  #else
      24  #define NRAND 500
      25  #endif
      26  #endif
      27  #ifndef TZONE
      28  #ifdef TEST_ALL
      29  #define TZONE 16
      30  #else
      31  #define TZONE 8
      32  #endif
      33  #endif
      34  
      35  #define MAX_SZ 600
      36  
      37  #define DEF_RS(ALIGN)                                                      \
      38  static void test_memcmp_runtime_size_ ## ALIGN (const char *str1, 	   \
      39  						const char *str2,	   \
      40  						size_t sz, int expect)	   \
      41  {									   \
      42    char three[8192] __attribute__ ((aligned (4096)));			   \
      43    char four[8192] __attribute__ ((aligned (4096)));			   \
      44    char *a, *b;								   \
      45    int i,j,a1,a2,r;							   \
      46    for (j = 0; j < 2; j++)						   \
      47      {									   \
      48        for (i = 0; i < 2; i++)						   \
      49  	{								   \
      50  	  a = three+i*ALIGN+j*(4096-2*i*ALIGN);				   \
      51  	  b = four+i*ALIGN+j*(4096-2*i*ALIGN);				   \
      52  	  memcpy(a,str1,sz);						   \
      53  	  memcpy(b,str2,sz);						   \
      54  	  r = memcmp(a,b,sz);						   \
      55  	  if ( r < 0 && !(expect < 0) ) abort();			   \
      56  	  if ( r > 0 && !(expect > 0) )	abort();			   \
      57  	  if ( r == 0 && !(expect == 0) ) abort();			   \
      58  	}								   \
      59      }									   \
      60  }
      61  
      62  DEF_RS(1)
      63  DEF_RS(2)
      64  DEF_RS(4)
      65  DEF_RS(8)
      66  DEF_RS(16)
      67  
      68  static void test_memcmp_runtime_size (const char *str1, const char *str2,
      69  				      size_t sz, int expect)
      70  {
      71    char three[8192] __attribute__ ((aligned (4096)));
      72    char four[8192] __attribute__ ((aligned (4096)));
      73    char *a, *b;
      74    int i,j,a1,a2,r;
      75    test_memcmp_runtime_size_1 (str1,str2,sz,expect);
      76    test_memcmp_runtime_size_2 (str1,str2,sz,expect);
      77    test_memcmp_runtime_size_4 (str1,str2,sz,expect);
      78    test_memcmp_runtime_size_8 (str1,str2,sz,expect);
      79    test_memcmp_runtime_size_16 (str1,str2,sz,expect);
      80    for (j = 0; j < 2; j++)
      81      {
      82        for (i = 0; i < 2; i++)
      83  	{
      84  	  for (a1=0; a1 < 2*sizeof(void *); a1++)
      85  	    {
      86  	      a = three+i*a1+j*(4096-2*i*a1);
      87  	      memcpy(a,str1,sz);
      88  	      for (a2=0; a2 < 2*sizeof(void *); a2++)
      89  		{
      90  		  b = four+i*a2+j*(4096-2*i*a2);
      91  		  memcpy(b,str2,sz);
      92  		  r = memcmp(a,b,sz);
      93  		  if ( r < 0 && !(expect < 0) ) abort();
      94  		  if ( r > 0 && !(expect > 0) )	abort();
      95  		  if ( r == 0 && !(expect == 0) ) abort();
      96  		}
      97  	    }
      98  	}
      99      }
     100  }
     101  
     102  static void test_driver_memcmp (void (test_memcmp)(const char *, const char *, int),
     103  				void (test_strncmp)(const char *, const char *, int),
     104    size_t sz, int align)
     105  {
     106    char buf1[MAX_SZ*2+TZONE],buf2[MAX_SZ*2+TZONE];
     107    size_t test_sz = (sz<MAX_SZ)?sz:MAX_SZ;
     108    size_t diff_pos, zero_pos;
     109    uint32_t e;
     110    int i,j,l;
     111    for(l=0;l<sz;l++) {
     112      for(i=0;i<NRAND/sz;i++) {
     113        for(j=0;j<l;j++) {
     114  	buf1[j] = rand() & 0xff;
     115  	buf2[j] = buf1[j];
     116        }
     117        for(j=l;j<sz;j++) {
     118  	buf1[j] = rand() & 0xff;
     119  	buf2[j] = rand() & 0xff;
     120        }
     121        e = lib_memcmp(buf1,buf2,sz);
     122        (*test_memcmp)(buf1,buf2,e);
     123        test_memcmp_runtime_size (buf1, buf2, sz, e);
     124        e = lib_strncmp(buf1,buf2,sz);
     125        (*test_strncmp)(buf1,buf2,e);
     126      }
     127    }
     128    for(diff_pos = ((test_sz>TZONE)?(test_sz-TZONE):0); diff_pos < test_sz+TZONE; diff_pos++)
     129      for(zero_pos = ((test_sz>TZONE)?(test_sz-TZONE):0); zero_pos < test_sz+TZONE; zero_pos++)
     130        {
     131  	memset(buf1, 'A', 2*test_sz);
     132  	memset(buf2, 'A', 2*test_sz);
     133  	buf2[diff_pos] = 'B';
     134  	buf1[zero_pos] = 0;
     135  	buf2[zero_pos] = 0;
     136  	e = lib_memcmp(buf1,buf2,sz);
     137  	(*test_memcmp)(buf1,buf2,e);
     138  	(*test_memcmp)(buf2,buf1,-e);
     139  	(*test_memcmp)(buf2,buf2,0);
     140  	test_memcmp_runtime_size (buf1, buf2, sz, e);
     141  	test_memcmp_runtime_size (buf2, buf1, sz, -e);
     142  	e = lib_strncmp(buf1,buf2,sz);
     143  	(*test_strncmp)(buf1,buf2,e);
     144  	(*test_strncmp)(buf2,buf1,-e);
     145  	(*test_strncmp)(buf2,buf2,0);
     146  	/* differing length: */
     147  	buf2[diff_pos] = 0;
     148  	e = lib_memcmp(buf1,buf2,sz);
     149  	(*test_memcmp)(buf1,buf2,e);
     150  	test_memcmp_runtime_size (buf1, buf2, sz, e);
     151  	e = lib_strncmp(buf1,buf2,sz);
     152  	(*test_strncmp)(buf1,buf2,e);
     153  	memset(buf2+diff_pos,'B',sizeof(buf2)-diff_pos);
     154  	buf2[zero_pos] = 0;
     155  	e = lib_memcmp(buf1,buf2,sz);
     156  	(*test_memcmp)(buf1,buf2,e);
     157  	(*test_memcmp)(buf2,buf1,-e);
     158  	test_memcmp_runtime_size (buf1, buf2, sz, e);
     159  	test_memcmp_runtime_size (buf2, buf1, sz, -e);
     160  	e = lib_strncmp(buf1,buf2,sz);
     161  	(*test_strncmp)(buf1,buf2,e);
     162  	(*test_strncmp)(buf2,buf1,-e);
     163        }
     164  }
     165  
     166  #define RUN_TEST(SZ, ALIGN) test_driver_memcmp (test_memcmp_ ## SZ ## _ ## ALIGN, test_strncmp_ ## SZ ## _ ## ALIGN, SZ, ALIGN);
     167  
     168  #define DEF_TEST(SZ, ALIGN)						\
     169    static void test_memcmp_ ## SZ ## _ ## ALIGN (const char *str1, const char *str2, int expect)	\
     170  {									\
     171    char three[8192] __attribute__ ((aligned (4096)));			\
     172    char four[8192] __attribute__ ((aligned (4096)));			\
     173    char *a, *b;								\
     174    int i,j,r;								\
     175    for (j = 0; j < 2; j++)						\
     176      {									\
     177        for (i = 0; i < 2; i++)						\
     178  	{								\
     179  	  a = three+i*ALIGN+j*(4096-2*i*ALIGN);				\
     180  	  b = four+i*ALIGN+j*(4096-2*i*ALIGN);				\
     181  	  memcpy(a,str1,SZ);						\
     182  	  memcpy(b,str2,SZ);						\
     183  	  r = memcmp(a,b,SZ);						\
     184  	  if ( r < 0 && !(expect < 0) ) abort();			\
     185  	  if ( r > 0 && !(expect > 0) )	abort();			\
     186  	  if ( r == 0 && !(expect == 0) ) abort();			\
     187  	}								\
     188      }									\
     189  }									\
     190  static void test_strncmp_ ## SZ ## _ ## ALIGN (const char *str1, const char *str2, int expect)	 \
     191  {									\
     192    char three[8192] __attribute__ ((aligned (4096)));			\
     193    char four[8192] __attribute__ ((aligned (4096)));			\
     194    char *a, *b;								\
     195    int i,j,r;								\
     196    for (j = 0; j < 2; j++)						\
     197      {									\
     198        for (i = 0; i < 2; i++)						\
     199  	{								\
     200  	  a = three+i*ALIGN+j*(4096-2*i*ALIGN);				\
     201  	  b = four+i*ALIGN+j*(4096-2*i*ALIGN);				\
     202  	  memcpy(a,str1,SZ);						\
     203  	  memcpy(b,str2,SZ);						\
     204  	  r = strncmp(a,b,SZ);						\
     205  	  if ( r < 0 && !(expect < 0) ) abort();			\
     206  	  if ( r > 0 && !(expect > 0) )	abort();			\
     207  	  if ( r == 0 && !(expect == 0) ) abort();			\
     208  	}								\
     209      }									\
     210  }
     211  
     212  #ifdef TEST_ALL
     213  DEF_TEST(1,1)
     214  DEF_TEST(1,2)
     215  DEF_TEST(1,4)
     216  DEF_TEST(1,8)
     217  DEF_TEST(1,16)
     218  DEF_TEST(2,1)
     219  DEF_TEST(2,2)
     220  DEF_TEST(2,4)
     221  DEF_TEST(2,8)
     222  DEF_TEST(2,16)
     223  DEF_TEST(3,1)
     224  DEF_TEST(3,2)
     225  DEF_TEST(3,4)
     226  DEF_TEST(3,8)
     227  DEF_TEST(3,16)
     228  DEF_TEST(4,1)
     229  DEF_TEST(4,2)
     230  DEF_TEST(4,4)
     231  DEF_TEST(4,8)
     232  DEF_TEST(4,16)
     233  DEF_TEST(5,1)
     234  DEF_TEST(5,2)
     235  DEF_TEST(5,4)
     236  DEF_TEST(5,8)
     237  DEF_TEST(5,16)
     238  DEF_TEST(6,1)
     239  DEF_TEST(6,2)
     240  DEF_TEST(6,4)
     241  DEF_TEST(6,8)
     242  DEF_TEST(6,16)
     243  DEF_TEST(7,1)
     244  DEF_TEST(7,2)
     245  DEF_TEST(7,4)
     246  DEF_TEST(7,8)
     247  DEF_TEST(7,16)
     248  DEF_TEST(8,1)
     249  DEF_TEST(8,2)
     250  DEF_TEST(8,4)
     251  DEF_TEST(8,8)
     252  DEF_TEST(8,16)
     253  DEF_TEST(9,1)
     254  DEF_TEST(9,2)
     255  DEF_TEST(9,4)
     256  DEF_TEST(9,8)
     257  DEF_TEST(9,16)
     258  DEF_TEST(10,1)
     259  DEF_TEST(10,2)
     260  DEF_TEST(10,4)
     261  DEF_TEST(10,8)
     262  DEF_TEST(10,16)
     263  DEF_TEST(11,1)
     264  DEF_TEST(11,2)
     265  DEF_TEST(11,4)
     266  DEF_TEST(11,8)
     267  DEF_TEST(11,16)
     268  DEF_TEST(12,1)
     269  DEF_TEST(12,2)
     270  DEF_TEST(12,4)
     271  DEF_TEST(12,8)
     272  DEF_TEST(12,16)
     273  DEF_TEST(13,1)
     274  DEF_TEST(13,2)
     275  DEF_TEST(13,4)
     276  DEF_TEST(13,8)
     277  DEF_TEST(13,16)
     278  DEF_TEST(14,1)
     279  DEF_TEST(14,2)
     280  DEF_TEST(14,4)
     281  DEF_TEST(14,8)
     282  DEF_TEST(14,16)
     283  DEF_TEST(15,1)
     284  DEF_TEST(15,2)
     285  DEF_TEST(15,4)
     286  DEF_TEST(15,8)
     287  DEF_TEST(15,16)
     288  DEF_TEST(16,1)
     289  DEF_TEST(16,2)
     290  DEF_TEST(16,4)
     291  DEF_TEST(16,8)
     292  DEF_TEST(16,16)
     293  DEF_TEST(17,1)
     294  DEF_TEST(17,2)
     295  DEF_TEST(17,4)
     296  DEF_TEST(17,8)
     297  DEF_TEST(17,16)
     298  DEF_TEST(18,1)
     299  DEF_TEST(18,2)
     300  DEF_TEST(18,4)
     301  DEF_TEST(18,8)
     302  DEF_TEST(18,16)
     303  DEF_TEST(19,1)
     304  DEF_TEST(19,2)
     305  DEF_TEST(19,4)
     306  DEF_TEST(19,8)
     307  DEF_TEST(19,16)
     308  DEF_TEST(20,1)
     309  DEF_TEST(20,2)
     310  DEF_TEST(20,4)
     311  DEF_TEST(20,8)
     312  DEF_TEST(20,16)
     313  DEF_TEST(21,1)
     314  DEF_TEST(21,2)
     315  DEF_TEST(21,4)
     316  DEF_TEST(21,8)
     317  DEF_TEST(21,16)
     318  DEF_TEST(22,1)
     319  DEF_TEST(22,2)
     320  DEF_TEST(22,4)
     321  DEF_TEST(22,8)
     322  DEF_TEST(22,16)
     323  DEF_TEST(23,1)
     324  DEF_TEST(23,2)
     325  DEF_TEST(23,4)
     326  DEF_TEST(23,8)
     327  DEF_TEST(23,16)
     328  DEF_TEST(24,1)
     329  DEF_TEST(24,2)
     330  DEF_TEST(24,4)
     331  DEF_TEST(24,8)
     332  DEF_TEST(24,16)
     333  DEF_TEST(25,1)
     334  DEF_TEST(25,2)
     335  DEF_TEST(25,4)
     336  DEF_TEST(25,8)
     337  DEF_TEST(25,16)
     338  DEF_TEST(26,1)
     339  DEF_TEST(26,2)
     340  DEF_TEST(26,4)
     341  DEF_TEST(26,8)
     342  DEF_TEST(26,16)
     343  DEF_TEST(27,1)
     344  DEF_TEST(27,2)
     345  DEF_TEST(27,4)
     346  DEF_TEST(27,8)
     347  DEF_TEST(27,16)
     348  DEF_TEST(28,1)
     349  DEF_TEST(28,2)
     350  DEF_TEST(28,4)
     351  DEF_TEST(28,8)
     352  DEF_TEST(28,16)
     353  DEF_TEST(29,1)
     354  DEF_TEST(29,2)
     355  DEF_TEST(29,4)
     356  DEF_TEST(29,8)
     357  DEF_TEST(29,16)
     358  DEF_TEST(30,1)
     359  DEF_TEST(30,2)
     360  DEF_TEST(30,4)
     361  DEF_TEST(30,8)
     362  DEF_TEST(30,16)
     363  DEF_TEST(31,1)
     364  DEF_TEST(31,2)
     365  DEF_TEST(31,4)
     366  DEF_TEST(31,8)
     367  DEF_TEST(31,16)
     368  DEF_TEST(32,1)
     369  DEF_TEST(32,2)
     370  DEF_TEST(32,4)
     371  DEF_TEST(32,8)
     372  DEF_TEST(32,16)
     373  DEF_TEST(33,1)
     374  DEF_TEST(33,2)
     375  DEF_TEST(33,4)
     376  DEF_TEST(33,8)
     377  DEF_TEST(33,16)
     378  DEF_TEST(34,1)
     379  DEF_TEST(34,2)
     380  DEF_TEST(34,4)
     381  DEF_TEST(34,8)
     382  DEF_TEST(34,16)
     383  DEF_TEST(35,1)
     384  DEF_TEST(35,2)
     385  DEF_TEST(35,4)
     386  DEF_TEST(35,8)
     387  DEF_TEST(35,16)
     388  DEF_TEST(36,1)
     389  DEF_TEST(36,2)
     390  DEF_TEST(36,4)
     391  DEF_TEST(36,8)
     392  DEF_TEST(36,16)
     393  DEF_TEST(37,1)
     394  DEF_TEST(37,2)
     395  DEF_TEST(37,4)
     396  DEF_TEST(37,8)
     397  DEF_TEST(37,16)
     398  DEF_TEST(38,1)
     399  DEF_TEST(38,2)
     400  DEF_TEST(38,4)
     401  DEF_TEST(38,8)
     402  DEF_TEST(38,16)
     403  DEF_TEST(39,1)
     404  DEF_TEST(39,2)
     405  DEF_TEST(39,4)
     406  DEF_TEST(39,8)
     407  DEF_TEST(39,16)
     408  DEF_TEST(40,1)
     409  DEF_TEST(40,2)
     410  DEF_TEST(40,4)
     411  DEF_TEST(40,8)
     412  DEF_TEST(40,16)
     413  DEF_TEST(41,1)
     414  DEF_TEST(41,2)
     415  DEF_TEST(41,4)
     416  DEF_TEST(41,8)
     417  DEF_TEST(41,16)
     418  DEF_TEST(42,1)
     419  DEF_TEST(42,2)
     420  DEF_TEST(42,4)
     421  DEF_TEST(42,8)
     422  DEF_TEST(42,16)
     423  DEF_TEST(43,1)
     424  DEF_TEST(43,2)
     425  DEF_TEST(43,4)
     426  DEF_TEST(43,8)
     427  DEF_TEST(43,16)
     428  DEF_TEST(44,1)
     429  DEF_TEST(44,2)
     430  DEF_TEST(44,4)
     431  DEF_TEST(44,8)
     432  DEF_TEST(44,16)
     433  DEF_TEST(45,1)
     434  DEF_TEST(45,2)
     435  DEF_TEST(45,4)
     436  DEF_TEST(45,8)
     437  DEF_TEST(45,16)
     438  DEF_TEST(46,1)
     439  DEF_TEST(46,2)
     440  DEF_TEST(46,4)
     441  DEF_TEST(46,8)
     442  DEF_TEST(46,16)
     443  DEF_TEST(47,1)
     444  DEF_TEST(47,2)
     445  DEF_TEST(47,4)
     446  DEF_TEST(47,8)
     447  DEF_TEST(47,16)
     448  DEF_TEST(48,1)
     449  DEF_TEST(48,2)
     450  DEF_TEST(48,4)
     451  DEF_TEST(48,8)
     452  DEF_TEST(48,16)
     453  DEF_TEST(49,1)
     454  DEF_TEST(49,2)
     455  DEF_TEST(49,4)
     456  DEF_TEST(49,8)
     457  DEF_TEST(49,16)
     458  DEF_TEST(100,1)
     459  DEF_TEST(100,2)
     460  DEF_TEST(100,4)
     461  DEF_TEST(100,8)
     462  DEF_TEST(100,16)
     463  DEF_TEST(191,1)
     464  DEF_TEST(192,1)
     465  DEF_TEST(193,1)
     466  DEF_TEST(200,1)
     467  DEF_TEST(400,1)
     468  #else
     469  DEF_TEST(1,1)
     470  DEF_TEST(2,1)
     471  DEF_TEST(3,1)
     472  DEF_TEST(4,1)
     473  DEF_TEST(5,1)
     474  DEF_TEST(5,8)
     475  DEF_TEST(6,1)
     476  DEF_TEST(6,4)
     477  DEF_TEST(6,8)
     478  DEF_TEST(7,1)
     479  DEF_TEST(7,2)
     480  DEF_TEST(7,4)
     481  DEF_TEST(7,8)
     482  DEF_TEST(8,1)
     483  DEF_TEST(9,1)
     484  DEF_TEST(16,1)
     485  DEF_TEST(32,1)
     486  DEF_TEST(33,8)
     487  DEF_TEST(49,1)
     488  #endif
     489  
     490  int
     491  main(int argc, char **argv)
     492  {
     493  #ifdef TEST_ALL
     494      RUN_TEST(1,1)
     495      RUN_TEST(1,2)
     496      RUN_TEST(1,4)
     497      RUN_TEST(1,8)
     498      RUN_TEST(1,16)
     499      RUN_TEST(2,1)
     500      RUN_TEST(2,2)
     501      RUN_TEST(2,4)
     502      RUN_TEST(2,8)
     503      RUN_TEST(2,16)
     504      RUN_TEST(3,1)
     505      RUN_TEST(3,2)
     506      RUN_TEST(3,4)
     507      RUN_TEST(3,8)
     508      RUN_TEST(3,16)
     509      RUN_TEST(4,1)
     510      RUN_TEST(4,2)
     511      RUN_TEST(4,4)
     512      RUN_TEST(4,8)
     513      RUN_TEST(4,16)
     514      RUN_TEST(5,1)
     515      RUN_TEST(5,2)
     516      RUN_TEST(5,4)
     517      RUN_TEST(5,8)
     518      RUN_TEST(5,16)
     519      RUN_TEST(6,1)
     520      RUN_TEST(6,2)
     521      RUN_TEST(6,4)
     522      RUN_TEST(6,8)
     523      RUN_TEST(6,16)
     524      RUN_TEST(7,1)
     525      RUN_TEST(7,2)
     526      RUN_TEST(7,4)
     527      RUN_TEST(7,8)
     528      RUN_TEST(7,16)
     529      RUN_TEST(8,1)
     530      RUN_TEST(8,2)
     531      RUN_TEST(8,4)
     532      RUN_TEST(8,8)
     533      RUN_TEST(8,16)
     534      RUN_TEST(9,1)
     535      RUN_TEST(9,2)
     536      RUN_TEST(9,4)
     537      RUN_TEST(9,8)
     538      RUN_TEST(9,16)
     539      RUN_TEST(10,1)
     540      RUN_TEST(10,2)
     541      RUN_TEST(10,4)
     542      RUN_TEST(10,8)
     543      RUN_TEST(10,16)
     544      RUN_TEST(11,1)
     545      RUN_TEST(11,2)
     546      RUN_TEST(11,4)
     547      RUN_TEST(11,8)
     548      RUN_TEST(11,16)
     549      RUN_TEST(12,1)
     550      RUN_TEST(12,2)
     551      RUN_TEST(12,4)
     552      RUN_TEST(12,8)
     553      RUN_TEST(12,16)
     554      RUN_TEST(13,1)
     555      RUN_TEST(13,2)
     556      RUN_TEST(13,4)
     557      RUN_TEST(13,8)
     558      RUN_TEST(13,16)
     559      RUN_TEST(14,1)
     560      RUN_TEST(14,2)
     561      RUN_TEST(14,4)
     562      RUN_TEST(14,8)
     563      RUN_TEST(14,16)
     564      RUN_TEST(15,1)
     565      RUN_TEST(15,2)
     566      RUN_TEST(15,4)
     567      RUN_TEST(15,8)
     568      RUN_TEST(15,16)
     569      RUN_TEST(16,1)
     570      RUN_TEST(16,2)
     571      RUN_TEST(16,4)
     572      RUN_TEST(16,8)
     573      RUN_TEST(16,16)
     574      RUN_TEST(17,1)
     575      RUN_TEST(17,2)
     576      RUN_TEST(17,4)
     577      RUN_TEST(17,8)
     578      RUN_TEST(17,16)
     579      RUN_TEST(18,1)
     580      RUN_TEST(18,2)
     581      RUN_TEST(18,4)
     582      RUN_TEST(18,8)
     583      RUN_TEST(18,16)
     584      RUN_TEST(19,1)
     585      RUN_TEST(19,2)
     586      RUN_TEST(19,4)
     587      RUN_TEST(19,8)
     588      RUN_TEST(19,16)
     589      RUN_TEST(20,1)
     590      RUN_TEST(20,2)
     591      RUN_TEST(20,4)
     592      RUN_TEST(20,8)
     593      RUN_TEST(20,16)
     594      RUN_TEST(21,1)
     595      RUN_TEST(21,2)
     596      RUN_TEST(21,4)
     597      RUN_TEST(21,8)
     598      RUN_TEST(21,16)
     599      RUN_TEST(22,1)
     600      RUN_TEST(22,2)
     601      RUN_TEST(22,4)
     602      RUN_TEST(22,8)
     603      RUN_TEST(22,16)
     604      RUN_TEST(23,1)
     605      RUN_TEST(23,2)
     606      RUN_TEST(23,4)
     607      RUN_TEST(23,8)
     608      RUN_TEST(23,16)
     609      RUN_TEST(24,1)
     610      RUN_TEST(24,2)
     611      RUN_TEST(24,4)
     612      RUN_TEST(24,8)
     613      RUN_TEST(24,16)
     614      RUN_TEST(25,1)
     615      RUN_TEST(25,2)
     616      RUN_TEST(25,4)
     617      RUN_TEST(25,8)
     618      RUN_TEST(25,16)
     619      RUN_TEST(26,1)
     620      RUN_TEST(26,2)
     621      RUN_TEST(26,4)
     622      RUN_TEST(26,8)
     623      RUN_TEST(26,16)
     624      RUN_TEST(27,1)
     625      RUN_TEST(27,2)
     626      RUN_TEST(27,4)
     627      RUN_TEST(27,8)
     628      RUN_TEST(27,16)
     629      RUN_TEST(28,1)
     630      RUN_TEST(28,2)
     631      RUN_TEST(28,4)
     632      RUN_TEST(28,8)
     633      RUN_TEST(28,16)
     634      RUN_TEST(29,1)
     635      RUN_TEST(29,2)
     636      RUN_TEST(29,4)
     637      RUN_TEST(29,8)
     638      RUN_TEST(29,16)
     639      RUN_TEST(30,1)
     640      RUN_TEST(30,2)
     641      RUN_TEST(30,4)
     642      RUN_TEST(30,8)
     643      RUN_TEST(30,16)
     644      RUN_TEST(31,1)
     645      RUN_TEST(31,2)
     646      RUN_TEST(31,4)
     647      RUN_TEST(31,8)
     648      RUN_TEST(31,16)
     649      RUN_TEST(32,1)
     650      RUN_TEST(32,2)
     651      RUN_TEST(32,4)
     652      RUN_TEST(32,8)
     653      RUN_TEST(32,16)
     654      RUN_TEST(33,1)
     655      RUN_TEST(33,2)
     656      RUN_TEST(33,4)
     657      RUN_TEST(33,8)
     658      RUN_TEST(33,16)
     659      RUN_TEST(34,1)
     660      RUN_TEST(34,2)
     661      RUN_TEST(34,4)
     662      RUN_TEST(34,8)
     663      RUN_TEST(34,16)
     664      RUN_TEST(35,1)
     665      RUN_TEST(35,2)
     666      RUN_TEST(35,4)
     667      RUN_TEST(35,8)
     668      RUN_TEST(35,16)
     669      RUN_TEST(36,1)
     670      RUN_TEST(36,2)
     671      RUN_TEST(36,4)
     672      RUN_TEST(36,8)
     673      RUN_TEST(36,16)
     674      RUN_TEST(37,1)
     675      RUN_TEST(37,2)
     676      RUN_TEST(37,4)
     677      RUN_TEST(37,8)
     678      RUN_TEST(37,16)
     679      RUN_TEST(38,1)
     680      RUN_TEST(38,2)
     681      RUN_TEST(38,4)
     682      RUN_TEST(38,8)
     683      RUN_TEST(38,16)
     684      RUN_TEST(39,1)
     685      RUN_TEST(39,2)
     686      RUN_TEST(39,4)
     687      RUN_TEST(39,8)
     688      RUN_TEST(39,16)
     689      RUN_TEST(40,1)
     690      RUN_TEST(40,2)
     691      RUN_TEST(40,4)
     692      RUN_TEST(40,8)
     693      RUN_TEST(40,16)
     694      RUN_TEST(41,1)
     695      RUN_TEST(41,2)
     696      RUN_TEST(41,4)
     697      RUN_TEST(41,8)
     698      RUN_TEST(41,16)
     699      RUN_TEST(42,1)
     700      RUN_TEST(42,2)
     701      RUN_TEST(42,4)
     702      RUN_TEST(42,8)
     703      RUN_TEST(42,16)
     704      RUN_TEST(43,1)
     705      RUN_TEST(43,2)
     706      RUN_TEST(43,4)
     707      RUN_TEST(43,8)
     708      RUN_TEST(43,16)
     709      RUN_TEST(44,1)
     710      RUN_TEST(44,2)
     711      RUN_TEST(44,4)
     712      RUN_TEST(44,8)
     713      RUN_TEST(44,16)
     714      RUN_TEST(45,1)
     715      RUN_TEST(45,2)
     716      RUN_TEST(45,4)
     717      RUN_TEST(45,8)
     718      RUN_TEST(45,16)
     719      RUN_TEST(46,1)
     720      RUN_TEST(46,2)
     721      RUN_TEST(46,4)
     722      RUN_TEST(46,8)
     723      RUN_TEST(46,16)
     724      RUN_TEST(47,1)
     725      RUN_TEST(47,2)
     726      RUN_TEST(47,4)
     727      RUN_TEST(47,8)
     728      RUN_TEST(47,16)
     729      RUN_TEST(48,1)
     730      RUN_TEST(48,2)
     731      RUN_TEST(48,4)
     732      RUN_TEST(48,8)
     733      RUN_TEST(48,16)
     734      RUN_TEST(49,1)
     735      RUN_TEST(49,2)
     736      RUN_TEST(49,4)
     737      RUN_TEST(49,8)
     738      RUN_TEST(49,16)
     739      RUN_TEST(100,1)
     740      RUN_TEST(100,2)
     741      RUN_TEST(100,4)
     742      RUN_TEST(100,8)
     743      RUN_TEST(100,16)
     744      RUN_TEST(191,1)
     745      RUN_TEST(192,1)
     746      RUN_TEST(193,1)
     747      RUN_TEST(200,1)
     748      RUN_TEST(400,1)
     749  #else
     750      RUN_TEST(1,1)
     751      RUN_TEST(2,1)
     752      RUN_TEST(3,1)
     753      RUN_TEST(4,1)
     754      RUN_TEST(5,1)
     755      RUN_TEST(5,8)
     756      RUN_TEST(6,1)
     757      RUN_TEST(6,4)
     758      RUN_TEST(6,8)
     759      RUN_TEST(7,1)
     760      RUN_TEST(7,2)
     761      RUN_TEST(7,4)
     762      RUN_TEST(7,8)
     763      RUN_TEST(8,1)
     764      RUN_TEST(9,1)
     765      RUN_TEST(16,1)
     766      RUN_TEST(32,1)
     767      RUN_TEST(33,8)
     768      RUN_TEST(49,1)
     769  #endif
     770  }