summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/vperm.pl
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/vperm.pl')
-rwxr-xr-xgcc/testsuite/gcc.target/i386/vperm.pl41
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/vperm.pl b/gcc/testsuite/gcc.target/i386/vperm.pl
new file mode 100755
index 000000000..80fae9daa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/vperm.pl
@@ -0,0 +1,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";