mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-06-04 14:22:43 -06:00
.upptst
git-svn-id: svn://ultimatepp.org/upp/trunk@14700 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
0def3a21b9
commit
bc39cc2a6f
2 changed files with 365 additions and 0 deletions
356
upptst/SIMD2/SIMD2.cpp
Normal file
356
upptst/SIMD2/SIMD2.cpp
Normal file
|
|
@ -0,0 +1,356 @@
|
|||
#include <Core/Core.h>
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
StdLogSetup(LOG_FILE|LOG_COUT);
|
||||
|
||||
{
|
||||
float r[4] = { 0 };
|
||||
DUMP(f32x4(r));
|
||||
|
||||
|
||||
f32x4 x;
|
||||
float y[] = { 1, 2, 3, 4 };
|
||||
x.Load(y);
|
||||
DUMP(x);
|
||||
x.Store32(r);
|
||||
DUMP(f32x4(r));
|
||||
x.Store64(r);
|
||||
DUMP(f32x4(r));
|
||||
x.Store(r);
|
||||
DUMP(f32x4(r));
|
||||
|
||||
float yy[] = { 11, 12 };
|
||||
x.Load32(yy);
|
||||
DUMP(x);
|
||||
x.Load64(yy);
|
||||
DUMP(x);
|
||||
|
||||
DUMP(f32x4((int)1));
|
||||
DUMP(f32x4((float)2));
|
||||
DUMP(f32x4((double)3));
|
||||
|
||||
DUMP(f32x4(11, 22, 33, 44));
|
||||
|
||||
DUMP(f32all(3.14159));
|
||||
|
||||
f32x4 a(1, 2, 3, 4);
|
||||
f32x4 b(2, 2, 2, 2);
|
||||
|
||||
DUMP(a);
|
||||
DUMP(b);
|
||||
DUMP(a + b);
|
||||
DUMP(a - b);
|
||||
DUMP(a * b);
|
||||
DUMP(a / b);
|
||||
DUMP(min(a, b));
|
||||
DUMP(max(a, b));
|
||||
|
||||
DUMP(Broadcast0(a));
|
||||
DUMP(Broadcast1(a));
|
||||
DUMP(Broadcast2(a));
|
||||
DUMP(Broadcast3(a));
|
||||
|
||||
DUMP((a == a));
|
||||
DUMP((a != a));
|
||||
DUMP((a == b));
|
||||
DUMP((a != b));
|
||||
|
||||
DUMP((a < b));
|
||||
DUMP((b < a));
|
||||
|
||||
DUMP((a > b));
|
||||
DUMP((b > a));
|
||||
|
||||
DUMP(AllTrue(a == a));
|
||||
DUMP(AllTrue(a != a));
|
||||
DUMP(AllTrue(a == b));
|
||||
DUMP(AllTrue(a != b));
|
||||
|
||||
b = f32all(5);
|
||||
|
||||
DUMP(AllTrue(a < b));
|
||||
DUMP(AllTrue(b < a));
|
||||
|
||||
DUMP(AllTrue(a > b));
|
||||
DUMP(AllTrue(b > a));
|
||||
|
||||
LOG("==================================");
|
||||
}
|
||||
|
||||
{
|
||||
int16 y[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
|
||||
|
||||
i16x8 x;
|
||||
x.Load32(y);
|
||||
DUMP(x);
|
||||
x.Load64(y);
|
||||
DUMP(x);
|
||||
x.Load(y);
|
||||
DUMP(x);
|
||||
|
||||
int16 r[8] = { 0 };
|
||||
x.Store32(r);
|
||||
DUMP(i16x8(r));
|
||||
x.Store64(r);
|
||||
DUMP(i16x8(r));
|
||||
x.Store(r);
|
||||
DUMP(i16x8(r));
|
||||
|
||||
DUMP(i16x8(13));
|
||||
DUMP(i16all(13));
|
||||
|
||||
i16x8 a(1, 2, 3, 4, 5, 6, 7, 8);
|
||||
i16x8 b(2, 2, 2, 2, 2, 2, 2, 2);
|
||||
|
||||
DUMP(a);
|
||||
DUMP(b);
|
||||
|
||||
DUMP(a + b);
|
||||
DUMP(a - b);
|
||||
DUMP(a * b);
|
||||
|
||||
DUMP(a & b);
|
||||
DUMP(a | b);
|
||||
DUMP(a ^ b);
|
||||
DUMP(~a);
|
||||
|
||||
DUMP(a << 1);
|
||||
DUMP(a >> 1);
|
||||
|
||||
DUMP((a == a));
|
||||
DUMP((a == b));
|
||||
|
||||
DUMP((a < b));
|
||||
DUMP((b < a));
|
||||
|
||||
DUMP((a > b));
|
||||
DUMP((b > a));
|
||||
|
||||
DUMP(AllTrue(a == a));
|
||||
DUMP(AllTrue(a == b));
|
||||
|
||||
b = i16all(10);
|
||||
|
||||
DUMP(AllTrue(a < b));
|
||||
DUMP(AllTrue(b < a));
|
||||
|
||||
DUMP(AllTrue(a > b));
|
||||
DUMP(AllTrue(b > a));
|
||||
}
|
||||
|
||||
{
|
||||
LOG("==========================================================");
|
||||
int y[] = { 1, 2, 3, 4 };
|
||||
|
||||
i32x4 x;
|
||||
x.Load32(y);
|
||||
DUMP(x);
|
||||
x.Load64(y);
|
||||
DUMP(x);
|
||||
x.Load(y);
|
||||
DUMP(x);
|
||||
|
||||
int16 r[8] = { 0 };
|
||||
x.Store32(r);
|
||||
DUMP(i32x4(r));
|
||||
x.Store64(r);
|
||||
DUMP(i32x4(r));
|
||||
x.Store(r);
|
||||
DUMP(i32x4(r));
|
||||
|
||||
DUMP(i32x4(13));
|
||||
DUMP(i32all(13));
|
||||
|
||||
i32x4 a(1, 2, 3, 4);
|
||||
i32x4 b(2, 2, 2, 2);
|
||||
|
||||
DUMP(a);
|
||||
DUMP(b);
|
||||
|
||||
DUMP(a + b);
|
||||
DUMP(a - b);
|
||||
|
||||
DUMP(a & b);
|
||||
DUMP(a | b);
|
||||
DUMP(a ^ b);
|
||||
DUMP(~a);
|
||||
|
||||
DUMP(a << 1);
|
||||
DUMP(a >> 1);
|
||||
|
||||
DUMP((a == a));
|
||||
DUMP((a == b));
|
||||
|
||||
DUMP((a < b));
|
||||
DUMP((b < a));
|
||||
|
||||
DUMP((a > b));
|
||||
DUMP((b > a));
|
||||
|
||||
DUMP(AllTrue(a == a));
|
||||
DUMP(AllTrue(a == b));
|
||||
|
||||
b = i32all(10);
|
||||
|
||||
DUMP(AllTrue(a < b));
|
||||
DUMP(AllTrue(b < a));
|
||||
|
||||
DUMP(AllTrue(a > b));
|
||||
DUMP(AllTrue(b > a));
|
||||
}
|
||||
{
|
||||
LOG("==========================================================");
|
||||
int8 y[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
|
||||
|
||||
i8x16 x;
|
||||
x.Load32(y);
|
||||
DUMP(x);
|
||||
x.Load64(y);
|
||||
DUMP(x);
|
||||
x.Load(y);
|
||||
DUMP(x);
|
||||
|
||||
int16 r[8] = { 0 };
|
||||
x.Store32(r);
|
||||
DUMP(i8x16(r));
|
||||
x.Store64(r);
|
||||
DUMP(i8x16(r));
|
||||
x.Store(r);
|
||||
DUMP(i8x16(r));
|
||||
|
||||
DUMP(i8x16(13));
|
||||
DUMP(i8all(13));
|
||||
|
||||
i8x16 a(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
|
||||
i8x16 b(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
|
||||
|
||||
DUMP(a);
|
||||
DUMP(b);
|
||||
|
||||
DUMP(a + b);
|
||||
DUMP(a - b);
|
||||
|
||||
DUMP(a & b);
|
||||
DUMP(a | b);
|
||||
DUMP(a ^ b);
|
||||
DUMP(~a);
|
||||
}
|
||||
|
||||
{
|
||||
LOG("=========================");
|
||||
i8x16 a(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
|
||||
DUMP(Unpack8L(a));
|
||||
DUMP(Unpack8H(a));
|
||||
i16x8 h = Unpack8H(a);
|
||||
DUMP(Unpack16L(h));
|
||||
DUMP(Unpack16H(h));
|
||||
|
||||
DUMP(Pack16(Unpack8L(a), Unpack8H(a)));
|
||||
DUMP(Pack32(Unpack16L(h)));
|
||||
}
|
||||
{
|
||||
LOG("=========================");
|
||||
i16x8 a(1, 2, 3, 4, 5, 6, 7, 8);
|
||||
|
||||
DUMP(a);
|
||||
DUMP(BroadcastLH0(a));
|
||||
DUMP(BroadcastLH1(a));
|
||||
DUMP(BroadcastLH2(a));
|
||||
DUMP(BroadcastLH3(a));
|
||||
|
||||
auto i64 = i64all(I64(0x123456789abcdef));
|
||||
|
||||
LOGHEXDUMP(&i64, 16);
|
||||
}
|
||||
{
|
||||
LOG("=========================");
|
||||
|
||||
f32x4 x(1, 2, 3, 4);
|
||||
|
||||
float rr[5] = { 0 };
|
||||
float *q = (float *)((byte *)rr + 1);
|
||||
|
||||
x.Store32(q);
|
||||
DDUMP(f32x4(q));
|
||||
x.Store64(q);
|
||||
DDUMP(f32x4(q));
|
||||
x.Store(q);
|
||||
DDUMP(f32x4(q));
|
||||
|
||||
x.Load32(q);
|
||||
DDUMP(x);
|
||||
x.Load64(q);
|
||||
DDUMP(x);
|
||||
x.Load(q);
|
||||
DDUMP(x);
|
||||
}
|
||||
{
|
||||
LOG("=========================");
|
||||
|
||||
i16x8 x(1, 2, 3, 4, 5, 6, 7, 8);
|
||||
|
||||
int16 rr[20] = { 0 };
|
||||
int16 *q = (int16 *)((byte *)rr + 1);
|
||||
|
||||
x.Store32(q);
|
||||
DDUMP(i16x8(q));
|
||||
x.Store64(q);
|
||||
DDUMP(i16x8(q));
|
||||
x.Store(q);
|
||||
DDUMP(i16x8(q));
|
||||
|
||||
x.Load32(q);
|
||||
DDUMP(x);
|
||||
x.Load64(q);
|
||||
DDUMP(x);
|
||||
x.Load(q);
|
||||
DDUMP(x);
|
||||
}
|
||||
{
|
||||
LOG("=========================");
|
||||
|
||||
i32x4 x(1, 2, 3, 4);
|
||||
|
||||
float rr[5] = { 0 };
|
||||
float *q = (float *)((byte *)rr + 1);
|
||||
|
||||
x.Store32(q);
|
||||
DDUMP(i32x4(q));
|
||||
x.Store64(q);
|
||||
DDUMP(i32x4(q));
|
||||
x.Store(q);
|
||||
DDUMP(i32x4(q));
|
||||
|
||||
x.Load32(q);
|
||||
DDUMP(x);
|
||||
x.Load64(q);
|
||||
DDUMP(x);
|
||||
x.Load(q);
|
||||
DDUMP(x);
|
||||
}
|
||||
{
|
||||
LOG("=========================");
|
||||
|
||||
i8x16 x(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
|
||||
|
||||
int16 rr[20] = { 0 };
|
||||
int16 *q = (int16 *)((byte *)rr + 1);
|
||||
|
||||
x.Store32(q);
|
||||
DDUMP(i8x16(q));
|
||||
x.Store64(q);
|
||||
DDUMP(i8x16(q));
|
||||
x.Store(q);
|
||||
DDUMP(i8x16(q));
|
||||
|
||||
x.Load32(q);
|
||||
DDUMP(x);
|
||||
x.Load64(q);
|
||||
DDUMP(x);
|
||||
x.Load(q);
|
||||
DDUMP(x);
|
||||
}
|
||||
}
|
||||
9
upptst/SIMD2/SIMD2.upp
Normal file
9
upptst/SIMD2/SIMD2.upp
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
uses
|
||||
Core;
|
||||
|
||||
file
|
||||
SIMD2.cpp;
|
||||
|
||||
mainconfig
|
||||
"" = "";
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue