cvsuser     03/12/28 02:59:36

  Modified:    .        MANIFEST
  Added:       examples/benchmarks addit.imc addit.pasm addit.pl addit2.imc
  Log:
  addit benchmarks
  
  Revision  Changes    Path
  1.523     +4 -0      parrot/MANIFEST
  
  Index: MANIFEST
  ===================================================================
  RCS file: /cvs/public/parrot/MANIFEST,v
  retrieving revision 1.522
  retrieving revision 1.523
  diff -u -w -r1.522 -r1.523
  --- MANIFEST  28 Dec 2003 01:25:10 -0000      1.522
  +++ MANIFEST  28 Dec 2003 10:59:29 -0000      1.523
  @@ -290,6 +290,10 @@
   examples/assembly/thr-primes.imc                  [main]doc
   examples/assembly/uniq.pasm                       [main]doc
   examples/assembly/xml_parser.pasm                 [main]doc
  +examples/benchmarks/addit.pl                      [main]doc
  +examples/benchmarks/addit.pasm                    [main]doc
  +examples/benchmarks/addit.imc                     [main]doc
  +examples/benchmarks/addit2.imc                    [main]doc
   examples/benchmarks/arriter.imc                   [main]doc
   examples/benchmarks/arriter.pl                    [main]doc
   examples/benchmarks/arriter_o1.imc                [main]doc
  
  
  
  1.1                  parrot/examples/benchmarks/addit.imc
  
  Index: addit.imc
  ===================================================================
  .sub _main
          .sym pmc a0
        a0 = new PerlInt
        a0 = 1000
          .sym pmc a1
        a1 = new PerlNum
        a1 = 7.100
          .sym pmc a2
        a2 = new PerlInt
        a2 = 87
          .sym pmc a3
        a3 = new PerlString
        a3 = "3.87"
          .sym pmc a4
        a4 = new PerlString
          a4 = "21000000"
        .sym pmc x
        x = new PerlInt
          x = 500000
  AGAIN:
          dec x
          lt x, 0, FIN
        .sym pmc result
          result = _varargs_adder(a0, a1, a2, a3, a4)
          branch AGAIN
  FIN:
          print result
          print "\n"
          end
  .end
  
  .sub _varargs_adder
          .param pmc a0
        .param pmc a1
        .param pmc a2
        .param pmc a3
        .param pmc a4
          .sym pmc sum
        sum = new PerlNum
          add sum, a0
          add sum, a1
          add sum, a2
          add sum, a3
          add sum, a4
          .pcc_begin_return
        .return sum
        .pcc_end_return
  .end
  
  
  
  1.1                  parrot/examples/benchmarks/addit.pasm
  
  Index: addit.pasm
  ===================================================================
  _main:
          new P5, .PerlArray
          push P5, 1000
          push P5, 7.100
          push P5, 87
          push P5, "3.87"
          push P5, "21000000"
          set I9, 500000
  AGAIN:
          dec I9
          lt I9, 0, FIN
          bsr _varargs_adder
          branch AGAIN
  FIN:
          print N5
          print "\n"
          end
  
  _varargs_adder:
          new P2, .PerlNum
          set I1, P5
  LOOP:
          dec I1
          lt I1, 0, DONE
          set P1, P5[I1]
          add P2, P1
          branch LOOP
  DONE:
          set N5, P2
          ret
  
  
  
  1.1                  parrot/examples/benchmarks/addit.pl
  
  Index: addit.pl
  ===================================================================
  #!/usr/bin/perl
  #
  # addit.pl
  #
  use strict;
  sub varargs_adder {
      my $sum = 0;
      for (my $a = $#_; $a >= 0; --$a) {
          $sum += $_[$a];
      }
      return $sum
  }
  my $result = 0;
  my @args;
  $args[0] = 1000;
  $args[1] = 7.100;
  $args[2] = 87;
  $args[3] = "3.87";
  $args[4] = "21000000";
  for (my $x = 500000; $x >= 0; --$x) {
      $result = varargs_adder(@args);
  }
  print "$result\n";
  
  
  
  1.1                  parrot/examples/benchmarks/addit2.imc
  
  Index: addit2.imc
  ===================================================================
  .sub _main
          .sym pmc a0
        a0 = new PerlInt
        a0 = 1000
          .sym pmc a1
        a1 = new PerlNum
        a1 = 7.100
          .sym pmc a2
        a2 = new PerlInt
        a2 = 87
          .sym pmc a3
        a3 = new PerlString
        a3 = "3.87"
          .sym pmc a4
        a4 = new PerlString
          a4 = "21000000"
        .sym pmc x
        x = new PerlInt
          x = 500000
        # create retcontinuation outside loop
        newsub .Sub, .RetContinuation, _varargs_adder, back
        # .pcc_call needs symbols
        .sym pmc adder
        adder = P0
        .sym pmc retcont
        retcont = P1
        .sym pmc result
  AGAIN:
          dec x
          lt x, 0, FIN
        .pcc_begin prototyped
        .arg a0
        .arg a1
        .arg a2
        .arg a3
        .arg a4
        .pcc_call adder, retcont
  back:
        .result result
        .pcc_end
          branch AGAIN
  FIN:
          print result
          print "\n"
          end
  .end
  
  .sub _varargs_adder prototyped
          .param pmc a0
        .param pmc a1
        .param pmc a2
        .param pmc a3
        .param pmc a4
          .sym pmc sum
        sum = new PerlNum
          add sum, a0
          add sum, a1
          add sum, a2
          add sum, a3
          add sum, a4
          .pcc_begin_return
        .return sum
        .pcc_end_return
  .end
  
  
  

Reply via email to