📄 decode_altivec.c
字号:
v8 = vec_mergel(v3,v4); vsum = vec_sub(v5,v6); v9 = vec_sub(v7,v8); vsum = vec_add(vsum,v9); v3 = (vector float)vec_cts(vsum,0); v1 = (vector float)vec_cmpgt(vsum,vmax); v2 = (vector float)vec_cmplt(vsum,vmin); vsample1 = vec_ld(0,samples); vsample2 = vec_ld(15,samples); v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3); v4 = (vector float)vec_perm(vsample1,vsample2,vperm3); v5 = (vector float)vec_perm(v3,v4,vperm5); v6 = (vector float)vec_perm(vsample2,vsample1,vperm3); v7 = (vector float)vec_perm(v5,v6,vperm4); v8 = (vector float)vec_perm(v6,v5,vperm4); vec_st((vector signed short)v7,15,samples); vec_st((vector signed short)v8,0,samples); samples += 8;#ifdef __APPLE__ v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int)(31)); v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int)(31));#else v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int){31,31,31,31}); v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int){31,31,31,31});#endif v5 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2); vclip = vec_sums((vector signed int)v5,vclip); } { real sum; sum = REAL_MUL(window[0x0], b0[0x0]); sum += REAL_MUL(window[0x2], b0[0x2]); sum += REAL_MUL(window[0x4], b0[0x4]); sum += REAL_MUL(window[0x6], b0[0x6]); sum += REAL_MUL(window[0x8], b0[0x8]); sum += REAL_MUL(window[0xA], b0[0xA]); sum += REAL_MUL(window[0xC], b0[0xC]); sum += REAL_MUL(window[0xE], b0[0xE]); WRITE_SAMPLE(samples,sum,clip); b0-=0x10,window-=0x20,samples+=step; } window += bo1<<1; vperm1 = vec_lvsl(0,window);#ifdef __APPLE__ vperm2 = vec_perm(vperm1,vperm1,(vector unsigned char)(12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3));#else vperm2 = vec_perm(vperm1,vperm1,(vector unsigned char){12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3});#endif vperm3 = vec_lvsl(0,samples); vperm4 = vec_lvsr(0,samples); for (j=3;j;j--) { vsum = vec_xor(vsum,vsum); vsum2 = vec_xor(vsum2,vsum2); vsum3 = vec_xor(vsum3,vsum3); vsum4 = vec_xor(vsum4,vsum4); v1 = vec_ld(-1,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum = vec_nmsub(v1,v6,vsum); vsum = vec_nmsub(v2,v7,vsum); vsum = vec_nmsub(v3,v8,vsum); vsum = vec_nmsub(v4,v9,vsum); window -= 32; b0 -= 16; v1 = vec_ld(0,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum2 = vec_nmsub(v1,v6,vsum2); vsum2 = vec_nmsub(v2,v7,vsum2); vsum2 = vec_nmsub(v3,v8,vsum2); vsum2 = vec_nmsub(v4,v9,vsum2); window -= 32; b0 -= 16; v1 = vec_ld(0,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum3 = vec_nmsub(v1,v6,vsum3); vsum3 = vec_nmsub(v2,v7,vsum3); vsum3 = vec_nmsub(v3,v8,vsum3); vsum3 = vec_nmsub(v4,v9,vsum3); window -= 32; b0 -= 16; v1 = vec_ld(0,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum4 = vec_nmsub(v1,v6,vsum4); vsum4 = vec_nmsub(v2,v7,vsum4); vsum4 = vec_nmsub(v3,v8,vsum4); vsum4 = vec_nmsub(v4,v9,vsum4); window -= 32; b0 -= 16; v1 = vec_mergeh(vsum,vsum3); v2 = vec_mergeh(vsum2,vsum4); v3 = vec_mergel(vsum,vsum3); v4 = vec_mergel(vsum2,vsum4); v5 = vec_mergeh(v1,v2); v6 = vec_mergel(v1,v2); v7 = vec_mergeh(v3,v4); v8 = vec_mergel(v3,v4); vsum = vec_add(v5,v6); v9 = vec_add(v7,v8); vsum = vec_add(vsum,v9); v3 = (vector float)vec_cts(vsum,0); v1 = (vector float)vec_cmpgt(vsum,vmax); v2 = (vector float)vec_cmplt(vsum,vmin); vsample1 = vec_ld(0,samples); vsample2 = vec_ld(15,samples); v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3); v4 = (vector float)vec_perm(vsample1,vsample2,vperm3); v5 = (vector float)vec_perm(v3,v4,vperm5); v6 = (vector float)vec_perm(vsample2,vsample1,vperm3); v7 = (vector float)vec_perm(v5,v6,vperm4); v8 = (vector float)vec_perm(v6,v5,vperm4); vec_st((vector signed short)v7,15,samples); vec_st((vector signed short)v8,0,samples); samples += 8;#ifdef __APPLE__ v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int)(31)); v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int)(31));#else v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int){31,31,31,31}); v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int){31,31,31,31});#endif v5 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2); vclip = vec_sums((vector signed int)v5,vclip); }#ifdef __APPLE__ vperm5 = (vector unsigned char)(0,1,18,19,2,3,22,23,4,5,26,27,28,29,30,31);#else vperm5 = (vector unsigned char){0,1,18,19,2,3,22,23,4,5,26,27,28,29,30,31};#endif { vsum = vec_xor(vsum,vsum); vsum2 = vec_xor(vsum2,vsum2); vsum3 = vec_xor(vsum3,vsum3); vsum4 = vec_xor(vsum4,vsum4); v1 = vec_ld(-1,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum = vec_nmsub(v1,v6,vsum); vsum = vec_nmsub(v2,v7,vsum); vsum = vec_nmsub(v3,v8,vsum); vsum = vec_nmsub(v4,v9,vsum); window -= 32; b0 -= 16; v1 = vec_ld(0,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum2 = vec_nmsub(v1,v6,vsum2); vsum2 = vec_nmsub(v2,v7,vsum2); vsum2 = vec_nmsub(v3,v8,vsum2); vsum2 = vec_nmsub(v4,v9,vsum2); window -= 32; b0 -= 16; v1 = vec_ld(0,window); v2 = vec_ld(-16,window); v3 = vec_ld(-32,window); v4 = vec_ld(-48,window); v5 = vec_ld(-64,window); v1 = vec_perm(v2,v1,vperm2); v6 = vec_ld(0,b0); v2 = vec_perm(v3,v2,vperm2); v7 = vec_ld(16,b0); v3 = vec_perm(v4,v3,vperm2); v8 = vec_ld(32,b0); v4 = vec_perm(v5,v4,vperm2); v9 = vec_ld(48,b0); vsum3 = vec_nmsub(v1,v6,vsum3); vsum3 = vec_nmsub(v2,v7,vsum3); vsum3 = vec_nmsub(v3,v8,vsum3); vsum3 = vec_nmsub(v4,v9,vsum3); v1 = vec_mergeh(vsum,vsum3); v2 = vec_mergeh(vsum2,vsum2); v3 = vec_mergel(vsum,vsum3); v4 = vec_mergel(vsum2,vsum2); v5 = vec_mergeh(v1,v2); v6 = vec_mergel(v1,v2); v7 = vec_mergeh(v3,v4); v8 = vec_mergel(v3,v4); vsum = vec_add(v5,v6); v9 = vec_add(v7,v8); vsum = vec_add(vsum,v9); v3 = (vector float)vec_cts(vsum,0); v1 = (vector float)vec_cmpgt(vsum,vmax); v2 = (vector float)vec_cmplt(vsum,vmin); vsample1 = vec_ld(0,samples); vsample2 = vec_ld(15,samples); v3 = (vector float)vec_packs((vector signed int)v3,(vector signed int)v3); v4 = (vector float)vec_perm(vsample1,vsample2,vperm3); v5 = (vector float)vec_perm(v3,v4,vperm5); v6 = (vector float)vec_perm(vsample2,vsample1,vperm3); v7 = (vector float)vec_perm(v5,v6,vperm4); v8 = (vector float)vec_perm(v6,v5,vperm4); vec_st((vector signed short)v7,15,samples); vec_st((vector signed short)v8,0,samples); samples += 6;#ifdef __APPLE__ v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int)(31,31,31,32)); v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int)(31,31,31,32));#else v1 = (vector float)vec_sr((vector unsigned int)v1,(vector unsigned int){31,31,31,32}); v2 = (vector float)vec_sr((vector unsigned int)v2,(vector unsigned int){31,31,31,32});#endif v5 = (vector float)vec_add((vector unsigned int)v1,(vector unsigned int)v2); vclip = vec_sums((vector signed int)v5,vclip); vec_st(vclip,0,clip_tmp); clip += clip_tmp[3]; } } if(final) fr->buffer.fill += 128; return clip;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -