// ************************************************************************** //
//                                                                            //
//    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;

thread ParallelPrefixTree_8 {
nat y0,y1,y2,y3,y4,y5,y6,y7;
    y0 = x0;
    y1 = x1;
    y2 = x2;
    y3 = x3;
    y4 = x4;
    y5 = x5;
    y6 = x6;
    y7 = x7;
    // up-level 0
    y1 = y0 + y1;
    y3 = y2 + y3;
    y5 = y4 + y5;
    y7 = y6 + y7;
    // up-level 1
    y3 = y1 + y3;
    y7 = y5 + y7;
    // up-level 2
    y7 = y3 + y7;
    // up-level 3
    // down-level 4
    // down-level 5
    y5 = y3 + y5;
    // down-level 6
    y2 = y1 + y2;
    y4 = y3 + y4;
    y6 = y5 + y6;
    x0 = y0;
    x1 = y1;
    x2 = y2;
    x3 = y3;
    x4 = y4;
    x5 = y5;
    x6 = y6;
    x7 = y7;
}