xref: /dflybsd-src/test/sysperf/call3.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
1*86d7f5d3SJohn Marino /*
2*86d7f5d3SJohn Marino  * call3.c
3*86d7f5d3SJohn Marino  *
4*86d7f5d3SJohn Marino  * Test a standard function call to a function which does nothing much.
5*86d7f5d3SJohn Marino  *
6*86d7f5d3SJohn Marino  * $DragonFly: src/test/sysperf/call3.c,v 1.3 2005/08/02 17:11:04 hmp Exp $
7*86d7f5d3SJohn Marino  */
8*86d7f5d3SJohn Marino 
9*86d7f5d3SJohn Marino #include "blib.h"
10*86d7f5d3SJohn Marino 
11*86d7f5d3SJohn Marino #define LOOP 500000000
12*86d7f5d3SJohn Marino 
13*86d7f5d3SJohn Marino __asm(".p2align 6");
xnop1(void)14*86d7f5d3SJohn Marino static void xnop1(void) { }
15*86d7f5d3SJohn Marino __asm(".p2align 6");
xnop2(void)16*86d7f5d3SJohn Marino static void xnop2(void) { }
17*86d7f5d3SJohn Marino __asm(".p2align 6");
xnop(void (* func)(void))18*86d7f5d3SJohn Marino static void xnop(void (*func)(void)) { func(); }
19*86d7f5d3SJohn Marino 
20*86d7f5d3SJohn Marino int
main(int ac,char ** av)21*86d7f5d3SJohn Marino main(int ac, char **av)
22*86d7f5d3SJohn Marino {
23*86d7f5d3SJohn Marino     int i;
24*86d7f5d3SJohn Marino 
25*86d7f5d3SJohn Marino     printf("call nop() function through function pointer in loop\n");
26*86d7f5d3SJohn Marino     start_timing();
27*86d7f5d3SJohn Marino     for (i = 0; i < LOOP; ++i) {
28*86d7f5d3SJohn Marino 	xnop(xnop1);
29*86d7f5d3SJohn Marino 	xnop(xnop1);
30*86d7f5d3SJohn Marino     }
31*86d7f5d3SJohn Marino     stop_timing(LOOP * 2, "call3/nop1-1");
32*86d7f5d3SJohn Marino     start_timing();
33*86d7f5d3SJohn Marino     for (i = 0; i < LOOP; ++i) {
34*86d7f5d3SJohn Marino 	xnop(xnop1);
35*86d7f5d3SJohn Marino 	xnop(xnop2);
36*86d7f5d3SJohn Marino     }
37*86d7f5d3SJohn Marino     stop_timing(LOOP * 2, "call3/nop1-2");
38*86d7f5d3SJohn Marino     start_timing();
39*86d7f5d3SJohn Marino     for (i = 0; i < LOOP; ++i) {
40*86d7f5d3SJohn Marino 	xnop(xnop2);
41*86d7f5d3SJohn Marino 	xnop(xnop2);
42*86d7f5d3SJohn Marino     }
43*86d7f5d3SJohn Marino     stop_timing(LOOP * 2, "call3/nop2-2");
44*86d7f5d3SJohn Marino     return(0);
45*86d7f5d3SJohn Marino }
46*86d7f5d3SJohn Marino 
47