linebender / linebender/fearless_simd

swizzle_dyn with non-matching table/indexes sizes

Open
#353 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
457
Forks
30
Avg merge
1d 10h
Merged PRs (30d)
25

Description

Currently, the `swizzle_dyn` family of functions require the length of the table and indexes to match.

However, it's useful to allow them to differ, in both ways:

Larger tables, even with shorter indexes, like Neon's tbl instruction (see also `concat_swizzle_dyn` from #349)

Using a short table, but allowing larger sizes of index vectors. E.g. with this 32 item table, swizzle for these 16/32/64 indexes, or even `S::u8s` indexes.

The only thing is to avoid too much of a combinatorial explosion.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the swizzle_dyn family of functions and the concat_swizzle_dyn work referenced in issue #349. Compare the supported table and index sizes, then determine an API shape that permits both size mismatches without a combinatorial explosion. Done means the differing-size cases described in the issue are supported and covered by the project’s tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.