I would think that something simple like
let mut sum = 0;
for x in some_int_array.iter() {
sum += x;
}
would be very hard to vectorise with unwinding integer operations.
It sounds like there are two problems. First, you need to give up on
precise exceptions. So the code becomes something line:
let mut sum = 0;
overflow = false
for x in some_int_array.iter() {
(sum,o) = x+sum
overflow |= o
}
if (overflow) deal with it
The other problem is that as far as I know AVX doesn't store the overflow
bits for integer vector operations and recovering these bits another way
isn't necessarily cheap.
In an earlier mail Patrick said that AIR integers are research and using
research results is risky. This is true but keep in mind that Ada's
approach to integer overflows is substantially similar to AIR, and Ada is
not a research language.
John
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev