// ************************************************************************** // // // // 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 // // // // ************************************************************************** // nat x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31; thread ParallelPrefixTree_32 { nat y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31; y0 = x0; y1 = x1; y2 = x2; y3 = x3; y4 = x4; y5 = x5; y6 = x6; y7 = x7; y8 = x8; y9 = x9; y10 = x10; y11 = x11; y12 = x12; y13 = x13; y14 = x14; y15 = x15; y16 = x16; y17 = x17; y18 = x18; y19 = x19; y20 = x20; y21 = x21; y22 = x22; y23 = x23; y24 = x24; y25 = x25; y26 = x26; y27 = x27; y28 = x28; y29 = x29; y30 = x30; y31 = x31; // up-level 0 y1 = y0 + y1; y3 = y2 + y3; y5 = y4 + y5; y7 = y6 + y7; y9 = y8 + y9; y11 = y10 + y11; y13 = y12 + y13; y15 = y14 + y15; y17 = y16 + y17; y19 = y18 + y19; y21 = y20 + y21; y23 = y22 + y23; y25 = y24 + y25; y27 = y26 + y27; y29 = y28 + y29; y31 = y30 + y31; // up-level 1 y3 = y1 + y3; y7 = y5 + y7; y11 = y9 + y11; y15 = y13 + y15; y19 = y17 + y19; y23 = y21 + y23; y27 = y25 + y27; y31 = y29 + y31; // up-level 2 y7 = y3 + y7; y15 = y11 + y15; y23 = y19 + y23; y31 = y27 + y31; // up-level 3 y15 = y7 + y15; y31 = y23 + y31; // up-level 4 y31 = y15 + y31; // up-level 5 // down-level 6 // down-level 7 y23 = y15 + y23; // down-level 8 y11 = y7 + y11; y19 = y15 + y19; y27 = y23 + y27; // down-level 9 y5 = y3 + y5; y9 = y7 + y9; y13 = y11 + y13; y17 = y15 + y17; y21 = y19 + y21; y25 = y23 + y25; y29 = y27 + y29; // down-level 10 y2 = y1 + y2; y4 = y3 + y4; y6 = y5 + y6; y8 = y7 + y8; y10 = y9 + y10; y12 = y11 + y12; y14 = y13 + y14; y16 = y15 + y16; y18 = y17 + y18; y20 = y19 + y20; y22 = y21 + y22; y24 = y23 + y24; y26 = y25 + y26; y28 = y27 + y28; y30 = y29 + y30; x0 = y0; x1 = y1; x2 = y2; x3 = y3; x4 = y4; x5 = y5; x6 = y6; x7 = y7; x8 = y8; x9 = y9; x10 = y10; x11 = y11; x12 = y12; x13 = y13; x14 = y14; x15 = y15; x16 = y16; x17 = y17; x18 = y18; x19 = y19; x20 = y20; x21 = y21; x22 = y22; x23 = y23; x24 = y24; x25 = y25; x26 = y26; x27 = y27; x28 = y28; x29 = y29; x30 = y30; x31 = y31; }