mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
61 lines
2.3 KiB
D
61 lines
2.3 KiB
D
// 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;
|
|
}}
|
|
}
|
|
}
|