SIMD module

operator+

procedure · 2 overloadsSource

Adds two vectors lane by lane.

Integer lanes wrap on overflow, with no overflow check.

ExampleOpen in playground ↗
a := set(4, cast(s32) 3);
sum := a + set(4, cast(s32) 5);
assert(sum.data[0] == 8 && sum.data[3] == 8);
assert((a + cast(s32) 1).data[0] == 4);
assert((cast(s32) 1 + a).data[0] == 4);
operator+ :: (a: $T/SIMD_Array, b: T) -> T

Adds two vectors lane by lane.

Integer lanes wrap on overflow, with no overflow check.

Parameters

b: T

Returns

T
ExampleOpen in playground ↗
a := set(4, cast(s32) 3);
sum := a + set(4, cast(s32) 5);
assert(sum.data[0] == 8 && sum.data[3] == 8);
assert((a + cast(s32) 1).data[0] == 4);
assert((cast(s32) 1 + a).data[0] == 4);
operator+ :: (a: $T/SIMD_Array, factor: a.type) -> T

Adds factor to every lane. The scalar can be on either side.

Parameters

factor: a.type

Returns

T

See also