1dc178262aab61adaf88824703886595aa46f53b
[blender-staging.git] / extern / ode / dist / ode / fbuild / OptimizeDot
1 #!/usr/bin/perl
2 #
3 #########################################################################
4 #                                                                       #
5 # Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       #
6 # All rights reserved.  Email: russ@q12.org   Web: www.q12.org          #
7 #                                                                       #
8 # This library is free software; you can redistribute it and/or         #
9 # modify it under the terms of EITHER:                                  #
10 #   (1) The GNU Lesser General Public License as published by the Free  #
11 #       Software Foundation; either version 2.1 of the License, or (at  #
12 #       your option) any later version. The text of the GNU Lesser      #
13 #       General Public License is included with this library in the     #
14 #       file LICENSE.TXT.                                               #
15 #   (2) The BSD-style license that is included with this library in     #
16 #       the file LICENSE-BSD.TXT.                                       #
17 #                                                                       #
18 # This library is distributed in the hope that it will be useful,       #
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of        #
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    #
21 # LICENSE.TXT and LICENSE-BSD.TXT for more details.                     #
22 #                                                                       #
23 #########################################################################
24
25 # optimize the dot product built by BuildDot
26
27 ##############################################################################
28
29 require ("OptimizeUtil");
30
31 # unused standard parameters
32 $TYPE='unused';
33 $N1=0;                  # unused
34 $UNROLL2=0;             # unused
35 $MADD=0;                # unused
36
37 ##############################################################################
38
39 sub testDot # (filename)
40 {
41   my $filename = $_[0];
42   createParametersFile ('ParametersD');
43   $params = "$N1 $UNROLL1 $UNROLL2 $MADD $FETCH $LAT1 $LAT2";
44   print "***** TESTING $params\n";
45   doit ("rm -f fastdot.c fastdot.o test_dot");
46   doit ("make test_dot");
47   doit ("./test_dot >> $filename");
48   open (FILE,">>$filename");
49   print FILE " $params\n";
50   close FILE;
51 }
52
53 # find optimal parameters. write results to data4.txt
54
55 open (FILE,">data4.txt");
56 print FILE "# dot product data from OptimizeDot\n";
57 close FILE;
58 $FNAME='fastdot';
59
60 for ($UNROLL1=1; $UNROLL1 <= 10; $UNROLL1++) {
61   for ($LAT1=1; $LAT1 <= 5; $LAT1++) {
62     for ($LAT2=1; $LAT2 <= 5; $LAT2++) {
63       for ($FETCH=1; $FETCH<=5; $FETCH++) {
64         testDot ('data4.txt');
65       }
66     }
67   }
68 }
69
70 readBackDataFile ('data4.txt');
71 createParametersFile ('ParametersD');