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

[s390] assert too strict for some instruction emitters

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P3 P3
    • None
    • 17, 18, 19
    • hotspot
    • s390x
    • linux

      By general convention for address calculations, register r0 is substituted by the value zero, not by the contents of the register r0.

      The RS and RX instruction formats are generally used for instructions which access data in memory. The RX format allows to specify the memory address with three components, a base address (in a register), an index (in a register), and a constant offset. The RS format serves the same purpose, but lacks an index register.

      It is considered an error to specify r0 as base address register when addressing data in memory.

      On the other hand, there are a few instructions which use the RS or RX format, but do not address data in memory. They use the address calculation mechanics to derive a scalar value which is then used as input to the instruction. The shift instructions are one prominent example.

      For such usage of the RS and RX format it is perfectly OK to specify r0 for either or both registers. The checks in the instruction emitters need to be adapted to allow that.

            lucy Lucy Schmidt
            lucy Lucy Schmidt
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: