Home | History | Annotate | Download | only in ia64
      1 @ph = ( "", ".few", ".many" );
      2 @bwh = ( ".sptk", ".spnt", ".dptk", ".dpnt" );
      3 @dh = ( "", ".clr" );
      4 
      5 @iprel = ( ".cond", ".wexit", ".wtop", ".cloop", ".cexit", ".ctop", ".call" );
      6 @indir = ( ".cond", ".ia", ".ret", ".call" );
      7 %noqual = ( ".ia", 1, ".cloop", 1, ".ctop", 1, ".cexit", 1 );
      8 %slottwo = ( ".cloop", 1, ".ctop", 1, ".cexit", 1, ".wtop", 1, ".wexit", 1 );
      9 
     10 print ".L0:\n\n";
     11 
     12 foreach $i (@iprel) {
     13   $call = ($i eq ".call" ? "b0 = " : "");
     14   foreach $b (@bwh) {
     15     foreach $p (@ph) {
     16       foreach $d (@dh) {
     17 	if ($slottwo{$i}) {
     18 	  if (!$noqual{$i}) {
     19 	    print ("\t{ .bbb; (p2) br${i}${b}${p}${d} ${call}.L1 ;; }\n");
     20 	  }
     21 	  print ("\t{ .bbb; br${i}${b}${p}${d} ${call}.L1 ;; }\n");
     22 	} else {
     23 	  print ("\t{ .bbb; nop.b 0\n");
     24 	  if (!$noqual{$i}) {
     25 	    print ("(p2)\tbr${i}${b}${p}${d} ${call}.L1\n");
     26 	  } else {
     27 	    print ("\tnop.b 0\n");
     28 	  }
     29 	  print ("\tbr${i}${b}${p}${d} ${call}.L0\n");
     30 	  print ("\t;; }\n");
     31 	}
     32       }
     33     }
     34   }
     35   print "\n";
     36 }
     37 
     38 foreach $i (@indir) {
     39   $call = ($i eq ".call" ? "b0 = " : "");
     40   foreach $b (@bwh) {
     41     foreach $p (@ph) {
     42       foreach $d (@dh) {
     43 	print ("\t{ .bbb; nop.b 0;\n");
     44 	if (!$noqual{$i}) {
     45 	  print ("(p2)\tbr${i}${b}${p}${d} ${call}b2\n");
     46 	} else {
     47 	  print ("\tnop.b 0\n");
     48 	}
     49 	print ("\tbr${i}${b}${p}${d} ${call}b2\n");
     50 	print ("\t;; }\n");
     51       }
     52     }
     53   }
     54   print "\n";
     55 }
     56 
     57 @ih = ( "", ".imp" );
     58 @ipwh = ( ".sptk", ".loop", ".dptk", ".exit" );
     59 @indwh = ( ".sptk", ".dptk" );
     60 
     61 $CTR = 2;
     62 
     63 foreach $w (@ipwh) {
     64   foreach $i (@ih) {
     65     print ("\t{ .bbb; break.b 0; nop.b 0\n");
     66     print ("\tbrp${w}${i} .L0, .L${CTR}\n");
     67     print ("\t;; }\n");
     68   }
     69   print (".L${CTR}:\n");
     70   ++$CTR;
     71 }
     72 
     73 print "\n";
     74 
     75 foreach $b ("", ".ret") {
     76   foreach $w (@indwh) {
     77     foreach $i (@ih) {
     78       print ("\t{ .bbb; break.b 0; nop.b 0\n");
     79       print ("\tbrp${b}${w}${i} b3, .L${CTR}\n");
     80       print ("\t;; }\n");
     81     }
     82     print (".L${CTR}:\n");
     83     ++$CTR;
     84   }
     85   print "\n";
     86 }
     87 
     88 print ".space 5888\n";
     89 
     90 @last = ( "cover", "clrrrb", "clrrrb.pr", "rfi", "bsw.0", "bsw.1", "epc" );
     91 foreach $i (@last) {
     92   print "\t{ .bbb; nop.b 0; nop.b 0; $i ;; }\n";
     93 }
     94 
     95 print "\n.L1:\n";
     96