Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-1788

[drlvm][jit][abcd] Inequality graph generation from HIR

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • DRLVM
    • None
    • all
    • Moderate

    Description

      new files [vm.zip]:
      vm/jitrino/src/optimizer/abcd/AbcdFlags.h
      vm/jitrino/src/optimizer/abcd/insertpi.cpp
      vm/jitrino/src/optimizer/abcd/classic_abcd.h
      vm/jitrino/src/optimizer/abcd/insertpi.h
      vm/jitrino/src/optimizer/abcd/classic_abcd.cpp
      vm/jitrino/config/ia32/abcd_static.emconf

      This issue depends on HARMONY-1564.

      Features:

      • new optimization pass added (classic_abcd), off by default
      • old optimization pass (abcd) is preserved to work with no change
        (with bug fixed by Naveen in HARMONY-1564)
        the fix should NOT visibly affect anyone (!!!)
      • new EM config file for easier ABCD development (abcd_static.emconf)
        (use java -Xem:abcd_static Hello)
      • Pi instructions are now inserted by the separate class (InsertPi)
        that is reused between both old and new ABCD algorithms
      • Inequality graph can be printed to a .dot file on request.
        Do it like this for method "main":
        java -Xem:abcd_static -Djit.p.filter=.main -Djit.p.arg.log=ct,irdump,dotdump
        and find inequality.graph.dot
        ("dot -Tpng inequality.graph.dot > viewme.png")
      • checked on gcc 3.3.3 Linux/ia32
      • HelloWorld passed in the new mode, does not affect other modes
      • against r454400

      Instructions on how to apply both contributions.

      Suppose you have all files in working_vm/abcd_update:
      abcd.patch (Naveen, HARMONY-1564)
      abcd-original.tar.gz (Egor, HARMONY-1564)
      naveen_2.patch (Naveen, HARMONY-1564)
      enable-inequality-graph-building.patch.txt
      vm.zip

      $ cd working_vm
      $ patch -p0 <abcd_update/abcd.patch
      $ tar zxvf abcd_update/abcd-original.tar.gz
      $ patch -p0 <../abcd_update/naveen_2.patch
      $ mv * ../vm/jitrino/src/optimizer/abcd/
      $ cd ..
      $ rm -rf abcd-original/
      $ unzip abcd_update/vm.zip
      $ patch -p1 <abcd_update/enable-inequality-graph-building.patch.txt

      What is left to do for the new ABCD:

      • teach the optimization to invoke the solver
        (detect array lengths, bounds checking operands)
      • acquire not-a-small amount of tests
      • fix bugs
      • improve the algorithm supporting semantics of more more operations
        such as Op_Conv, etc.

      Attachments

        1. enable-inequality-graph-building.patch.txt
          68 kB
          Egor Pasko
        2. vm.zip
          17 kB
          Egor Pasko
        3. abcd_update_1.patch
          13 kB
          Naveen Neelakantam
        4. abcd_update_1_full.patch
          183 kB
          Naveen Neelakantam
        5. full_abcd_updated_20070425.diff
          255 kB
          Pavel Ozhdikhin
        6. assert_logs.zip
          156 kB
          Pavel Ozhdikhin
        7. full_abcd_updated_20070503.patch
          189 kB
          Pavel Ozhdikhin
        8. full_abcd_20070531.patch
          191 kB
          Pavel Ozhdikhin
        9. regression_tests_1788.diff
          4 kB
          Pavel Ozhdikhin
        10. full_abcd_updated_20070604.patch
          193 kB
          Pavel Ozhdikhin
        11. full_abcd_updated_20070604_1.patch
          193 kB
          Pavel Ozhdikhin

        Issue Links

          Activity

            People

              varlax Alexey Varlamov
              egor Egor Pasko
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: