Skip to content

Get Cranelifted #40

Open
Open
@workingjubilee

Description

@workingjubilee

Per the conversation on Zulip in t-compiler and project-portable-simd, we are going to find Cranelift landing a direct challenge to our landing in std, because the last one in is a rotten egg has to implement support for the other... but while we could "race" them, it seems integration might require a total redesign anyways. So, collaboration! But we need to

  1. Figure out what Cranelift needs from us
  2. Figure out what we need from Cranelift
  3. Figure out what additional consequences landing std::simd has for Cranelift support
  4. Figure out what additional consequences landing Cranelift support has for std::simd
  5. Solve all that

@bjorn3 said:

I hope most if not all of the operations used by portable simd could use (newly introduced) simd_* platform intrinsics that are architecture and vector size independent. This would allow easy emulation of them implemented once per operation.

This has led to some immediate questions:

  1. What exactly are "platform-intrinsics" supposed to be? Our current understanding is that they're LLVM ops... but Cranelift isn't LLVM, obviously. So...
  2. What changes about them when moving from LLVM to Cranelift?
  3. What does this do for SIMD FFI?
  4. Can we find a way around the SIMD FFI question?

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: LLVMA-craneliftRust's other codegen backend, coming Soon™A-simdArea: SIMD. Put this on tracking issues to help with cross-repo issue organizationC-feature-requestCategory: a feature request, i.e. not implemented / a PRC-tracking-issueOngoing issue with checkboxes for partial progress and suchE-hardCall for participation. Experience needed: Hard.F-simd_ffi`#![feature(simd_ffi)]`blocks-nightly

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions