You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IRToASTVisitor: handle fixed-vector insertion, extraction and shuffle #350
Observed failure: Instruction not supported: insertelement <8 x i8>.
Expected: recompilable C preserving the original input vector, selected
lane, shuffle indices and exact memory-access byte counts.
The generic implementation copies the input vector into a temporary for
insertion, uses vector subscripting for extraction, and emits __builtin_shufflevector for shuffle masks. Vector operations with align 1
need byte-count compiler-builtin memory copies instead of naturally aligned
C vector-pointer dereferences; otherwise recompilation can replace movups/movdqu with alignment-requiring movaps/movdqa.
The attached full synthetic module has 14 scalar/pointer-interface exports,
covering constant and masked dynamic indices, byte-vector bitcasts,
reverse/splat/two-input shuffles, different result lengths and unaligned
vector loads/stores. Its whole-DLL comparison covers every export. Six bodies
are byte-identical; seven pairs contain identical instructions reordered;
one uses a different SIMD instruction selection. Those nonexact differences
remain visible and are not presented as semantic-equivalence proof.
Tested at public fork c2b4695dd220ab4249914a8d4d52556e036e9f08
with LLVM/Clang 17.0.6. Upstream 370abaad lacks the three instruction visitors
by source inspection; a clean upstream runtime build is not claimed.
Historical PR #175 added vector types/constants, not these lane visitors.
No exact duplicate was found in the repository issue/PR search.
Activity