// ************************************************************************** // // // // 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 // // // // ************************************************************************** // [9]int p; int x,y; thread EvalPolynomial { int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17; t0 = p[0]; t1 = p[1]; t2 = p[2]; t3 = p[3]; t4 = p[4]; t5 = p[5]; t6 = p[6]; t7 = p[7]; t8 = p[8]; t9 = +1; t10 = x; t11 = x; t12 = x; t13 = x; t14 = x; t15 = x; t16 = x; t17 = x; // up-level 0 t10 = t9 * t10; t12 = t11 * t12; t14 = t13 * t14; t16 = t15 * t16; // up-level 1 t12 = t10 * t12; t16 = t14 * t16; // up-level 2 t16 = t12 * t16; // up-level 3 // down-level 4 // down-level 5 t14 = t12 * t14; // down-level 6 t11 = t10 * t11; t13 = t12 * t13; t15 = t14 * t15; t17 = t16 * t17; // multiply p[i] with x^i t9 = t0 * t9; t10 = t1 * t10; t11 = t2 * t11; t12 = t3 * t12; t13 = t4 * t13; t14 = t5 * t14; t15 = t6 * t15; t16 = t7 * t16; t17 = t8 * t17; // sum up p[i]*x^i by a binary tree // level 0 t9 = t9 + t10; t10 = t11 + t12; t11 = t13 + t14; t12 = t15 + t16; t13 = t17; // level 0 t9 = t9 + t10; t10 = t11 + t12; t11 = t13; // level 0 t9 = t9 + t10; t10 = t11; // level 0 t9 = t9 + t10; // final result y = t9; }