Skip to content

Commit

Permalink
Force potentially missing vectorization with zeroing arrays.
Browse files Browse the repository at this point in the history
  • Loading branch information
cxd4 committed Jan 28, 2015
1 parent 14ff3d4 commit 34819b5
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 50 deletions.
25 changes: 12 additions & 13 deletions vu/add.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/******************************************************************************\
* Project: MSP Simulation Layer for Vector Unit Computational Adds *
* Authors: Iconoclast *
* Release: 2015.01.27 *
* Release: 2015.01.28 *
* License: CC0 Public Domain Dedication *
* *
* To the extent possible under law, the author(s) have dedicated all copyright *
Expand Down Expand Up @@ -120,10 +120,10 @@ INLINE static void clr_ci(pi16 VD, pi16 VS, pi16 VT)
for (i = 0; i < N; i++)
VACC_L[i] = VS[i] + VT[i] + co[i];
SIGNED_CLAMP_ADD(VD, VS, VT);
for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;

/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);
return;
}

Expand All @@ -134,10 +134,10 @@ INLINE static void clr_bi(pi16 VD, pi16 VS, pi16 VT)
for (i = 0; i < N; i++)
VACC_L[i] = VS[i] - VT[i] - co[i];
SIGNED_CLAMP_SUB(VD, VS, VT);
for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;

/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);
return;
}

Expand All @@ -162,8 +162,7 @@ INLINE static void do_abs(pi16 VD, pi16 VS, pi16 VT)
neg[i] = (VS[i] < 0x0000);
for (i = 0; i < N; i++)
pos[i] = (VS[i] > 0x0000);
for (i = 0; i < N; i++)
nez[i] = 0;
vector_wipe(nez);

for (i = 0; i < N; i++)
nez[i] -= neg[i];
Expand All @@ -189,8 +188,8 @@ INLINE static void set_co(pi16 VD, pi16 VS, pi16 VT)
for (i = 0; i < N; i++)
VACC_L[i] = VS[i] + VT[i];
vector_copy(VD, VACC_L);
for (i = 0; i < N; i++)
ne[i] = 0;

vector_wipe(ne);
for (i = 0; i < N; i++)
co[i] = sum[i] >> 16; /* native: (sum[i] > +65535) */
return;
Expand Down
74 changes: 37 additions & 37 deletions vu/select.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/******************************************************************************\
* Project: MSP Simulation Layer for Vector Unit Computational Test Selects *
* Authors: Iconoclast *
* Release: 2015.01.18 *
* Release: 2015.01.28 *
* License: CC0 Public Domain Dedication *
* *
* To the extent possible under law, the author(s) have dedicated all copyright *
Expand Down Expand Up @@ -57,28 +57,26 @@ INLINE static void do_lt(pi16 VD, pi16 VS, pi16 VT)
cn[i] = ne[i] & co[i];
for (i = 0; i < N; i++)
eq[i] = eq[i] & cn[i];
for (i = 0; i < N; i++)
clip[i] = 0;
for (i = 0; i < N; i++)
comp[i] = (VS[i] < VT[i]); /* less than */
for (i = 0; i < N; i++)
comp[i] = comp[i] | eq[i]; /* ... or equal (uncommonly) */

merge(VACC_L, comp, VS, VT);
vector_copy(VD, VACC_L);
for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;

/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);

vector_wipe(clip);
return;
}

INLINE static void do_eq(pi16 VD, pi16 VS, pi16 VT)
{
register int i;

for (i = 0; i < N; i++)
clip[i] = 0;
for (i = 0; i < N; i++)
comp[i] = (VS[i] == VT[i]);
for (i = 0; i < N; i++)
Expand All @@ -90,19 +88,18 @@ INLINE static void do_eq(pi16 VD, pi16 VS, pi16 VT)
#endif
vector_copy(VD, VACC_L);

for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;
/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);

vector_wipe(clip);
return;
}

INLINE static void do_ne(pi16 VD, pi16 VS, pi16 VT)
{
register int i;

for (i = 0; i < N; i++)
clip[i] = 0;
for (i = 0; i < N; i++)
comp[i] = (VS[i] != VT[i]);
for (i = 0; i < N; i++)
Expand All @@ -114,10 +111,11 @@ INLINE static void do_ne(pi16 VD, pi16 VS, pi16 VT)
#endif
vector_copy(VD, VACC_L);

for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;
/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);

vector_wipe(clip);
return;
}

Expand All @@ -133,19 +131,19 @@ INLINE static void do_ge(pi16 VD, pi16 VS, pi16 VT)
ce[i] = (ne[i] & co[i]) ^ 1;
for (i = 0; i < N; i++)
eq[i] = eq[i] & ce[i];
for (i = 0; i < N; i++)
clip[i] = 0;
for (i = 0; i < N; i++)
comp[i] = (VS[i] > VT[i]); /* greater than */
for (i = 0; i < N; i++)
comp[i] = comp[i] | eq[i]; /* ... or equal (commonly) */

merge(VACC_L, comp, VS, VT);
vector_copy(VD, VACC_L);
for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;

/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);

vector_wipe(clip);
return;
}

Expand Down Expand Up @@ -211,14 +209,15 @@ INLINE static void do_cl(pi16 VD, pi16 VS, pi16 VT)
merge(VACC_L, cmp, (pi16)VC, VS);
vector_copy(VD, VACC_L);

/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);

vector_copy(clip, ge);
vector_copy(comp, le);
for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;
for (i = 0; i < N; i++)
vce[i] = 0;

/* CTC2 $0, $vce # zeroing RSP flags VCF[2] */
vector_wipe(vce);
return;
}

Expand Down Expand Up @@ -326,14 +325,15 @@ INLINE static void do_cr(pi16 VD, pi16 VS, pi16 VT)
merge(VACC_L, cmp, VC, VS);
vector_copy(VD, VACC_L);

/* CTC2 $0, $vco # zeroing RSP flags VCF[0] */
vector_wipe(ne);
vector_wipe(co);

vector_copy(clip, ge);
vector_copy(comp, le);
for (i = 0; i < N; i++)
ne[i] = 0;
for (i = 0; i < N; i++)
co[i] = 0;
for (i = 0; i < N; i++)
vce[i] = 0;

/* CTC2 $0, $vce # zeroing RSP flags VCF[2] */
vector_wipe(vce);
return;
}

Expand Down

0 comments on commit 34819b5

Please sign in to comment.