CT_00_038 - mem* and str* -- inline expansion in GLIBC implementation

CT_00_038 - mem* and str* -- inline expansion in GLIBC implementation

About

Glibc provides generic versions of all the relevant routines and needs both scalar and vector implementations with automatic selection via ifuncs.

 

 

 

 

Stakeholders/Partners

RISE:

Ventana: Jeff & Robin

Rivos: Palmer & Sergei

 

External:

                    VRULL: Christoph Muller

                    EMBECOSM: Joern Rennecke

 

 

Dependencies

 

Status

Development

COMPLETE

 

Development Timeline

1H2024

 

Upstreaming

IN PROGRESS

 

Upstream Version

 

glibc-2.41 (target)
Winter 2024

 

 

 

Contacts

Jeff Law (Ventana)

 

Dependencies

None

 

 

Updates

Nov 6, 2024 

  • Vectorized memset accepted by glibc project, pending one trivial fix.

  • Should be able to stamp out the rest trivially now

Oct 9, 2024 

  • Ventana has changes which wire up the vector str*/mem* routines from SiFive & Rivos as well as scalar versions of VRULL into ifunc/hwprobe framework

  • Tested on BPI & QEMU to verify we get into the appropriate routine based on the result of the hwprobe query

    • Did expose minor bugs in the VRULL scalar implementations which have since been fixed

  • Upstream doesn't want the str* scalar implementations in their current form

    • Rather than full raw assembly routines, use C versions with the magic twiddles to enable using orc.b and such

    • Not currently planning to implement this (focused on vector), but someone else certainly could

Jun 29, 2024

  • GLIBC effort broken out into a distinct 2H2024 work item