// ************************************************************************** // // // // 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,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63; thread ParallelPrefixTree_64 { 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,y32,y33,y34,y35,y36,y37,y38,y39,y40,y41,y42,y43,y44,y45,y46,y47,y48,y49,y50,y51,y52,y53,y54,y55,y56,y57,y58,y59,y60,y61,y62,y63; 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; y32 = x32; y33 = x33; y34 = x34; y35 = x35; y36 = x36; y37 = x37; y38 = x38; y39 = x39; y40 = x40; y41 = x41; y42 = x42; y43 = x43; y44 = x44; y45 = x45; y46 = x46; y47 = x47; y48 = x48; y49 = x49; y50 = x50; y51 = x51; y52 = x52; y53 = x53; y54 = x54; y55 = x55; y56 = x56; y57 = x57; y58 = x58; y59 = x59; y60 = x60; y61 = x61; y62 = x62; y63 = x63; // 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; y33 = y32 + y33; y35 = y34 + y35; y37 = y36 + y37; y39 = y38 + y39; y41 = y40 + y41; y43 = y42 + y43; y45 = y44 + y45; y47 = y46 + y47; y49 = y48 + y49; y51 = y50 + y51; y53 = y52 + y53; y55 = y54 + y55; y57 = y56 + y57; y59 = y58 + y59; y61 = y60 + y61; y63 = y62 + y63; // 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; y35 = y33 + y35; y39 = y37 + y39; y43 = y41 + y43; y47 = y45 + y47; y51 = y49 + y51; y55 = y53 + y55; y59 = y57 + y59; y63 = y61 + y63; // up-level 2 y7 = y3 + y7; y15 = y11 + y15; y23 = y19 + y23; y31 = y27 + y31; y39 = y35 + y39; y47 = y43 + y47; y55 = y51 + y55; y63 = y59 + y63; // up-level 3 y15 = y7 + y15; y31 = y23 + y31; y47 = y39 + y47; y63 = y55 + y63; // up-level 4 y31 = y15 + y31; y63 = y47 + y63; // up-level 5 y63 = y31 + y63; // up-level 6 // down-level 7 // down-level 8 y47 = y31 + y47; // down-level 9 y23 = y15 + y23; y39 = y31 + y39; y55 = y47 + y55; // down-level 10 y11 = y7 + y11; y19 = y15 + y19; y27 = y23 + y27; y35 = y31 + y35; y43 = y39 + y43; y51 = y47 + y51; y59 = y55 + y59; // down-level 11 y5 = y3 + y5; y9 = y7 + y9; y13 = y11 + y13; y17 = y15 + y17; y21 = y19 + y21; y25 = y23 + y25; y29 = y27 + y29; y33 = y31 + y33; y37 = y35 + y37; y41 = y39 + y41; y45 = y43 + y45; y49 = y47 + y49; y53 = y51 + y53; y57 = y55 + y57; y61 = y59 + y61; // down-level 12 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; y32 = y31 + y32; y34 = y33 + y34; y36 = y35 + y36; y38 = y37 + y38; y40 = y39 + y40; y42 = y41 + y42; y44 = y43 + y44; y46 = y45 + y46; y48 = y47 + y48; y50 = y49 + y50; y52 = y51 + y52; y54 = y53 + y54; y56 = y55 + y56; y58 = y57 + y58; y60 = y59 + y60; y62 = y61 + y62; 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; x32 = y32; x33 = y33; x34 = y34; x35 = y35; x36 = y36; x37 = y37; x38 = y38; x39 = y39; x40 = y40; x41 = y41; x42 = y42; x43 = y43; x44 = y44; x45 = y45; x46 = y46; x47 = y47; x48 = y48; x49 = y49; x50 = y50; x51 = y51; x52 = y52; x53 = y53; x54 = y54; x55 = y55; x56 = y56; x57 = y57; x58 = y58; x59 = y59; x60 = y60; x61 = y61; x62 = y62; x63 = y63; }