mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 10:33:59 -05:00
* Make Rust examples more idiomatic * Make 'non-idiomatic' example match the aligned version * Rename examples
14 lines
397 B
Rust
14 lines
397 B
Rust
// Compile with -C opt-level=3 -C target-cpu=native to see autovectorization
|
|
|
|
// assumes input is aligned on 64-byte boundary and that
|
|
// input's length is a multiple of 64.
|
|
pub fn sum_array(input: &[i32]) -> i32 {
|
|
if input.len() & 63 != 0 {
|
|
unsafe { std::hint::unreachable_unchecked() }
|
|
}
|
|
|
|
(0..input.len())
|
|
.map(|i| unsafe { *input.as_ptr().add(i) })
|
|
.sum()
|
|
}
|