rust/tests/assembly
bors 0d410be23c Auto merge of #115515 - the8472:zip-for-arrays, r=scottmcm
optimize zipping over array iterators

Fixes #115339 (somewhat)

the new assembly:

```asm
zip_arrays:
        .cfi_startproc
        vmovups (%rdx), %ymm0
        leaq    32(%rsi), %rcx
        vxorps  %xmm1, %xmm1, %xmm1
        vmovups %xmm1, -24(%rsp)
        movq    $0, -8(%rsp)
        movq    %rsi, -88(%rsp)
        movq    %rdi, %rax
        movq    %rcx, -80(%rsp)
        vmovups %ymm0, -72(%rsp)
        movq    $0, -40(%rsp)
        movq    $32, -32(%rsp)
        movq    -24(%rsp), %rcx
        vmovups (%rsi,%rcx), %ymm0
        vorps   -72(%rsp,%rcx), %ymm0, %ymm0
        vmovups %ymm0, (%rsi,%rcx)
        vmovups (%rsi), %ymm0
        vmovups %ymm0, (%rdi)
        vzeroupper
        retq
```

This is still longer than the slice version given in the issue but at least it eliminates the terrible  `vpextrb`/`orb` chain. I guess this is due to excessive memcpys again (haven't looked at the llvmir)?

The `TrustedLen` specialization is a drive-by change since I had to do something for the default impl anyway to be able to specialize the `TrustedRandomAccessNoCoerce` impl.
2023-10-15 00:49:21 +00:00
..
asm Fix linkage for large binaries on mips64 platforms ... 2023-05-29 10:57:03 -06:00
auxiliary
libs optimize zipping over array iterators 2023-10-06 18:33:25 +02:00
nvptx-kernel-abi
stack-protector Limit to LLVM 17.0.2 to work around WinEH codegen bug 2023-10-02 11:06:38 +02:00
aarch64-naked-fn-no-bti-prolog.rs
aarch64-pointer-auth.rs
align_offset.rs
closure-inherit-target-feature.rs Add assembly test to make sure that inlining works as expected when closures inherit target features 2023-09-24 16:36:31 +02:00
dwarf5.rs
is_aligned.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
niche-prefer-zero.rs
nvptx-arch-default.rs
nvptx-arch-emit-asm.rs
nvptx-arch-link-arg.rs
nvptx-arch-target-cpu.rs
nvptx-atomics.rs
nvptx-internalizing.rs
nvptx-linking-binary.rs
nvptx-linking-cdylib.rs
nvptx-safe-naming.rs
option-nonzero-eq.rs
panic-no-unwind-no-uwtable.rs
panic-unwind-no-uwtable.rs
pic-relocation-model.rs
pie-relocation-model.rs
slice-is_ascii.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
sparc-struct-abi.rs
static-relocation-model.rs
strict_provenance.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
target-feature-multiple.rs
wasm_exceptions.rs add assembly-test: wasm-exceptions 2023-07-01 20:24:15 +02:00
x86_64-array-pair-load-store-merge.rs Exclude apple from assembly test 2023-10-12 11:03:02 -07:00
x86_64-floating-point-clamp.rs
x86_64-fortanix-unknown-sgx-lvi-generic-load.rs
x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs
x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs
x86_64-naked-fn-no-cet-prolog.rs
x86_64-no-jump-tables.rs
x86_64-sse_crc.rs
x86-stack-probes.rs