Fix build with riscv-gcc version 4.9
[riscv-tests.git] / mt / bc_vvadd / vvadd_gendata.pl
1 #!/usr/bin/perl -w
2 #==========================================================================
3 # vvadd_gendata.pl
4 #
5 # Author : Christopher Batten (cbatten@mit.edu)
6 # Date : April 29, 2005
7 #
8 (our $usageMsg = <<'ENDMSG') =~ s/^\#//gm;
9 #
10 # Simple script which creates an input data set and the reference data
11 # for the vvadd benchmark.
12 #
13 ENDMSG
14
15 use strict "vars";
16 use warnings;
17 no warnings("once");
18 use Getopt::Long;
19
20 #--------------------------------------------------------------------------
21 # Command line processing
22 #--------------------------------------------------------------------------
23
24 our %opts;
25
26 sub usage()
27 {
28
29 print "\n";
30 print " Usage: vvadd_gendata.pl [options] \n";
31 print "\n";
32 print " Options:\n";
33 print " --help print this message\n";
34 print " --size size of input data [1000]\n";
35 print " --seed random seed [1]\n";
36 print "$usageMsg";
37
38 exit();
39 }
40
41 sub processCommandLine()
42 {
43
44 $opts{"help"} = 0;
45 $opts{"size"} = 1000;
46 $opts{"seed"} = 1;
47 Getopt::Long::GetOptions( \%opts, 'help|?', 'size:i', 'seed:i' ) or usage();
48 $opts{"help"} and usage();
49
50 }
51
52 #--------------------------------------------------------------------------
53 # Helper Functions
54 #--------------------------------------------------------------------------
55
56 sub printArray
57 {
58 my $arrayName = $_[0];
59 my $arrayRef = $_[1];
60
61 my $numCols = 20;
62 my $arrayLen = scalar(@{$arrayRef});
63
64 print "static data_t ".$arrayName."[DATA_SIZE] = \n";
65 print "{\n";
66
67 if ( $arrayLen <= $numCols ) {
68 print " ";
69 for ( my $i = 0; $i < $arrayLen; $i++ ) {
70 print sprintf("%3.2f",$arrayRef->[$i]);
71 if ( $i != $arrayLen-1 ) {
72 print ", ";
73 }
74 }
75 print "\n";
76 }
77
78 else {
79 my $numRows = int($arrayLen/$numCols);
80 for ( my $j = 0; $j < $numRows; $j++ ) {
81 print " ";
82 for ( my $i = 0; $i < $numCols; $i++ ) {
83 my $index = $j*$numCols + $i;
84 print sprintf("%3.2f",$arrayRef->[$index]);
85 if ( $index != $arrayLen-1 ) {
86 print ", ";
87 }
88 }
89 print "\n";
90 }
91
92 if ( $arrayLen > ($numRows*$numCols) ) {
93 print " ";
94 for ( my $i = 0; $i < ($arrayLen-($numRows*$numCols)); $i++ ) {
95 my $index = $numCols*$numRows + $i;
96 print sprintf("%3.2f",$arrayRef->[$index]);
97 if ( $index != $arrayLen-1 ) {
98 print ", ";
99 }
100 }
101 print "\n";
102 }
103
104 }
105
106 print "};\n\n";
107 }
108
109 #--------------------------------------------------------------------------
110 # Main
111 #--------------------------------------------------------------------------
112
113 sub main()
114 {
115
116 processCommandLine();
117 srand($opts{"seed"});
118
119 my @values1;
120 my @values2;
121 my @sum;
122 for ( my $i = 0; $i < $opts{"size"}; $i++ ) {
123 my $value1 = int(rand(19));
124 my $value2 = int(rand(19));
125 push( @values1, $value1 );
126 push( @values2, $value2 );
127 push( @sum, $value1 + $value2 );
128 }
129
130
131 print "\n\#define DATA_SIZE ".$opts{"size"}." \n\n";
132 printArray( "input1_data", \@values1 );
133 printArray( "input2_data", \@values2 );
134 printArray( "verify_data", \@sum );
135
136 }
137
138 main();
139