Skip to content

Commit

Permalink
Added Unrolled_1: Inner loop unrolled fully
Browse files Browse the repository at this point in the history
  • Loading branch information
pzemtsov committed May 2, 2014
1 parent b2d647e commit ba6a1e7
Showing 1 changed file with 52 additions and 2 deletions.
54 changes: 52 additions & 2 deletions E1.java
@@ -1,4 +1,4 @@
/** E1 demultiplexer, revision 9
/** E1 demultiplexer, revision 10
* Created reference implementation
* Added test and measurement code
* Added correctness test
Expand All @@ -13,6 +13,9 @@
* Added Dst_First_1: Similar to Src_First_2 but different order of loops
* Added Dst_First_2: Dst_First_1 manually optimised
* Added Dst_First_3: Dst_First_1 with hard-coded array size
*
* Started unrolled family (based on Dst_First_1)
* Added Unrolled_1: Inner loop unrolled fully
*/

import java.util.Random;
Expand Down Expand Up @@ -186,6 +189,52 @@ public void demux (byte[] src, byte[][] dst)
}
}

static final class Unrolled_1 implements Demux
{
public void demux (byte[] src, byte[][] dst)
{
assert NUM_TIMESLOTS == 32;
assert DST_SIZE == 64;
assert src.length == NUM_TIMESLOTS * DST_SIZE;

for (int j = 0; j < NUM_TIMESLOTS; j++) {
final byte[] d = dst[j];
d[ 0] = src[j+32* 0]; d[ 1] = src[j+32* 1];
d[ 2] = src[j+32* 2]; d[ 3] = src[j+32* 3];
d[ 4] = src[j+32* 4]; d[ 5] = src[j+32* 5];
d[ 6] = src[j+32* 6]; d[ 7] = src[j+32* 7];
d[ 8] = src[j+32* 8]; d[ 9] = src[j+32* 9];
d[10] = src[j+32*10]; d[11] = src[j+32*11];
d[12] = src[j+32*12]; d[13] = src[j+32*13];
d[14] = src[j+32*14]; d[15] = src[j+32*15];
d[16] = src[j+32*16]; d[17] = src[j+32*17];
d[18] = src[j+32*18]; d[19] = src[j+32*19];
d[20] = src[j+32*20]; d[21] = src[j+32*21];
d[22] = src[j+32*22]; d[23] = src[j+32*23];
d[24] = src[j+32*24]; d[25] = src[j+32*25];
d[26] = src[j+32*26]; d[27] = src[j+32*27];
d[28] = src[j+32*28]; d[29] = src[j+32*29];
d[30] = src[j+32*30]; d[31] = src[j+32*31];
d[32] = src[j+32*32]; d[33] = src[j+32*33];
d[34] = src[j+32*34]; d[35] = src[j+32*35];
d[36] = src[j+32*36]; d[37] = src[j+32*37];
d[38] = src[j+32*38]; d[39] = src[j+32*39];
d[40] = src[j+32*40]; d[41] = src[j+32*41];
d[42] = src[j+32*42]; d[43] = src[j+32*43];
d[44] = src[j+32*44]; d[45] = src[j+32*45];
d[46] = src[j+32*46]; d[47] = src[j+32*47];
d[48] = src[j+32*48]; d[49] = src[j+32*49];
d[50] = src[j+32*50]; d[51] = src[j+32*51];
d[52] = src[j+32*52]; d[53] = src[j+32*53];
d[54] = src[j+32*54]; d[55] = src[j+32*55];
d[56] = src[j+32*56]; d[57] = src[j+32*57];
d[58] = src[j+32*58]; d[59] = src[j+32*59];
d[60] = src[j+32*60]; d[61] = src[j+32*61];
d[62] = src[j+32*62]; d[63] = src[j+32*63];
}
}
}

public static void main (String [] args)
{
// measure (new Reference ());
Expand All @@ -194,6 +243,7 @@ public static void main (String [] args)
// measure (new Src_First_3 ());
// measure (new Dst_First_1 ());
// measure (new Dst_First_2 ());
measure (new Dst_First_3 ());
// measure (new Dst_First_3 ());
measure (new Unrolled_1 ());
}
}

0 comments on commit ba6a1e7

Please sign in to comment.