s3e: fix build break
[calu.git] / 2_isa / gentex.pl
index 373d576f0ff7aa64d1ab57352956a9d0bef831a2..967bd7a99b1101dae2a073c05295664b202fe62d 100755 (executable)
@@ -1,6 +1,10 @@
 #!/usr/bin/perl
 use strict;
 
+sub plaintext {
+       print $_[0];
+}
+
 sub ins {
        my $bits = $_[0];
        my $bline;
@@ -17,8 +21,11 @@ sub ins {
        my $x;
        my @fieldnames;
        my @flagnames = ('SF', 'CF', 'OF', 'ZF');
+       my $section = "\\subsubsection";
 
-
+       if($_[9]) {
+               $section = "\\item ";
+       }
 
        @fields = split(/\|/, $_[3]);
        foreach my $field (@fields) {
@@ -70,7 +77,7 @@ sub ins {
 
        $count = $bits-1;
 
-       $tabular = "\\subsubsection{".$_[1]."}\n";
+       $tabular = $section."{\\texttt{".$_[1]."} -- ".$_[2]."}\n";
        $tabular .= "\\begin{center} \n \\resizebox{\\textwidth}{!}{\n";
        $tabular .= "\\begin{tabular}{|l|";
        for($i = $bits-1; $i >= 0; $i--) {
@@ -158,6 +165,41 @@ sub ins {
        }
 
        print $tabular;
+
+       if($_[8]) {
+               print "\\paragraph{Aliases to this Instruction:} \n";
+               my @aliases = split(/\|/, $_[8]);
+
+               print "\\begin{list}{\\labelitemi}{\\leftmargin=0em \\itemindent=1em}";
+
+
+               foreach my $alias (@aliases) {
+                       my $long;
+                       my $sub;
+                       my @params;
+                       my $namelist = $_[4];
+
+                       @params = split(/-/, $alias);
+                       $sub = @params[0];
+                       $long = @params[1];
+                       shift(@params); shift(@params);
+
+                       foreach my $vals (@params) {
+                               my $field;
+                               my $val;
+                               ($field, $val) = split(/\//, $vals);
+
+                               my @fieldnames = split(/\|/, $namelist);
+
+                               $fieldnames[$field] = $fieldnames[$field]."(".$val.")";
+                               $namelist = join("|",@fieldnames);
+                       }
+
+                       ins($_[0], $sub, $long,$_[3], $namelist, '', '', '', '',1);
+               }
+               print "\\end{list}";
+       }
+
 }
 
 if($#ARGV != 0) {