- import libcxx - reduce targets to the one when compiled as a tools Change-Id: Iabb8427f80ff8e89463559a28bcb8b4f2bdbc496
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "timing.h"
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
#define INPUT_TYPE uint64_t
 | 
						|
#define INPUT_SIZE 512
 | 
						|
#define FUNCTION_NAME __floatundixf
 | 
						|
 | 
						|
#ifndef LIBNAME
 | 
						|
#define LIBNAME UNKNOWN
 | 
						|
#endif
 | 
						|
 | 
						|
#define LIBSTRING		LIBSTRINGX(LIBNAME)
 | 
						|
#define LIBSTRINGX(a)	LIBSTRINGXX(a)
 | 
						|
#define LIBSTRINGXX(a)	#a
 | 
						|
 | 
						|
long double FUNCTION_NAME(INPUT_TYPE x);
 | 
						|
 | 
						|
int main(int argc, char *argv[]) {
 | 
						|
	INPUT_TYPE input[INPUT_SIZE];
 | 
						|
	int i, j;
 | 
						|
	
 | 
						|
	srand(42);
 | 
						|
	
 | 
						|
	// Initialize the input array with data of various sizes.
 | 
						|
	for (i=0; i<INPUT_SIZE; ++i)
 | 
						|
		input[i] = (((uint64_t)rand() << 32) | (uint64_t)rand()) >> (rand() & 63);
 | 
						|
	
 | 
						|
	double bestTime = __builtin_inf();
 | 
						|
	void *dummyp;
 | 
						|
	for (j=0; j<1024; ++j) {
 | 
						|
 | 
						|
		uint64_t startTime = mach_absolute_time();
 | 
						|
		for (i=0; i<INPUT_SIZE; ++i)
 | 
						|
			FUNCTION_NAME(input[i]);
 | 
						|
		uint64_t endTime = mach_absolute_time();
 | 
						|
		
 | 
						|
		double thisTime = intervalInCycles(startTime, endTime);
 | 
						|
		bestTime = __builtin_fmin(thisTime, bestTime);
 | 
						|
		
 | 
						|
		// Move the stack alignment between trials to eliminate (mostly) aliasing effects
 | 
						|
		dummyp = alloca(1);
 | 
						|
	}
 | 
						|
	
 | 
						|
	printf("%16s: %f cycles.\n", LIBSTRING, bestTime / (double) INPUT_SIZE);
 | 
						|
	
 | 
						|
	return 0;
 | 
						|
}
 |