亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? skl_dct_llm.cpp

?? LLM fast dct algorithm
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* *  skl_dct_LLM.cpp * * LLM implementation of Forward Discrete Cosine Transform * designed for [0..255] input only. * * See: *  Loeffler C., Ligtenberg A., and Moschytz C.S.:  *    Practical Fast 1D DCT Algorithm with Eleven Multiplications,  *  Proc. ICASSP 1989, 988-991. * * (C) 2002 Pascal Massimino * details at http://skal.planet-d.net/coding/dct.html ********************************************************/#include <math.h>#include <stdio.h>typedef short SKL_INT16;typedef long  SKL_INT32;#define IN_TYPE  SKL_INT16#define OUT_TYPE SKL_INT16#define TMP_TYPE SKL_INT32//////////////////////////////////////////////////////////#define SHIFTL(m,n) ((m)<<(n))#define SHIFTRH(m,n) ( ( (m)+HALF(n) ) >> (n) )#define FX(x,n) ((IN_TYPE)floor((x)*(1<<(n)) + .5))#define HALF(n) (1<<((n)-1))#define RMULT(x, y, n) ( (IN_TYPE)(((TMP_TYPE)(x)*(TMP_TYPE)(y))>>(n)) )#define PMULHW(x, y) ( (IN_TYPE)( ((TMP_TYPE)(x)*(TMP_TYPE)(y))>>16 ) )#define RMULT3(x, y, n) ( ( PMULHW(x,y) + HALF((n)-16) ) >> ((n)-16) )#define SWAP(m1,m2,tmp) (tmp)=(m1); (m1)=(m2); (m2)=(tmp)#define STORE(a, m)   In[(a)*8] = (OUT_TYPE)(m);#define LOAD(m, a)    (m) = (IN_TYPE) In[(a)*8]#define LOAD_BUTF(m1, m2, a, b) \  (m1) = (IN_TYPE)In[(a)*8] - (IN_TYPE)In[(b)*8]; \  (m2) = (IN_TYPE)In[(a)*8] + (IN_TYPE)In[(b)*8]#define BUTF(a, b, tmp) \  (tmp) = (a)+(b);      \  (a)   = (a)-(b);      \  (b)   = (tmp)#define BUTFSAFE(a, b, tmp) \  (tmp) = (IN_TYPE)( ((b)+(a)+1) >> 1 ); \  (a)   = (IN_TYPE)( ((a)-(b)+1) >> 1 ); \  (b)   = (tmp)#define ROTATE(a, b, Rot, tmp)        \  (tmp) = RMULT( (a), (Rot), 15 ) - (b); \  (a)   = (a) + RMULT( (b), (Rot), 15 ); \  (b)   = (tmp)#define ROTATE16(a, b, Rot, tmp)         \  (tmp)= PMULHW( (a), (Rot) ) - (b); \  (a)  = (a) + PMULHW( (b), (Rot) ); \  (b)  = (tmp)#define ROTATE15(a, b, Rot, tmp)           \  (tmp)= (b) - (a) - PMULHW( (a), (Rot) ); \  (a)  = (a) + (b) + PMULHW( (b), (Rot) ); \  (b)  = (tmp)//////////////////////////////////////////////////////////static const IN_TYPE tan_1_16 = FX( tan(1.*M_PI/16), 15 );static const IN_TYPE tan_1_16_16b = FX( tan(1.*M_PI/16), 16 );static const IN_TYPE tan_2_16 = FX( tan(2.*M_PI/16), 15 );static const IN_TYPE tan_2_16_16b = FX( sqrt(2.0)-1., 16 );static const IN_TYPE tan_3_16 = FX( tan(3.*M_PI/16), 15 );static const IN_TYPE tan_3_16_16b = FX( tan(3.*M_PI/16)-1., 16 );static const IN_TYPE cos_4_16  = FX( cos(4.*M_PI/16), 15 );static const IN_TYPE ucos_4_16  = 0xb505; // unsignedstatic const IN_TYPE ocos_4_16 = FX( cos(4.*M_PI/16)-.5, 16 );static const IN_TYPE cos_4_16_16b = FX( cos(4.*M_PI/16)-.5, 17 );static const IN_TYPE cos3_cos1  = FX( cos(3.*M_PI/16)/cos(1.*M_PI/16), 15 );static const IN_TYPE ocos3_cos1 = FX( cos(3.*M_PI/16)/cos(1.*M_PI/16) - .5, 16 );static const double c1 = cos(1.*M_PI/16);static const double s1 = sin(1.*M_PI/16);static const double t1 = tan(1.*M_PI/16);static const double c2 = cos(2.*M_PI/16);static const double s2 = sin(2.*M_PI/16);static const double c3 = cos(3.*M_PI/16);static const double s3 = sin(3.*M_PI/16);static const double t3 = tan(3.*M_PI/16);static const double c4 = cos(4.*M_PI/16);static const double c6 = cos(6.*M_PI/16);#define PASSB  2static void DCT_FWD_PASS1(OUT_TYPE *In){  IN_TYPE mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7;  IN_TYPE Spill;  LOAD_BUTF(mm7, mm0, 0, 7);  LOAD_BUTF(mm4, mm3, 3, 4);  LOAD_BUTF(mm6, mm1, 1, 6);  LOAD_BUTF(mm5, mm2, 2, 5);  BUTF( mm0, mm3, Spill );  BUTF( mm1, mm2, Spill );  BUTF( mm3, mm2, Spill );  mm0 = SHIFTL(mm0, PASSB);  mm1 = SHIFTL(mm1, PASSB);  mm2 = SHIFTL(mm2, PASSB);  mm3 = SHIFTL(mm3, PASSB);  STORE(0, mm2);  STORE(4, mm3);    // Rot6  Spill = PMULHW(mm0, tan_2_16_16b) + mm0;  mm0 = mm0+mm1;  mm1 = (Spill - mm0) | 1;  mm0 = (Spill + mm0) | 1;  STORE(2, mm0);  STORE(6, mm1);    // Rot1/3  mm4 = SHIFTL(mm4, PASSB+1);  mm5 = SHIFTL(mm5, PASSB);  mm6 = SHIFTL(mm6, PASSB);  mm7 = SHIFTL(mm7, PASSB+1);  BUTF( mm6, mm5, Spill );  mm6 = PMULHW( mm6, cos_4_16_16b ) + mm6;  mm5 = PMULHW( mm5, cos_4_16_16b ) + mm5;  mm5 |= 1;  mm6 |= 1;  BUTF( mm7, mm5, Spill );  BUTF( mm4, mm6, Spill );  ROTATE16( mm5, mm6, tan_1_16_16b, Spill );  ROTATE15( mm4, mm7, tan_3_16_16b, Spill );  STORE(1, mm5);  STORE(3, mm7);  STORE(5, mm4);  STORE(7, mm6);}static void DCT_FWD_PASS2(OUT_TYPE *In){  IN_TYPE mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7;  IN_TYPE Spill;  LOAD_BUTF(mm7, mm0, 0, 7);  LOAD_BUTF(mm4, mm3, 3, 4);  LOAD_BUTF(mm6, mm1, 1, 6);  LOAD_BUTF(mm5, mm2, 2, 5);  BUTF( mm0, mm3, Spill );  BUTF( mm1, mm2, Spill );//  BUTF( mm3, mm2, Spill );   mm2 >>= 1;  mm3 >>= 1;  Spill = mm2;  mm2 = mm3+Spill;  mm3 = mm3-Spill;    STORE(0, mm2);  STORE(4, mm3);    //  Rot6  Spill = PMULHW(mm0, tan_2_16_16b) + mm0;  mm0 = mm0+mm1;  mm1 = (Spill - mm0) | 1;  mm0 = (Spill + mm0) | 1;  STORE(2, mm0);  STORE(6, mm1);    // Rot1/3  BUTF( mm6, mm5, Spill );  mm6 = PMULHW( mm6, ucos_4_16 ) + mm6;  mm5 = PMULHW( mm5, ucos_4_16 ) + mm5;  mm5 |= 1;  BUTF( mm7, mm5, Spill );  BUTF( mm4, mm6, Spill );  ROTATE16( mm5, mm6, tan_1_16_16b, Spill );  ROTATE15( mm4, mm7, tan_3_16_16b, Spill );  STORE(1, mm5);  STORE(3, mm7);  STORE(5, mm4);  STORE(7, mm6);}static IN_TYPE Final[64] = {  FX(c4*c4, 15)-1, FX(c4*c1, 14), FX(c4*c6, 15), FX(c4*c3, 14), FX(c4*c4, 15)-1, FX(c4*c3, 14), FX(c4*c2, 15), FX(c4*c1, 14),  FX(c1*c4, 14),   FX(c1*c1, 13), FX(c1*c6, 14), FX(c1*c3, 13), FX(c1*c4, 14),   FX(c1*c3, 13), FX(c1*c2, 14), FX(c1*c1, 13),  FX(c6*c4, 14),   FX(c6*c1, 13), FX(c6*c6, 14), FX(c6*c3, 13), FX(c6*c4, 14),   FX(c6*c3, 13), FX(c6*c2, 14), FX(c6*c1, 13),  FX(c3*c4, 14),   FX(c3*c1, 13), FX(c3*c6, 14), FX(c3*c3, 13), FX(c3*c4, 14),   FX(c3*c3, 13), FX(c3*c2, 14), FX(c3*c1, 13),  FX(c4*c4, 15)-1, FX(c4*c1, 14), FX(c4*c6, 15), FX(c4*c3, 14), FX(c4*c4, 15)-1, FX(c4*c3, 14), FX(c4*c2, 15), FX(c4*c1, 14),   FX(c3*c4, 14),   FX(c3*c1, 13), FX(c3*c6, 14), FX(c3*c3, 13), FX(c3*c4, 14),   FX(c3*c3, 13), FX(c3*c2, 14), FX(c3*c1, 13),  FX(c2*c4, 14),   FX(c2*c1, 13), FX(c2*c6, 14), FX(c2*c3, 13), FX(c2*c4, 14),   FX(c2*c3, 13), FX(c2*c2, 14), FX(c2*c1, 13),  FX(c1*c4, 14),   FX(c1*c1, 13), FX(c1*c6, 14), FX(c1*c3, 13), FX(c1*c4, 14),   FX(c1*c3, 13), FX(c1*c2, 14), FX(c1*c1, 13)};static void Print_Cst() {  printf( "Mults dw" );  for(int k=0; k<64; ++k) {    printf( " 0x%.4x,", Final[k]>>PASSB );    if ((k&7)==7) if (k!=63) printf( "\n      dw"); else printf("\n");  }  printf( "Halves dw" );   for(int l=0; l<64; ++l) {     IN_TYPE M = Final[l]>>PASSB; IN_TYPE H = HALF(16)/M;    printf( " 0x%.4x,", H );    if ((l&7)==7) if (l!=63) printf( "\n       dw"); else printf("\n");  }  printf( "tan_1_16_16b = 0x%x\n", tan_1_16_16b);  printf( "tan_2_16_16b = 0x%x\n", tan_2_16_16b);  printf( "tan_3_16_16b = 0x%x\n", tan_3_16_16b);  printf( "cos_4_16_16b = 0x%x\n", cos_4_16_16b);}static void FINISH(OUT_TYPE *In){//  Print_Cst();  for(int i=0; i<64; ++i) {    IN_TYPE M = Final[i]>>PASSB;    IN_TYPE H = HALF(16)/M;    In[i] = (OUT_TYPE)PMULHW( In[i]+H, M );  }}///////////////////////////////////////////////////////////*IEEE1180-like Errors specs:Peak error:   1.0000Peak MSE:     0.1813Overall MSE:  0.0502Peak ME:      0.1813Overall ME:   -0.0214*/static void TRANSPOSE( OUT_TYPE *In ){  for(int i=0; i<8; ++i)    for(int j=i+1; j<8; ++j) {      SKL_INT16 Tmp = In[i+8*j];      In[i+8*j] = In[j+8*i];      In[j+8*i] = Tmp;    }}void Skl_Dct16_LLM( OUT_TYPE *In ){  int i;  TRANSPOSE(In);  for(i=0; i<8; ++i) DCT_FWD_PASS1(In+i);  TRANSPOSE(In);  for(i=0; i<8; ++i) DCT_FWD_PASS2(In+i);  FINISH(In);}////////////////////////////////////////////////////////////   NASM source///////////////////////////////////////////////////////////*; [BITS 32];//////////////////////////////////////////////////////////////////////SECTION .dataalign 16Mults dw 0x0fff, 0x0b18, 0x08a8, 0x0968, 0x0fff, 0x0968, 0x14e7, 0x0b18,      dw 0x0b18, 0x07b2, 0x0601, 0x0686, 0x0b18, 0x0686, 0x0e7f, 0x07b2,      dw 0x0454, 0x0300, 0x0257, 0x028b, 0x0454, 0x028b, 0x05a8, 0x0300,      dw 0x0968, 0x0686, 0x0517, 0x0587, 0x0968, 0x0587, 0x0c4a, 0x0686,      dw 0x0fff, 0x0b18, 0x08a8, 0x0968, 0x0fff, 0x0968, 0x14e7, 0x0b18,      dw 0x0968, 0x0686, 0x0517, 0x0587, 0x0968, 0x0587, 0x0c4a, 0x0686,      dw 0x0a73, 0x073f, 0x05a8, 0x0625, 0x0a73, 0x0625, 0x0da8, 0x073f,      dw 0x0b18, 0x07b2, 0x0601, 0x0686, 0x0b18, 0x0686, 0x0e7f, 0x07b2Halves dw 0x0008, 0x000b, 0x000e, 0x000d, 0x0008, 0x000d, 0x0006, 0x000b,       dw 0x000b, 0x0010, 0x0015, 0x0013, 0x000b, 0x0013, 0x0008, 0x0010,       dw 0x001d, 0x002a, 0x0036, 0x0032, 0x001d, 0x0032, 0x0016, 0x002a,       dw 0x000d, 0x0013, 0x0019, 0x0017, 0x000d, 0x0017, 0x000a, 0x0013,       dw 0x0008, 0x000b, 0x000e, 0x000d, 0x0008, 0x000d, 0x0006, 0x000b,       dw 0x000d, 0x0013, 0x0019, 0x0017, 0x000d, 0x0017, 0x000a, 0x0013,       dw 0x000c, 0x0011, 0x0016, 0x0014, 0x000c, 0x0014, 0x0009, 0x0011,       dw 0x000b, 0x0010, 0x0015, 0x0013, 0x000b, 0x0013, 0x0008, 0x0010tan_1_16_16b times 8 dw 0x32ectan_2_16_16b times 8 dw 0x6a0atan_3_16_16b times 8 dw 0xab0eucos_4_16_16b times 8 dw 0xb505Rounder times 8 dw 0x0001Spill   times 8 dw 0;//////////////////////////////////////////////////////////////////////SECTION .text

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品一区在线观看| 欧美一区二区女人| 国产精品久久免费看| 国产成人在线免费| 久久九九久精品国产免费直播| 开心九九激情九九欧美日韩精美视频电影| 欧美乱熟臀69xxxxxx| 蜜臀av性久久久久av蜜臀妖精| 精品国产一区二区在线观看| 国产高清精品在线| 亚洲天堂福利av| 欧美人动与zoxxxx乱| 理论电影国产精品| 国产精品全国免费观看高清| 91色九色蝌蚪| 日本伊人午夜精品| 国产欧美精品在线观看| 色综合一个色综合亚洲| 日韩电影在线观看一区| 国产亚洲欧美色| 色一情一乱一乱一91av| 日韩精品电影在线| 日本一二三四高清不卡| 欧美中文字幕亚洲一区二区va在线| 成人av在线播放网址| 亚洲精品精品亚洲| 欧美刺激午夜性久久久久久久| 国产成人免费视频网站| 一区二区三区精品视频| 精品国产网站在线观看| 99这里只有久久精品视频| 日韩精品国产精品| 日韩一区有码在线| 日韩精品中午字幕| 91久久精品日日躁夜夜躁欧美| 人人狠狠综合久久亚洲| 日韩一区欧美小说| 26uuu欧美日本| 欧洲在线/亚洲| 国产999精品久久久久久| 亚洲成人动漫在线观看| 中文无字幕一区二区三区| 欧美日韩大陆一区二区| 成人动漫中文字幕| 看电视剧不卡顿的网站| 亚洲超碰97人人做人人爱| 中国色在线观看另类| 7777精品伊人久久久大香线蕉超级流畅 | 91精彩视频在线| 精品制服美女丁香| 亚洲国产日韩在线一区模特 | 国产日韩欧美激情| 8x福利精品第一导航| 91原创在线视频| 国产福利不卡视频| 青青草伊人久久| 亚洲国产一区在线观看| 国产精品久久久久久久久免费桃花 | 亚洲电影在线免费观看| 国产精品国产三级国产aⅴ入口| 欧美成人bangbros| 7777精品伊人久久久大香线蕉完整版| 91污片在线观看| 99久久婷婷国产综合精品| 国产成人自拍高清视频在线免费播放| 日韩av二区在线播放| 亚洲国产欧美另类丝袜| 亚洲欧美日韩国产另类专区| 日本一区二区三区四区在线视频| 精品国产乱码久久久久久蜜臀| 欧美精品免费视频| 制服丝袜一区二区三区| 3d成人h动漫网站入口| 欧美色爱综合网| 亚洲欧洲日韩一区二区三区| 久久色成人在线| 久久久久久9999| 2020国产精品| 国产欧美精品一区二区三区四区| 欧美精品一区二区三区蜜桃视频| 日韩女优制服丝袜电影| 日韩视频123| 2014亚洲片线观看视频免费| 日韩免费观看高清完整版在线观看| 欧美精品久久久久久久多人混战 | 亚洲成人av一区二区| 亚洲国产一二三| 日本亚洲最大的色成网站www| 日韩不卡手机在线v区| 首页欧美精品中文字幕| 蜜桃av噜噜一区| 国产米奇在线777精品观看| 国产成人午夜视频| 99久久伊人精品| 色综合夜色一区| 欧美一区二区免费| 久久蜜臀精品av| 成人欧美一区二区三区视频网页| 亚洲一区二区三区三| 亚洲h在线观看| 日韩高清欧美激情| 亚洲电影中文字幕在线观看| 性欧美大战久久久久久久久| 亚洲va欧美va天堂v国产综合| 中文字幕日韩av资源站| 亚洲第一av色| 久久精品国产免费看久久精品| 国内精品在线播放| 国产一区二区三区av电影| 国产美女一区二区三区| 成人国产电影网| 99久久99久久精品免费看蜜桃| 在线视频你懂得一区| 欧美日韩国产首页| 欧美电视剧免费全集观看| 国产视频一区二区在线观看| 一区二区三区在线观看网站| 日韩成人精品在线观看| 国产精品一区二区三区99| 成人免费av网站| 在线免费亚洲电影| 成人av影视在线观看| 91精品在线一区二区| 国产午夜三级一区二区三| 亚洲欧洲日本在线| 美女一区二区在线观看| 成人精品免费看| 日韩欧美一区二区三区在线| 国产欧美日韩三级| 亚洲一区二区视频在线观看| 久久99精品久久久久久国产越南| 成人免费视频caoporn| 一本久久综合亚洲鲁鲁五月天| 欧美大白屁股肥臀xxxxxx| 国产精品91一区二区| 91天堂素人约啪| 欧美一区二区免费观在线| 国产女主播一区| 青青草国产成人av片免费| 成人综合婷婷国产精品久久| 91蝌蚪国产九色| 91精品国产丝袜白色高跟鞋| 国产精品―色哟哟| 蜜桃视频在线观看一区二区| 91在线免费播放| 久久亚洲二区三区| 亚洲国产三级在线| 欧美综合欧美视频| 国产午夜亚洲精品不卡| 日韩国产在线观看| 色天天综合色天天久久| 欧美日韩视频专区在线播放| 亚洲日本成人在线观看| 国产精品77777| 69av一区二区三区| 欧美激情综合五月色丁香小说| 蜜臀久久99精品久久久久宅男| 91豆麻精品91久久久久久| 欧美激情综合在线| 免费成人在线影院| 日韩精品中午字幕| 午夜精彩视频在线观看不卡| 99视频精品在线| 国产偷国产偷精品高清尤物| 久久国产精品72免费观看| 欧美嫩在线观看| 欧美激情一二三区| 狠狠色丁香久久婷婷综合_中 | 国产亚洲欧美一区在线观看| 天堂va蜜桃一区二区三区漫画版| 欧美日韩国产一区二区三区地区| 1区2区3区精品视频| 成人激情小说乱人伦| 精品国产免费一区二区三区四区| 午夜电影一区二区三区| 777久久久精品| 日韩激情视频网站| 91精品啪在线观看国产60岁| 亚洲国产精品久久久久婷婷884| 一本一道波多野结衣一区二区| 中文字幕一区视频| 99精品欧美一区二区三区小说 | 欧美xxxx老人做受| 日韩vs国产vs欧美| 久久久久国产精品免费免费搜索| 蜜桃久久久久久久| 日韩精品一区二区三区在线 | 亚洲韩国一区二区三区| 欧美写真视频网站| 亚洲成人在线网站| 欧美日本乱大交xxxxx| 日日夜夜一区二区| 久久久亚洲国产美女国产盗摄| 狠狠色丁香婷综合久久| 久久一区二区三区四区| 国产999精品久久| 亚洲午夜免费视频| 欧美精品欧美精品系列| 久久精品国产精品亚洲综合| 2020国产精品自拍|