summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/vperm.pl
blob: 80fae9daa4fc0e51b55b3e8f583d49f4017939d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl

$nelt = int($ARGV[0]);
$leng = int($ARGV[1]);

print "/* This file auto-generated with ./vperm.pl $nelt $leng.  */\n\n";

for ($i = 0; $i < $nelt; ++$i) { $perm[$i] = 0; }
$ncheck = 0;

for ($i = 0; $i < ($leng * $nelt) ** $nelt; ++$i)
{
  if ($i % 128 == 0)
  {
    print "}\n\n" if $ncheck > 0;
    print "void check$ncheck(void)\n{\n";
    ++$ncheck;
  }

  print "  TEST (";
  for ($j = 0; $j < $nelt; ++$j)
  {
    print $perm[$j];
    print ", " if $j < $nelt - 1;
  }
  print ")\n";

  INCR: for ($j = 0; $j < $nelt; ++$j)
  {
    last INCR if ++$perm[$j] < $leng * $nelt;
    $perm[$j] = 0;
  }
}
print "}\n\n";

print "void check(void)\n{\n";
for ($i = 0; $i < $ncheck; ++$i)
{
  print "  check$i ();\n";
}
print "}\n\n";