// ************************************************************************** // // // // 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 // // // // ************************************************************************** // [32]nat x; thread ParallelPrefixTree_32 { [32]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]; // 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]; // 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]; // 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]; // up-level 3 y[15] = y[7] + y[15]; y[31] = y[23] + y[31]; // up-level 4 y[31] = y[15] + y[31]; // up-level 5 // down-level 6 // down-level 7 y[23] = y[15] + y[23]; // down-level 8 y[11] = y[7] + y[11]; y[19] = y[15] + y[19]; y[27] = y[23] + y[27]; // down-level 9 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]; // down-level 10 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]; 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]; }