5 #include <hmlp_internal.hpp> 11 #define MM256_ADD8x6(beta,regis); \ 12 regis.v = _mm256_broadcast_sd( &beta ); \ 13 c03_0.v = _mm256_add_pd( regis.v, c03_0.v ); \ 14 c03_1.v = _mm256_add_pd( regis.v, c03_1.v ); \ 15 c03_2.v = _mm256_add_pd( regis.v, c03_2.v ); \ 16 c03_3.v = _mm256_add_pd( regis.v, c03_3.v ); \ 17 c03_4.v = _mm256_add_pd( regis.v, c03_4.v ); \ 18 c03_5.v = _mm256_add_pd( regis.v, c03_5.v ); \ 19 c47_0.v = _mm256_add_pd( regis.v, c47_0.v ); \ 20 c47_1.v = _mm256_add_pd( regis.v, c47_1.v ); \ 21 c47_2.v = _mm256_add_pd( regis.v, c47_2.v ); \ 22 c47_3.v = _mm256_add_pd( regis.v, c47_3.v ); \ 23 c47_4.v = _mm256_add_pd( regis.v, c47_4.v ); \ 24 c47_5.v = _mm256_add_pd( regis.v, c47_5.v ); \ 26 #define MM256_MUL8x6(alpha,regis); \ 27 regis.v = _mm256_broadcast_sd( &alpha ); \ 28 c03_0.v = _mm256_mul_pd( regis.v, c03_0.v ); \ 29 c03_1.v = _mm256_mul_pd( regis.v, c03_1.v ); \ 30 c03_2.v = _mm256_mul_pd( regis.v, c03_2.v ); \ 31 c03_3.v = _mm256_mul_pd( regis.v, c03_3.v ); \ 32 c03_4.v = _mm256_mul_pd( regis.v, c03_4.v ); \ 33 c03_5.v = _mm256_mul_pd( regis.v, c03_5.v ); \ 34 c47_0.v = _mm256_mul_pd( regis.v, c47_0.v ); \ 35 c47_1.v = _mm256_mul_pd( regis.v, c47_1.v ); \ 36 c47_2.v = _mm256_mul_pd( regis.v, c47_2.v ); \ 37 c47_3.v = _mm256_mul_pd( regis.v, c47_3.v ); \ 38 c47_4.v = _mm256_mul_pd( regis.v, c47_4.v ); \ 39 c47_5.v = _mm256_mul_pd( regis.v, c47_5.v ); \ 41 #define MM256_SQUARE8x6(); \ 42 c03_0.v = _mm256_mul_pd( c03_0.v, c03_0.v ); \ 43 c03_1.v = _mm256_mul_pd( c03_1.v, c03_1.v ); \ 44 c03_2.v = _mm256_mul_pd( c03_2.v, c03_2.v ); \ 45 c03_3.v = _mm256_mul_pd( c03_3.v, c03_3.v ); \ 46 c03_4.v = _mm256_mul_pd( c03_4.v, c03_4.v ); \ 47 c03_5.v = _mm256_mul_pd( c03_5.v, c03_5.v ); \ 48 c47_0.v = _mm256_mul_pd( c47_0.v, c47_0.v ); \ 49 c47_1.v = _mm256_mul_pd( c47_1.v, c47_1.v ); \ 50 c47_2.v = _mm256_mul_pd( c47_2.v, c47_2.v ); \ 51 c47_3.v = _mm256_mul_pd( c47_3.v, c47_3.v ); \ 52 c47_4.v = _mm256_mul_pd( c47_4.v, c47_4.v ); \ 53 c47_5.v = _mm256_mul_pd( c47_5.v, c47_5.v ); \ 55 #define MM256_EXP8x6(); \ 56 c03_0.v = _mm256_exp_pd( c03_0.v ); \ 57 c03_1.v = _mm256_exp_pd( c03_1.v ); \ 58 c03_2.v = _mm256_exp_pd( c03_2.v ); \ 59 c03_3.v = _mm256_exp_pd( c03_3.v ); \ 60 c03_4.v = _mm256_exp_pd( c03_4.v ); \ 61 c03_5.v = _mm256_exp_pd( c03_5.v ); \ 62 c47_0.v = _mm256_exp_pd( c47_0.v ); \ 63 c47_1.v = _mm256_exp_pd( c47_1.v ); \ 64 c47_2.v = _mm256_exp_pd( c47_2.v ); \ 65 c47_3.v = _mm256_exp_pd( c47_3.v ); \ 66 c47_4.v = _mm256_exp_pd( c47_4.v ); \ 67 c47_5.v = _mm256_exp_pd( c47_5.v ); \ 69 #define MM256_POW8x6(power,regis); \ 70 regis.v = _mm256_broadcast_sd( &power ); \ 71 c03_0.v = _mm256_pow_pd( c03_0.v, regis.v ); \ 72 c03_1.v = _mm256_pow_pd( c03_1.v, regis.v ); \ 73 c03_2.v = _mm256_pow_pd( c03_2.v, regis.v ); \ 74 c03_3.v = _mm256_pow_pd( c03_3.v, regis.v ); \ 75 c03_4.v = _mm256_pow_pd( c03_4.v, regis.v ); \ 76 c03_5.v = _mm256_pow_pd( c03_5.v, regis.v ); \ 77 c47_0.v = _mm256_pow_pd( c47_0.v, regis.v ); \ 78 c47_1.v = _mm256_pow_pd( c47_1.v, regis.v ); \ 79 c47_2.v = _mm256_pow_pd( c47_2.v, regis.v ); \ 80 c47_3.v = _mm256_pow_pd( c47_3.v, regis.v ); \ 81 c47_4.v = _mm256_pow_pd( c47_4.v, regis.v ); \ 82 c47_5.v = _mm256_pow_pd( c47_5.v, regis.v ); \ 90 inline GSKS_OPERATOR(
float)
const 92 printf(
"no GSKS_OPERATOR implementation\n" );
105 double alpha = ker->scal;
108 #include <component/rank_k_int_d8x6.hpp> 111 #include <component/sq2nrm_int_d8x6.hpp> 114 MM256_MUL8x6(alpha,a03);
117 __asm__
volatile(
"prefetcht0 0(%0) \n\t" : :
"r"( u ) );
118 __asm__
volatile(
"prefetcht0 0(%0) \n\t" : :
"r"( w ) );
124 #include <component/weighted_sum_int_d8x6.hpp> 134 inline GSKS_OPERATOR(
float)
const 136 printf(
"no GSKS_OPERATOR implementation\n" );
148 double powe = ker->powe;
149 double scal = ker->scal;
150 double cons = ker->cons;
153 #include <component/rank_k_int_d8x6.hpp> 156 __asm__
volatile(
"prefetcht0 0(%0) \n\t" : :
"r"( u ) );
157 __asm__
volatile(
"prefetcht0 0(%0) \n\t" : :
"r"( w ) );
160 MM256_MUL8x6(scal,a03);
163 MM256_ADD8x6(cons,a03);
170 else if ( powe == 4.0 )
177 MM256_POW8x6(powe,a03);
181 #include <component/weighted_sum_int_d8x6.hpp> Definition: gsks_d8x6.hpp:131
Definition: gsks_d8x6.hpp:100
Definition: gsks_d8x6.hpp:87
GSKS_OPERATOR(double) const
Definition: gsks_d8x6.hpp:146
GSKS_OPERATOR(double) const
Definition: gsks_d8x6.hpp:103
Definition: gsks_d8x6.hpp:143