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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
libs optimize zipping over array iterators 2023-10-06 18:33:25 +02:00
nvptx-kernel-abi Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
aarch64-pointer-auth.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
align_offset.rs Update the minimum external LLVM to 14 2023-02-10 16:06:25 -08:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
is_aligned.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
niche-prefer-zero.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-arch-default.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-arch-emit-asm.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-arch-link-arg.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-arch-target-cpu.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-atomics.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-internalizing.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-linking-binary.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-linking-cdylib.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nvptx-safe-naming.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
option-nonzero-eq.rs Also assume wrap-around discriminants in as MIR building 2023-05-18 10:28:36 -07:00
panic-no-unwind-no-uwtable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
panic-unwind-no-uwtable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pic-relocation-model.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pie-relocation-model.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
slice-is_ascii.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
sparc-struct-abi.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
static-relocation-model.rs Add ignore-debug to static-relocation-model test 2023-03-29 09:54:01 -04:00
strict_provenance.rs Update the minimum external LLVM to 15 2023-07-27 14:07:08 -07:00
target-feature-multiple.rs Change src/test to tests in source files, fix tidy and tests 2023-01-11 09:32:13 +00:00
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 Ignore LVI incompatible assembly tests on sgx platform 2023-03-10 16:04:37 +01:00
x86_64-fortanix-unknown-sgx-lvi-generic-load.rs Fix LVI generic load test 2023-03-10 16:01:40 +01:00
x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs Fix LVI inline assembly test 2023-03-10 16:04:21 +01:00
x86_64-naked-fn-no-cet-prolog.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
x86_64-no-jump-tables.rs Ignore LVI incompatible assembly tests on sgx platform 2023-03-10 16:04:37 +01:00
x86_64-sse_crc.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
x86-stack-probes.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00