annotate TOOLS/fastmemcpybench.c @ 33441:d494a6d78677

Use int as type, there is no reason to use char which also causes issues since it may be either signed or unsigned.
author reimar
date Mon, 30 May 2011 21:16:37 +0000
parents b573c7c7173b
children cef5275fc11f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
1 /*
28869
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
2 * benchmark tool for fast_memcpy code from libvo
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
3 *
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
4 * NOTE: This code can not be used on Pentium MMX / II because they contain
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
5 * a bug in rdtsc. For Intel processors since P6(PII) rdpmc should be used
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
6 * instead. For PIII it's disputable and it seems the bug was fixed but this
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
7 * was not confirmed through testing.
30416
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
8 *
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
9 * This program is free software; you can redistribute it and/or modify
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
10 * it under the terms of the GNU General Public License as published by
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
12 * (at your option) any later version.
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
13 *
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
14 * This program is distributed in the hope that it will be useful,
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
17 * GNU General Public License for more details.
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
18 *
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
19 * You should have received a copy of the GNU General Public License along
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
20 * with this program; if not, write to the Free Software Foundation, Inc.,
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
b573c7c7173b Add standard license header to C tools missing them.
diego
parents: 28903
diff changeset
22 */
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
23
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
24 #include <stdio.h>
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
25 #include <stdlib.h>
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
26 #include <string.h>
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
27 #include <sys/ioctl.h>
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
28 #include <unistd.h>
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
29 #include <fcntl.h>
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
30 #include <sys/mman.h>
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
31 #include <sys/time.h>
13839
40391656ae23 small compilation fix
rathann
parents: 3082
diff changeset
32 #include <inttypes.h>
28894
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
33
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
34 #include "config.h"
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
35 #include "cpudetect.h"
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
36
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
37 #define BLOCK_SIZE 4096
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
38 #define CONFUSION_FACTOR 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
39
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
40 #if HAVE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
41 #define COMPILE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
42 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
43
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
44 #if HAVE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
45 #define COMPILE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
46 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
47
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
48 #if HAVE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
49 #define COMPILE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
50 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
51
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
52 #if HAVE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
53 #define COMPILE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
54 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
55
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
56 #ifdef COMPILE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
57 #undef RENAME
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
58 #undef HAVE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
59 #undef HAVE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
60 #undef HAVE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
61 #undef HAVE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
62 #undef HAVE_SSE2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
63 #define HAVE_MMX 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
64 #define HAVE_MMX2 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
65 #define HAVE_AMD3DNOW 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
66 #define HAVE_SSE 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
67 #define HAVE_SSE2 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
68 #define RENAME(a) a ## _MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
69 #include "libvo/aclib_template.c"
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
70 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
71
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
72 #ifdef COMPILE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
73 #undef RENAME
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
74 #undef HAVE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
75 #undef HAVE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
76 #undef HAVE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
77 #undef HAVE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
78 #undef HAVE_SSE2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
79 #define HAVE_MMX 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
80 #define HAVE_MMX2 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
81 #define HAVE_AMD3DNOW 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
82 #define HAVE_SSE 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
83 #define HAVE_SSE2 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
84 #define RENAME(a) a ## _MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
85 #include "libvo/aclib_template.c"
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
86 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
87
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
88 #ifdef COMPILE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
89 #undef RENAME
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
90 #undef HAVE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
91 #undef HAVE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
92 #undef HAVE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
93 #undef HAVE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
94 #undef HAVE_SSE2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
95 #define HAVE_MMX 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
96 #define HAVE_MMX2 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
97 #define HAVE_AMD3DNOW 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
98 #define HAVE_SSE 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
99 #define HAVE_SSE2 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
100 #define RENAME(a) a ## _3DNow
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
101 #include "libvo/aclib_template.c"
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
102 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
103
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
104 #ifdef COMPILE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
105 #undef RENAME
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
106 #undef HAVE_MMX
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
107 #undef HAVE_MMX2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
108 #undef HAVE_AMD3DNOW
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
109 #undef HAVE_SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
110 #undef HAVE_SSE2
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
111 #define HAVE_MMX 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
112 #define HAVE_MMX2 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
113 #define HAVE_AMD3DNOW 0
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
114 #define HAVE_SSE 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
115 #define HAVE_SSE2 1
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
116 #define RENAME(a) a ## _SSE
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
117 #include "libvo/aclib_template.c"
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
118 #endif
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
119
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
120 //#define ARR_SIZE 100000
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
121 #define ARR_SIZE (1024*768*2)
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
122
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26759
diff changeset
123 #ifdef CONFIG_MGA
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
124
17017
dd053aeb5442 Unify include path handling by using -I.
diego
parents: 13839
diff changeset
125 #include "drivers/mga_vid.h"
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
126
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
127 static mga_vid_config_t mga_vid_config;
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
128 static unsigned char* frame = NULL;
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
129 static int f;
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
130
28232
8df85ad26746 Add missing 'void' keyword to parameterless function declarations.
diego
parents: 27757
diff changeset
131 static int mga_init(void)
8df85ad26746 Add missing 'void' keyword to parameterless function declarations.
diego
parents: 27757
diff changeset
132 {
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
133 f = open("/dev/mga_vid", O_RDWR);
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
134 if (f == -1) {
28869
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
135 fprintf(stderr, "Couldn't open /dev/mga_vid.\n");
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
136 return -1;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
137 }
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
138
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
139 mga_vid_config.num_frames = 1;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
140 mga_vid_config.frame_size = ARR_SIZE;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
141 mga_vid_config.format = MGA_VID_FORMAT_YUY2;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
142
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
143 mga_vid_config.colkey_on = 0;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
144 mga_vid_config.src_width = 640;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
145 mga_vid_config.src_height = 480;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
146 mga_vid_config.dest_width = 320;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
147 mga_vid_config.dest_height = 200;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
148 mga_vid_config.x_org = 0;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
149 mga_vid_config.y_org = 0;
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
150
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
151 mga_vid_config.version = MGA_VID_VERSION;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
152 if (ioctl(f, MGA_VID_CONFIG, &mga_vid_config)) {
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
153 perror("Error in mga_vid_config ioctl()");
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
154 printf("Your mga_vid driver version is incompatible with this MPlayer version!\n");
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
155 exit(1);
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
156 }
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
157 ioctl(f, MGA_VID_ON, 0);
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
158
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
159 frame = (char*)mmap(0, mga_vid_config.frame_size*mga_vid_config.num_frames,
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
160 PROT_WRITE,MAP_SHARED, f, 0);
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
161 if (!frame) {
28869
04a232eb5f0d comment/output cosmetics
diego
parents: 28868
diff changeset
162 printf("Can't mmap MGA frame.\n");
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
163 exit(1);
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
164 }
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
165
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
166 //clear the buffer
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
167 //memset(frames[0], 0x80, mga_vid_config.frame_size*mga_vid_config.num_frames);
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
168
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
169 return 0;
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
170 }
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
171
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
172 #endif
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
173
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
174 // Returns current time in microseconds
28232
8df85ad26746 Add missing 'void' keyword to parameterless function declarations.
diego
parents: 27757
diff changeset
175 static unsigned int GetTimer(void)
8df85ad26746 Add missing 'void' keyword to parameterless function declarations.
diego
parents: 27757
diff changeset
176 {
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
177 struct timeval tv;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
178 struct timezone tz;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
179 //float s;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
180 gettimeofday(&tv, &tz);
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
181 //s = tv.tv_usec; s *= 0.000001; s += tv.tv_sec;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
182 return tv.tv_sec * 1000000 + tv.tv_usec;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
183 }
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
184
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
185 static inline unsigned long long int read_tsc(void)
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
186 {
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
187 unsigned long long int retval;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
188 __asm__ volatile ("rdtsc":"=A" (retval)::"memory");
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
189 return retval;
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
190 }
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
191
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
192 unsigned char __attribute__((aligned(4096)))arr1[ARR_SIZE], arr2[ARR_SIZE];
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
193
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
194 int main(void)
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
195 {
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
196 unsigned long long int v1, v2;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
197 unsigned char *marr1, *marr2;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
198 int i;
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
199 unsigned int t;
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26759
diff changeset
200 #ifdef CONFIG_MGA
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
201 mga_init();
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
202 marr1 = &frame[3];
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
203 #else
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
204 marr1 = &arr1[0];
572
9935c60a15a0 added mga_vid support (systemram->videoram tests)
arpi_esp
parents: 562
diff changeset
205 #endif
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
206 marr2 = &arr2[0];
3076
bfc881c0e591 newly allocated memory seems to point to only 1 zero filled 4k page or something so there is a near 100% cache hit rate ... not very realistic, writeing something in the source array fixes that so the benchmark scores are meaningfull now
michael
parents: 687
diff changeset
207
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
208 for (i = 0; i < ARR_SIZE - 16; i++)
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
209 marr1[i] = marr2[i] = i;
3076
bfc881c0e591 newly allocated memory seems to point to only 1 zero filled 4k page or something so there is a near 100% cache hit rate ... not very realistic, writeing something in the source array fixes that so the benchmark scores are meaningfull now
michael
parents: 687
diff changeset
210
28903
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
211 #define testblock(func, name) \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
212 t = GetTimer(); \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
213 v1 = read_tsc(); \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
214 for (i = 0; i < 100; i++) \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
215 func(marr1, marr2, ARR_SIZE - 16); \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
216 v2 = read_tsc(); \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
217 t = GetTimer() - t; \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
218 /* ARR_SIZE*100 / (1024*1024) / (t/1000000) = ARR_SIZE*95.36743 / t */ \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
219 printf(name "CPU clocks=%llu = %dus (%5.3ffps) %5.1fMB/s\n", v2-v1, t, \
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
220 100000000.0f / (float)t, (float)ARR_SIZE*95.36743f / (float)t);
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
221
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
222 testblock(memcpy, "libc: ");
28894
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
223
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
224 #if HAVE_MMX
28903
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
225 testblock(fast_memcpy_MMX, "MMX: ");
28894
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
226 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
227
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
228 #if HAVE_AMD3DNOW
28903
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
229 testblock(fast_memcpy_3DNow, "3DNow!: ");
28894
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
230 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
231
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
232 #if HAVE_MMX2
28903
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
233 testblock(fast_memcpy_MMX2, "MMX2: ");
28894
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
234 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
235
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
236 #if HAVE_SSE
28903
1d34931ae1e6 Replace duplicated code by a macro.
diego
parents: 28894
diff changeset
237 testblock(fast_memcpy_SSE, "SSE: ");
28894
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
238 #endif
b29169fccda9 Fix and restructure fastmemcpybench. It is now one binary that runs all
diego
parents: 28871
diff changeset
239
28868
a10ddae3de31 whitespace cosmetics:
diego
parents: 28855
diff changeset
240 return 0;
562
312fee2a6816 Initial release, used to benchmark fastmemcpy.h code from libvo.
atmosfear
parents:
diff changeset
241 }