rust/library/core/tests
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
..
fmt
hash
iter optimize zipping over array iterators 2023-10-06 18:33:25 +02:00
net
num isqrt: disable long running tests in Miri 2023-09-28 17:43:01 +02:00
ops
panic
alloc.rs
any.rs
array.rs MIRI -> Miri 2023-10-02 08:35:08 +02:00
ascii.rs
asserting.rs
atomic.rs
bool.rs
cell.rs
char.rs
clone.rs
cmp.rs
const_ptr.rs
convert.rs
error.rs
future.rs
intrinsics.rs
lazy.rs
lib.rs Auto merge of #116233 - DaniPopes:stabilize-const_maybe_uninit_assume_init_read, r=dtolnay 2023-10-13 17:11:03 +00:00
macros.rs Add the cfg_match! macro 2023-09-23 14:23:51 -03:00
manually_drop.rs
mem.rs
nonzero.rs
ops.rs
option.rs
panic.rs
pattern.rs
pin_macro.rs
pin.rs
ptr.rs
result.rs
simd.rs
slice.rs Auto merge of #112818 - Benjamin-L:add-slice_split_once, r=cuviper 2023-10-11 08:19:13 +00:00
str_lossy.rs
str.rs
task.rs
time.rs
tuple.rs
unicode.rs
waker.rs