// ************************************************************************** // // // // eses eses // // eses eses // // eses eseses esesese eses Embedded Systems Group // // ese ese ese ese ese // // ese eseseses eseseses ese Department of Computer Science // // eses eses ese eses // // eses eseses eseseses eses University of Kaiserslautern // // eses eses // // // // ************************************************************************** // [128]nat x; thread ParallelPrefixTree_128 { [128]nat y; y[0] = x[0]; y[1] = x[1]; y[2] = x[2]; y[3] = x[3]; y[4] = x[4]; y[5] = x[5]; y[6] = x[6]; y[7] = x[7]; y[8] = x[8]; y[9] = x[9]; y[10] = x[10]; y[11] = x[11]; y[12] = x[12]; y[13] = x[13]; y[14] = x[14]; y[15] = x[15]; y[16] = x[16]; y[17] = x[17]; y[18] = x[18]; y[19] = x[19]; y[20] = x[20]; y[21] = x[21]; y[22] = x[22]; y[23] = x[23]; y[24] = x[24]; y[25] = x[25]; y[26] = x[26]; y[27] = x[27]; y[28] = x[28]; y[29] = x[29]; y[30] = x[30]; y[31] = x[31]; y[32] = x[32]; y[33] = x[33]; y[34] = x[34]; y[35] = x[35]; y[36] = x[36]; y[37] = x[37]; y[38] = x[38]; y[39] = x[39]; y[40] = x[40]; y[41] = x[41]; y[42] = x[42]; y[43] = x[43]; y[44] = x[44]; y[45] = x[45]; y[46] = x[46]; y[47] = x[47]; y[48] = x[48]; y[49] = x[49]; y[50] = x[50]; y[51] = x[51]; y[52] = x[52]; y[53] = x[53]; y[54] = x[54]; y[55] = x[55]; y[56] = x[56]; y[57] = x[57]; y[58] = x[58]; y[59] = x[59]; y[60] = x[60]; y[61] = x[61]; y[62] = x[62]; y[63] = x[63]; y[64] = x[64]; y[65] = x[65]; y[66] = x[66]; y[67] = x[67]; y[68] = x[68]; y[69] = x[69]; y[70] = x[70]; y[71] = x[71]; y[72] = x[72]; y[73] = x[73]; y[74] = x[74]; y[75] = x[75]; y[76] = x[76]; y[77] = x[77]; y[78] = x[78]; y[79] = x[79]; y[80] = x[80]; y[81] = x[81]; y[82] = x[82]; y[83] = x[83]; y[84] = x[84]; y[85] = x[85]; y[86] = x[86]; y[87] = x[87]; y[88] = x[88]; y[89] = x[89]; y[90] = x[90]; y[91] = x[91]; y[92] = x[92]; y[93] = x[93]; y[94] = x[94]; y[95] = x[95]; y[96] = x[96]; y[97] = x[97]; y[98] = x[98]; y[99] = x[99]; y[100] = x[100]; y[101] = x[101]; y[102] = x[102]; y[103] = x[103]; y[104] = x[104]; y[105] = x[105]; y[106] = x[106]; y[107] = x[107]; y[108] = x[108]; y[109] = x[109]; y[110] = x[110]; y[111] = x[111]; y[112] = x[112]; y[113] = x[113]; y[114] = x[114]; y[115] = x[115]; y[116] = x[116]; y[117] = x[117]; y[118] = x[118]; y[119] = x[119]; y[120] = x[120]; y[121] = x[121]; y[122] = x[122]; y[123] = x[123]; y[124] = x[124]; y[125] = x[125]; y[126] = x[126]; y[127] = x[127]; // up-level 0 y[1] = y[0] + y[1]; y[3] = y[2] + y[3]; y[5] = y[4] + y[5]; y[7] = y[6] + y[7]; y[9] = y[8] + y[9]; y[11] = y[10] + y[11]; y[13] = y[12] + y[13]; y[15] = y[14] + y[15]; y[17] = y[16] + y[17]; y[19] = y[18] + y[19]; y[21] = y[20] + y[21]; y[23] = y[22] + y[23]; y[25] = y[24] + y[25]; y[27] = y[26] + y[27]; y[29] = y[28] + y[29]; y[31] = y[30] + y[31]; y[33] = y[32] + y[33]; y[35] = y[34] + y[35]; y[37] = y[36] + y[37]; y[39] = y[38] + y[39]; y[41] = y[40] + y[41]; y[43] = y[42] + y[43]; y[45] = y[44] + y[45]; y[47] = y[46] + y[47]; y[49] = y[48] + y[49]; y[51] = y[50] + y[51]; y[53] = y[52] + y[53]; y[55] = y[54] + y[55]; y[57] = y[56] + y[57]; y[59] = y[58] + y[59]; y[61] = y[60] + y[61]; y[63] = y[62] + y[63]; y[65] = y[64] + y[65]; y[67] = y[66] + y[67]; y[69] = y[68] + y[69]; y[71] = y[70] + y[71]; y[73] = y[72] + y[73]; y[75] = y[74] + y[75]; y[77] = y[76] + y[77]; y[79] = y[78] + y[79]; y[81] = y[80] + y[81]; y[83] = y[82] + y[83]; y[85] = y[84] + y[85]; y[87] = y[86] + y[87]; y[89] = y[88] + y[89]; y[91] = y[90] + y[91]; y[93] = y[92] + y[93]; y[95] = y[94] + y[95]; y[97] = y[96] + y[97]; y[99] = y[98] + y[99]; y[101] = y[100] + y[101]; y[103] = y[102] + y[103]; y[105] = y[104] + y[105]; y[107] = y[106] + y[107]; y[109] = y[108] + y[109]; y[111] = y[110] + y[111]; y[113] = y[112] + y[113]; y[115] = y[114] + y[115]; y[117] = y[116] + y[117]; y[119] = y[118] + y[119]; y[121] = y[120] + y[121]; y[123] = y[122] + y[123]; y[125] = y[124] + y[125]; y[127] = y[126] + y[127]; // up-level 1 y[3] = y[1] + y[3]; y[7] = y[5] + y[7]; y[11] = y[9] + y[11]; y[15] = y[13] + y[15]; y[19] = y[17] + y[19]; y[23] = y[21] + y[23]; y[27] = y[25] + y[27]; y[31] = y[29] + y[31]; y[35] = y[33] + y[35]; y[39] = y[37] + y[39]; y[43] = y[41] + y[43]; y[47] = y[45] + y[47]; y[51] = y[49] + y[51]; y[55] = y[53] + y[55]; y[59] = y[57] + y[59]; y[63] = y[61] + y[63]; y[67] = y[65] + y[67]; y[71] = y[69] + y[71]; y[75] = y[73] + y[75]; y[79] = y[77] + y[79]; y[83] = y[81] + y[83]; y[87] = y[85] + y[87]; y[91] = y[89] + y[91]; y[95] = y[93] + y[95]; y[99] = y[97] + y[99]; y[103] = y[101] + y[103]; y[107] = y[105] + y[107]; y[111] = y[109] + y[111]; y[115] = y[113] + y[115]; y[119] = y[117] + y[119]; y[123] = y[121] + y[123]; y[127] = y[125] + y[127]; // up-level 2 y[7] = y[3] + y[7]; y[15] = y[11] + y[15]; y[23] = y[19] + y[23]; y[31] = y[27] + y[31]; y[39] = y[35] + y[39]; y[47] = y[43] + y[47]; y[55] = y[51] + y[55]; y[63] = y[59] + y[63]; y[71] = y[67] + y[71]; y[79] = y[75] + y[79]; y[87] = y[83] + y[87]; y[95] = y[91] + y[95]; y[103] = y[99] + y[103]; y[111] = y[107] + y[111]; y[119] = y[115] + y[119]; y[127] = y[123] + y[127]; // up-level 3 y[15] = y[7] + y[15]; y[31] = y[23] + y[31]; y[47] = y[39] + y[47]; y[63] = y[55] + y[63]; y[79] = y[71] + y[79]; y[95] = y[87] + y[95]; y[111] = y[103] + y[111]; y[127] = y[119] + y[127]; // up-level 4 y[31] = y[15] + y[31]; y[63] = y[47] + y[63]; y[95] = y[79] + y[95]; y[127] = y[111] + y[127]; // up-level 5 y[63] = y[31] + y[63]; y[127] = y[95] + y[127]; // up-level 6 y[127] = y[63] + y[127]; // up-level 7 // down-level 8 // down-level 9 y[95] = y[63] + y[95]; // down-level 10 y[47] = y[31] + y[47]; y[79] = y[63] + y[79]; y[111] = y[95] + y[111]; // down-level 11 y[23] = y[15] + y[23]; y[39] = y[31] + y[39]; y[55] = y[47] + y[55]; y[71] = y[63] + y[71]; y[87] = y[79] + y[87]; y[103] = y[95] + y[103]; y[119] = y[111] + y[119]; // down-level 12 y[11] = y[7] + y[11]; y[19] = y[15] + y[19]; y[27] = y[23] + y[27]; y[35] = y[31] + y[35]; y[43] = y[39] + y[43]; y[51] = y[47] + y[51]; y[59] = y[55] + y[59]; y[67] = y[63] + y[67]; y[75] = y[71] + y[75]; y[83] = y[79] + y[83]; y[91] = y[87] + y[91]; y[99] = y[95] + y[99]; y[107] = y[103] + y[107]; y[115] = y[111] + y[115]; y[123] = y[119] + y[123]; // down-level 13 y[5] = y[3] + y[5]; y[9] = y[7] + y[9]; y[13] = y[11] + y[13]; y[17] = y[15] + y[17]; y[21] = y[19] + y[21]; y[25] = y[23] + y[25]; y[29] = y[27] + y[29]; y[33] = y[31] + y[33]; y[37] = y[35] + y[37]; y[41] = y[39] + y[41]; y[45] = y[43] + y[45]; y[49] = y[47] + y[49]; y[53] = y[51] + y[53]; y[57] = y[55] + y[57]; y[61] = y[59] + y[61]; y[65] = y[63] + y[65]; y[69] = y[67] + y[69]; y[73] = y[71] + y[73]; y[77] = y[75] + y[77]; y[81] = y[79] + y[81]; y[85] = y[83] + y[85]; y[89] = y[87] + y[89]; y[93] = y[91] + y[93]; y[97] = y[95] + y[97]; y[101] = y[99] + y[101]; y[105] = y[103] + y[105]; y[109] = y[107] + y[109]; y[113] = y[111] + y[113]; y[117] = y[115] + y[117]; y[121] = y[119] + y[121]; y[125] = y[123] + y[125]; // down-level 14 y[2] = y[1] + y[2]; y[4] = y[3] + y[4]; y[6] = y[5] + y[6]; y[8] = y[7] + y[8]; y[10] = y[9] + y[10]; y[12] = y[11] + y[12]; y[14] = y[13] + y[14]; y[16] = y[15] + y[16]; y[18] = y[17] + y[18]; y[20] = y[19] + y[20]; y[22] = y[21] + y[22]; y[24] = y[23] + y[24]; y[26] = y[25] + y[26]; y[28] = y[27] + y[28]; y[30] = y[29] + y[30]; y[32] = y[31] + y[32]; y[34] = y[33] + y[34]; y[36] = y[35] + y[36]; y[38] = y[37] + y[38]; y[40] = y[39] + y[40]; y[42] = y[41] + y[42]; y[44] = y[43] + y[44]; y[46] = y[45] + y[46]; y[48] = y[47] + y[48]; y[50] = y[49] + y[50]; y[52] = y[51] + y[52]; y[54] = y[53] + y[54]; y[56] = y[55] + y[56]; y[58] = y[57] + y[58]; y[60] = y[59] + y[60]; y[62] = y[61] + y[62]; y[64] = y[63] + y[64]; y[66] = y[65] + y[66]; y[68] = y[67] + y[68]; y[70] = y[69] + y[70]; y[72] = y[71] + y[72]; y[74] = y[73] + y[74]; y[76] = y[75] + y[76]; y[78] = y[77] + y[78]; y[80] = y[79] + y[80]; y[82] = y[81] + y[82]; y[84] = y[83] + y[84]; y[86] = y[85] + y[86]; y[88] = y[87] + y[88]; y[90] = y[89] + y[90]; y[92] = y[91] + y[92]; y[94] = y[93] + y[94]; y[96] = y[95] + y[96]; y[98] = y[97] + y[98]; y[100] = y[99] + y[100]; y[102] = y[101] + y[102]; y[104] = y[103] + y[104]; y[106] = y[105] + y[106]; y[108] = y[107] + y[108]; y[110] = y[109] + y[110]; y[112] = y[111] + y[112]; y[114] = y[113] + y[114]; y[116] = y[115] + y[116]; y[118] = y[117] + y[118]; y[120] = y[119] + y[120]; y[122] = y[121] + y[122]; y[124] = y[123] + y[124]; y[126] = y[125] + y[126]; x[0] = y[0]; x[1] = y[1]; x[2] = y[2]; x[3] = y[3]; x[4] = y[4]; x[5] = y[5]; x[6] = y[6]; x[7] = y[7]; x[8] = y[8]; x[9] = y[9]; x[10] = y[10]; x[11] = y[11]; x[12] = y[12]; x[13] = y[13]; x[14] = y[14]; x[15] = y[15]; x[16] = y[16]; x[17] = y[17]; x[18] = y[18]; x[19] = y[19]; x[20] = y[20]; x[21] = y[21]; x[22] = y[22]; x[23] = y[23]; x[24] = y[24]; x[25] = y[25]; x[26] = y[26]; x[27] = y[27]; x[28] = y[28]; x[29] = y[29]; x[30] = y[30]; x[31] = y[31]; x[32] = y[32]; x[33] = y[33]; x[34] = y[34]; x[35] = y[35]; x[36] = y[36]; x[37] = y[37]; x[38] = y[38]; x[39] = y[39]; x[40] = y[40]; x[41] = y[41]; x[42] = y[42]; x[43] = y[43]; x[44] = y[44]; x[45] = y[45]; x[46] = y[46]; x[47] = y[47]; x[48] = y[48]; x[49] = y[49]; x[50] = y[50]; x[51] = y[51]; x[52] = y[52]; x[53] = y[53]; x[54] = y[54]; x[55] = y[55]; x[56] = y[56]; x[57] = y[57]; x[58] = y[58]; x[59] = y[59]; x[60] = y[60]; x[61] = y[61]; x[62] = y[62]; x[63] = y[63]; x[64] = y[64]; x[65] = y[65]; x[66] = y[66]; x[67] = y[67]; x[68] = y[68]; x[69] = y[69]; x[70] = y[70]; x[71] = y[71]; x[72] = y[72]; x[73] = y[73]; x[74] = y[74]; x[75] = y[75]; x[76] = y[76]; x[77] = y[77]; x[78] = y[78]; x[79] = y[79]; x[80] = y[80]; x[81] = y[81]; x[82] = y[82]; x[83] = y[83]; x[84] = y[84]; x[85] = y[85]; x[86] = y[86]; x[87] = y[87]; x[88] = y[88]; x[89] = y[89]; x[90] = y[90]; x[91] = y[91]; x[92] = y[92]; x[93] = y[93]; x[94] = y[94]; x[95] = y[95]; x[96] = y[96]; x[97] = y[97]; x[98] = y[98]; x[99] = y[99]; x[100] = y[100]; x[101] = y[101]; x[102] = y[102]; x[103] = y[103]; x[104] = y[104]; x[105] = y[105]; x[106] = y[106]; x[107] = y[107]; x[108] = y[108]; x[109] = y[109]; x[110] = y[110]; x[111] = y[111]; x[112] = y[112]; x[113] = y[113]; x[114] = y[114]; x[115] = y[115]; x[116] = y[116]; x[117] = y[117]; x[118] = y[118]; x[119] = y[119]; x[120] = y[120]; x[121] = y[121]; x[122] = y[122]; x[123] = y[123]; x[124] = y[124]; x[125] = y[125]; x[126] = y[126]; x[127] = y[127]; }