blob: 52027a2aa2399e72b05c44f0cf944182a7747eba [file] [log] [blame]
// https://issues.dlang.org/show_bug.cgi?id=16488
// { dg-additional-options "-mavx2" { target avx2_runtime } }
// { dg-do run { target { avx2_runtime || vect_sizes_32B_16B } } }
// { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
import core.simd;
void foo_byte32(byte t, byte s)
{
byte32 f = s;
auto p = cast(byte*)&f;
foreach (i; 0 .. 32)
assert(p[i] == s);
}
void foo_ubyte32(ubyte t, ubyte s)
{
ubyte32 f = s;
auto p = cast(ubyte*)&f;
foreach (i; 0 .. 32)
assert(p[i] == s);
}
void foo_short16(short t, short s)
{
short16 f = s;
auto p = cast(short*)&f;
foreach (i; 0 .. 16)
assert(p[i] == s);
}
void foo_ushort16(ushort t, ushort s)
{
ushort16 f = s;
auto p = cast(ushort*)&f;
foreach (i; 0 .. 16)
assert(p[i] == s);
}
void foo_int8(int t, int s)
{
int8 f = s;
auto p = cast(int*)&f;
foreach (i; 0 .. 8)
assert(p[i] == s);
}
void foo_uint8(uint t, uint s, uint u)
{
uint8 f = s;
auto p = cast(uint*)&f;
foreach (i; 0 .. 8)
assert(p[i] == s);
}
void foo_long4(long t, long s, long u)
{
long4 f = s;
auto p = cast(long*)&f;
foreach (i; 0 .. 4)
assert(p[i] == s);
}
void foo_ulong4(ulong t, ulong s)
{
ulong4 f = s;
auto p = cast(ulong*)&f;
foreach (i; 0 .. 4)
assert(p[i] == s);
}
void foo_float8(float t, float s)
{
float8 f = s;
auto p = cast(float*)&f;
foreach (i; 0 .. 8)
assert(p[i] == s);
}
void foo_double4(double t, double s, double u)
{
double4 f = s;
auto p = cast(double*)&f;
foreach (i; 0 .. 4)
assert(p[i] == s);
}
void main()
{
foo_byte32(5, -10);
foo_ubyte32(5, 11);
foo_short16(5, -6);
foo_short16(5, 7);
foo_int8(5, -6);
foo_uint8(5, 0x12345678, 22);
foo_long4(5, -6, 1);
foo_ulong4(5, 0x12345678_87654321L);
foo_float8(5, -6);
foo_double4(5, -6, 2);
}