mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			93 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
| #include <assert.h>
 | |
| 
 | |
| #define C 55
 | |
| 
 | |
| int i, j, k;
 | |
| 
 | |
| static void
 | |
| test_bzero (unsigned size)
 | |
| {
 | |
|   unsigned bsize = size * sizeof (int);
 | |
|   int *x = __builtin_malloc (bsize);
 | |
|   __builtin_memset (x, C, bsize);
 | |
| 
 | |
| #pragma omp target map(tofrom: x[:size]) map(from: bsize)
 | |
|   {
 | |
|     __builtin_bzero (x, bsize);
 | |
|   }
 | |
| 
 | |
|   char *buffer = (char *) x;
 | |
|   for (unsigned i = 0; i < bsize; ++i)
 | |
|     assert (buffer[i] == 0);
 | |
| }
 | |
| 
 | |
| static void
 | |
| test_memcpy (unsigned size)
 | |
| {
 | |
|   unsigned bsize = size * sizeof (int);
 | |
|   int *x = __builtin_malloc (bsize);
 | |
|   __builtin_memset (x, C, bsize);
 | |
|   int *y = __builtin_malloc (bsize);
 | |
| 
 | |
| #pragma omp target map(tofrom: x[:size], y[:size]) map(from: bsize)
 | |
|   {
 | |
|     __builtin_memcpy (y, x, bsize);
 | |
|   }
 | |
| 
 | |
|   char *buffer = (char *) y;
 | |
|   for (unsigned i = 0; i < bsize; ++i)
 | |
|     assert (buffer[i] == C);
 | |
| }
 | |
| 
 | |
| static void
 | |
| test_mempcpy (unsigned size)
 | |
| {
 | |
|   unsigned bsize = size * sizeof (int);
 | |
|   int *x = __builtin_malloc (bsize);
 | |
|   __builtin_memset (x, C, bsize);
 | |
|   int *y = __builtin_malloc (bsize);
 | |
|   int *ptr = 0;
 | |
| 
 | |
| #pragma omp target map(tofrom :x[:size], y[:size], ptr) map(from: bsize)
 | |
|   {
 | |
|     ptr = __builtin_mempcpy (y, x, bsize);
 | |
|   }
 | |
| 
 | |
|   char *buffer = (char *) y;
 | |
|   for (unsigned i = 0; i < bsize; ++i)
 | |
|     assert (buffer[i] == C);
 | |
| 
 | |
|   assert (ptr == y + size);
 | |
| }
 | |
| 
 | |
| static void
 | |
| test_memset (unsigned size)
 | |
| {
 | |
|   unsigned bsize = size * sizeof (int);
 | |
|   int *x = __builtin_malloc (bsize);
 | |
|   __builtin_bzero (x, bsize);
 | |
| 
 | |
| #pragma omp target map(tofrom : x[:size]) map(from: bsize)
 | |
|   {
 | |
|     __builtin_memset (x, C, bsize);
 | |
|   }
 | |
| 
 | |
|   char *buffer = (char *) x;
 | |
|   for (unsigned i = 0; i < bsize; ++i)
 | |
|     assert (buffer[i] == C);
 | |
| }
 | |
| 
 | |
| int
 | |
| main (void)
 | |
| {
 | |
|   unsigned tests[] = {1, 2, 3, 4, 5, 8, 15, 17, 23, 33, 0};
 | |
| 
 | |
|   for (unsigned i = 0; tests[i]; i++)
 | |
|     {
 | |
|       test_bzero (tests[i]);
 | |
|       test_memset (tests[i]);
 | |
|       test_memcpy (tests[i]);
 | |
|       test_mempcpy (tests[i]);
 | |
|     }
 | |
| }
 |