Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[mono][amd64] Pass and return SIMD values in SIMD registers. #93182

Closed
wants to merge 6 commits into from

Commits on Nov 6, 2023

  1. Configuration menu
    Copy the full SHA
    ae616fa View commit details
    Browse the repository at this point in the history
  2. Pass simd arguments using a different xmove_arg opcode.

    XMOVE can be optimized away which creates problems if the argument is on the stack, since
    mono_spill_global_vars () doesn't process call arguments, it only processes the move
    instructions before it. If a normal argument is on the stack, it means its volatile/indirect,
    so its move is not optimized away, but for simd args, they can become indirect when
    the xcall opcode is decomposed which can happen after the xmove was optimized away, so
    we end up with code like:
    
    ```
    ldaddr R19 <- R20
     vcall2
    voidcall [..] [s:xmm0 <- R20]
    ```
    vargaz committed Nov 6, 2023
    Configuration menu
    Copy the full SHA
    e97315b View commit details
    Browse the repository at this point in the history
  3. More fixes.

    vargaz committed Nov 6, 2023
    Configuration menu
    Copy the full SHA
    7e0872d View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    7895482 View commit details
    Browse the repository at this point in the history
  5. Implement dyncall support.

    vargaz committed Nov 6, 2023
    Configuration menu
    Copy the full SHA
    e81c022 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    d89493a View commit details
    Browse the repository at this point in the history