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

x64 platforms unecessarily save xmm16-31 when UseAVX >= 3

    XMLWordPrintable

Details

    Description

      Both the Windows x64 and SysV ABIs mark xmm16-31 as volatile not callee-saved:

      Windows [1]:

          On AVX512VL, the ZMM, YMM, and XMM registers 16-31 are also volatile.

      SysV, figure 3.4 Register Usage (page) [2]:

          Register: %xmm16–%xmm31, Usage: temporary registers, callee saved: No

      However, both the Windows x64 and SysV CallArranger don't include these registers in the list of volatile registers, meaning the upcall stubs will needlessly save them when doing an upcall.

      [1]: https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170#callercallee-saved-registers
      [2]: https://gitlab.com/x86-psABIs/x86-64-ABI

      Attachments

        Issue Links

          Activity

            People

              jvernee Jorn Vernee
              jvernee Jorn Vernee
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: