Skip to content

Consider passing and returning Vector<T> in registers #5040

@CarolEidt

Description

@CarolEidt

Currently, even under the Unix amd64 ABI, Vector is always passed on the stack. However, since it is not (and can't easily become) an interop type, it would be reasonable to pass and return these structs in registers (since they are, by definition, the size of the SIMD registers supported on the target, if present). This would require work in both the vm and jit. Note that for the unix ABI, the classification of the type is done after the call to CheckIfSIMDAndUpdateSize(), so it would already be appropriately marked at that time.

category:cq
theme:calling-convention
skill-level:expert
cost:medium
impact:large

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIarea-VM-coreclrenhancementProduct code improvement that does NOT require public API changes/additionsoptimizationtenet-performancePerformance related issue

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions