Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8058880

Introduce identifier TEMP_DEF for effects in adl.

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • 9
    • None
    • hotspot
    • None
    • 9
    • b35


        This effect is similar to USE_DEF, except that a TEMP node will be generated
        that represents the USE.

        With this effect one can express that the def'ed register must be
        different from the used ones corresponding to ins. Currently this is
        already possible by specifying effect TEMP for the operand with effect
        DEF from the match rule.

        Introducing this new identifyer makes the code more readable and
        allows to specify the effect for nodes without match rules.

        An example is an optimized encode node, if the base of the compressed heap
        is 35G aligned, i.e., the shifted narrow oop can be merged with the base by
        an or instruction.
        On PPC we can shift and or with a single instruction:

        decodeN(dst, src):

        mov Rdst = Rbase
        rldimi Rdst = Rdst || (Rsrc << 3)

        As the move is off the critical path, this is superior to do a shift and an add.
        Unfortunately we must guarantee that Rdst != Rsrc. which we do with a TEMP_DEF effect:

        instruct decodeN(iRegPdst dst, iRegNsrc src) %{
          match(Set dst (DecodeN src));
          effect(TEMP_DEF dst);

              goetz Goetz Lindenmaier
              goetz Goetz Lindenmaier
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: