| // REQUIRED_ARGS: |
| // PERMUTE_ARGS: -mcpu=native |
| // https://issues.dlang.org/show_bug.cgi?id=21040 |
| |
| import core.simd; |
| |
| alias AliasSeq(A ...) = A; |
| |
| void main() |
| { |
| static foreach (T; AliasSeq!( |
| float[8], float[4], double[4], double[2], |
| byte[32], ubyte[32], byte[16], ubyte[16], |
| short[16], ushort[16], short[8], ushort[8], |
| int[8], uint[8], int[4], uint[4], |
| long[4], ulong[4], long[2], ulong[2], |
| void[32], void[16])) |
| { |
| static if (__traits(compiles, __vector(T))) |
| {{ |
| __vector(T) v; |
| |
| static if (__traits(compiles, { __vector(T) x = 2; })) |
| v = 2; |
| static if (__traits(compiles, { __vector(T) x; x = +x; })) |
| v = +v; |
| static if (__traits(compiles, { __vector(T) x; x = -x; })) |
| v = -v; |
| static if (__traits(compiles, { __vector(T) x; x = x + x; })) |
| v = v + v; |
| static if (__traits(compiles, { __vector(T) x; x += 2; })) |
| v += 2; |
| static if (__traits(compiles, { __vector(T) x; x = x - x; })) |
| v = v - v; |
| static if (__traits(compiles, { __vector(T) x; x -= 2; })) |
| v -= 2; |
| static if (__traits(compiles, { __vector(T) x; x = x * x; })) |
| v = v * v; |
| static if (__traits(compiles, { __vector(T) x; x *= 2; })) |
| v *= 2; |
| static if (__traits(compiles, { __vector(T) x; x = x / x; })) |
| v = v / v; |
| static if (__traits(compiles, { __vector(T) x; x /= 2; })) |
| v /= 2; |
| static if (__traits(compiles, { __vector(T) x; x = x & x; })) |
| v = v & v; |
| static if (__traits(compiles, { __vector(T) x; x &= 2; })) |
| v &= 2; |
| static if (__traits(compiles, { __vector(T) x; x = x | x; })) |
| v = v | v; |
| static if (__traits(compiles, { __vector(T) x; x |= 2; })) |
| v |= 2; |
| static if (__traits(compiles, { __vector(T) x; x = x ^ x; })) |
| v = v ^ v; |
| static if (__traits(compiles, { __vector(T) x; x ^= 2; })) |
| v ^= 2; |
| static if (__traits(compiles, { __vector(T) x; x = ~x; })) |
| v = ~v; |
| }} |
| } |
| } |