📄 idctchen.cpp
字号:
// punpckhwd mm2, mm0 // mm0
// movq mm5, [ebx+8+24*2]; // mm5
movq [ebx+24*2], mm1 // mm1
psubw mm5, mm7 // mm7
movq mm3, mm6 // mm3
//#define mm1 mm1
//#define mm0 mm0
movq mm1, mm4 // mm1
punpcklwd mm6, mm5
movq mm0, mm2 // mm0
punpckhwd mm3, mm5 // mm5
punpckhdq mm0, mm3 // mm0=(07,17,27,37)
psraw mm0, idct_chen_mmx1_RS8
punpckldq mm2, mm3 // mm2=(06,16,26,36) mm3
psraw mm2, idct_chen_mmx1_RS8
punpckhdq mm1, mm6 // mm1=(05,15,25,35)
movq [ebx+24*2+8], mm0 // mm0
psraw mm1, idct_chen_mmx1_RS8
movq [ebx+16*2+8], mm2 // mm2
punpckldq mm4, mm6 // mm4=(04,14,24,34) mm6
movq mm0, [ebx+32*2+0*2]; // mm0
psraw mm4, idct_chen_mmx1_RS8
movq mm2, [ebx+32*2+16*2]; // mm2
movq mm3, mm0 // mm3
movq [ebx+8*2+8], mm1 // mm1
movq mm5, mm2 // mm5
// movq [ebx+0*2+8], mm4 // mm4
//#define mm7 mm7
//#define mm0 mm0
//#define mm1 mm1
//#define mm2 mm2
//#define mm3 mm3
//#define mm4 mm4
//#define mm5 mm5
//#define mm6 mm6
////#define mm1 mm7
// movq mm0, [ebx+32*2+0*2]; // mm0
movq mm1, [ebx+32*2+8*2]; // mm1
movq [ebx+0*2+8], mm4 // mm4
// movq mm2, [ebx+32*2+16*2]; // mm2
// movq mm3, mm0 // mm3
punpcklwd mm0, mm1
movq mm4, [ebx+32*2+24*2]; // mm4
punpckhwd mm3, mm1 // mm1
// movq mm5, mm2 // mm5
// rows calculation
punpcklwd mm2, mm4
movq mm6, mm0 // mm6
punpckhdq mm6, mm2 // mm6=(01,11,21,31) mm2
movq mm1, mm3 // mm1
punpckldq mm0, mm2 // mm0=(00,10,20,30)
punpckhwd mm5, mm4 // mm4
movq [ebx+32*2+8*2], mm6 // mm6
punpckldq mm3, mm5 // mm3=(02,12,22,32)
// movq [ebx+32*2+0*2], mm0 // mm0
// punpckhdq mm1, mm5 // mm1=(03,13,23,33) mm5
//#define mm1 mm1
// movq mm1, mm3 // mm1
//#define mm4 mm4
movq mm4, [ebx+32*2+8+0*2]; // mm4
punpckhdq mm1, mm5 // mm1=(03,13,23,33) mm5
movq [ebx+32*2+0*2], mm0 // mm0
movq mm2, mm4 // mm2
// punpckldq mm3, mm5 // mm3=(02,12,22,32)
//#define mm0 mm0
movq mm0, [ebx+32*2+8+8*2]; // mm0
// punpckhdq mm1, mm5 // mm1=(03,13,23,33) mm5
//#define mm2 mm2
movq [ebx+32*2+16*2], mm3 // mm3
// movq mm2, mm4 // mm2
//#define mm6 mm6
punpcklwd mm4, mm0
movq [ebx+32*2+24*2], mm1 // mm1
punpckhwd mm2, mm0 // mm0
movq mm6, [ebx+32*2+8+16*2]; // mm6
//#define mm5 mm5
//#define mm3 mm3
// punpckhwd mm2, mm0 // mm0
movq mm1, mm4 // mm1
movq mm5, [ebx+32*2+8+24*2]; // mm5
movq mm3, mm6 // mm3
//#define mm1 mm1
//#define mm0 mm0
// movq mm1, mm4 // mm1
punpcklwd mm6, mm5
movq mm0, mm2 // mm0
punpckhdq mm1, mm6 // mm1=(05,15,25,35)
;//slot
punpckhwd mm3, mm5 // mm5
;//slot
movq [ebx+32*2+8*2+8], mm1 // mm1
punpckhdq mm0, mm3 // mm0=(07,17,27,37)
punpckldq mm4, mm6 // mm4=(04,14,24,34) mm6
;//slot
movq [ebx+32*2+24*2+8], mm0 // mm0
punpckldq mm2, mm3 // mm2=(06,16,26,36) mm3
movq mm0, [ebx+32*2+16*2]; // mm0=b2 mm0
;//slot
movq [ebx+32*2+0*2+8], mm4 //
movq mm4, mm0; // mm4=mm0=b2 mm4
movq [ebx+32*2+16*2+8], mm2 // mm2
;//slot
movq mm3, idct_chen_mmx1_c5c; // mm3
//#define mm0 mm0
//#define mm1 mm1
//#define mm2 mm2
//#define mm3 mm3
//#define mm4 mm4
//#define mm5 mm5
//#define mm6 mm6
//#define mm7 mm7
// movq mm0, [ebx+32*2+16*2]; // mm0=b2 mm0
movq mm1, [ebx+32*2+8+16*2]; // mm1=b3 mm1
movq mm2, idct_chen_mmx1_c6c; // mm2
// movq mm3, idct_chen_mmx1_c5c; // mm3
// movq mm4, mm0; // mm4=mm0=b2 mm4
movq mm5, mm1; // mm5=mm1=b3 mm5
paddsw mm0, mm2; // b2+c6c
paddsw mm1, mm2; // b3+c6c mm2
movq mm6, idct_chen_mmx1_c6; // mm6
paddsw mm4, mm3; // b2+c5c
movq mm7, idct_chen_mmx1_c5; // mm7
pmulhw mm1, mm6; //
pmulhw mm4, mm7; //
paddsw mm5, mm3; // b3+c5c mm3
movq mm2, [ebx+32*2+0*2]; // mm2=b0 mm2
pmulhw mm0, mm6; // mm6
movq mm3, [ebx+32*2+8+0*2]; // mm3=b1 mm3
pmulhw mm5, mm7; // mm7
movq mm6, idct_chen_mmx1_c0; // mm6
paddsw mm1, mm4; // mm1=a3 mm4
movq mm4, idct_chen_mmx1_c0c; // mm4
;//slot
psubsw mm0,mm5; // mm0=a2 mm5
//#define mm2 mm2
//#define mm3 mm3
//#define mm4 mm4
// movq mm2, [ebx+32*2+0*2]; // mm2=b0 mm2
// movq mm3, [ebx+32*2+8+0*2]; // mm3=b1 mm3
// movq mm4, idct_chen_mmx1_c0c; // mm4
paddsw mm2, mm4; // b0+c0c
paddsw mm3, mm4; // b1+c0c mm4
//#define mm6 mm6
// movq mm6, idct_chen_mmx1_c0; // mm6
pmulhw mm2, mm6;
pmulhw mm3, mm6; // mm6
//#define mm7 mm7
;//slot
movq mm6, [ebx+32*2+8*2]; // mm6=a0 mm6
movq mm7, mm2; // mm7
;//stall
;//slot
paddsw mm2, mm3; // mm2=a0
psubsw mm7, mm3; // mm7=a1 mm3
// a(0,1,2,3) in rd(24,28,16,17)
//#define mm5 mm5
movq mm5, mm2; // mm5=mm2=a0 mm5
paddsw mm2, mm1; // mm2=b0
movq mm3, [ebx+32*2+8+24*2]; // mm3=a3 mm3
psubsw mm5, mm1; // mm5=b3 mm1
movq [ebx+32*2+0*2], mm2; // mm2
movq mm4, mm7; // mm4=mm7=a1 mm4
movq [ebx+32*2+8+16*2], mm5; // mm5
//#define mm4 mm4
// movq mm4, mm7; // mm4=mm7=a1 mm4
paddsw mm7, mm0; // mm7=b1
movq mm2, idct_chen_mmx1_c4c; // mm2
psubsw mm4, mm0; // mm4=b2 mm0
movq [ebx+32*2+16*2], mm7; // mm7
movq mm5, mm6; // mm5=mm6=a0 mm5
movq [ebx+32*2+8+0*2], mm4; // mm4
// b(0,1,2,3) are stored back
//#define mm6 mm6
// movq mm6, [ebx+32*2+8*2]; // mm6=a0 mm6
//#define mm3 mm3
// movq mm3, [ebx+32*2+8+24*2]; // mm3=a3 mm3
//#define mm2 mm2
//#define mm1 mm1
//#define mm5 mm5
//#define mm7 mm7
// movq mm2, idct_chen_mmx1_c4c; // mm2
movq mm7, mm3; // mm7=mm3=a3 mm7
movq mm1, idct_chen_mmx1_c1c; // mm1
// movq mm5, mm6; // mm5=mm6=a0 mm5
paddsw mm6, mm2; // a0+c4c
movq mm0, idct_chen_mmx1_c4; // mm0
paddsw mm3, mm2; // a3+c4c mm2
movq mm4, idct_chen_mmx1_c1; // mm4
pmulhw mm3, mm0; //
paddsw mm5, mm1; // a0+c1c
// paddsw mm7, mm1; // a3+c1c mm1
//#define mm0 mm0
//#define mm4 mm4
// movq mm0, idct_chen_mmx1_c4; // mm0
// movq mm4, idct_chen_mmx1_c1; // mm4
// pmulhw mm3, mm0; //
pmulhw mm6, mm0; // mm0
pmulhw mm5, mm4; //
paddsw mm7, mm1; // a3+c1c mm1
movq mm2, [ebx+32*2+24*2]; // mm2=a1 mm2
pmulhw mm7, mm4; // mm4
movq mm1, [ebx+32*2+8+8*2]; // mm1=a2 mm1
movq mm4, mm2; // mm4=mm2=a1 mm4
movq mm0, idct_chen_mmx1_c3c; // mm0
paddsw mm3,mm5; // mm3=c3 mm5
// psubsw mm6,mm7; // mm6=c0 mm7
//#define mm2 mm2
//#define mm1 mm1
// movq mm2, [ebx+32*2+24*2]; // mm2=a1 mm2
// movq mm1, [ebx+32*2+8+8*2]; // mm1=a2 mm1
//#define mm5 mm5
//#define mm0 mm0
movq mm5, idct_chen_mmx1_c2c; // mm5
psubsw mm6,mm7; // mm6=c0 mm7
// movq mm0, idct_chen_mmx1_c3c; // mm0
//#define mm4 mm4
//#define mm7 mm7
// movq mm4, mm2; // mm4=mm2=a1 mm4
movq mm7, mm1; // mm7=mm1=a2 mm7
paddsw mm2, mm5; // a1+c2c
paddsw mm1, mm5; // a2+c2c mm5
paddsw mm4, mm0; // a1+c3c
movq mm5, idct_chen_mmx1_c2; // mm5
paddsw mm7, mm0; // a2+c3c mm0
//#define mm5 mm5
//#define mm0 mm0
// movq mm5, idct_chen_mmx1_c2; // mm5
movq mm0, idct_chen_mmx1_c3; // mm0
pmulhw mm1, mm5; //
pmulhw mm4, mm0; //
;//slot
pmulhw mm2, mm5; // mm5
movq mm5, mm3; // mm5=mm3=c3 mm5
pmulhw mm7, mm0; // mm0
;//slot
movq mm0, idct_chen_mmx1_c0c; // mm0
psubsw mm1, mm4; // mm1=c1 mm4
movq mm4, mm6; // mm4=mm6=c0 mm4
paddsw mm6, mm1; // mm6=a0
paddsw mm2, mm7; // mm2=c2 mm7
// c(0,1,2,3) in rd(0,9,8,1)
//#define mm4 mm4
//#define mm5 mm5
//#define mm0 mm0
// movq mm4, mm6; // mm4=mm6=c0 mm4
// paddsw mm6, mm1; // mm6=a0
psubsw mm4, mm1; // mm4=a1 mm1
// movq mm5, mm3; // mm5=mm3=c3 mm5
paddsw mm3, mm2; // mm3=a3
psubsw mm5, mm2; // mm5=a2 mm2
// a(0,1,2,3) in rd(0,31,32,1)
// movq mm0, idct_chen_mmx1_c0c; // mm0
movq mm7, idct_chen_mmx1_c0; // mm7
psllw mm5, 1
psllw mm4, 1
paddsw mm5, mm0; // a2+c0c mm0
paddsw mm4, mm0; // a1+c0c
//#define mm7 mm7
//#define mm1 mm1
//#define mm2 mm2
//#define mm0 mm0
// movq mm7, idct_chen_mmx1_c0; // mm7
pmulhw mm5, mm7;
movq mm2, [ebx+32*2+0*2]; // mm2=b0 mm2
pmulhw mm4, mm7; // mm7
movq mm0, mm2; // mm0
paddsw mm2, mm3; // mm2=y0
movq mm7, [ebx+32*2+16*2]; // mm7=b1 mm7
movq mm1, mm5; // mm1
movq [ebx+32*2+0*2], mm2; // mm2
psubsw mm0, mm3; // mm0=y7 mm3
movq mm2, [ebx+32*2+8+16*2]; // mm2=b3 mm2
psubsw mm5, mm4; // mm5=c1
movq [ebx+32*2+8+24*2], mm0; // mm0
paddsw mm1, mm4; // mm1=c2 mm4
movq mm0, [ebx+32*2+8+0*2]; // mm0=b2 mm0
movq mm4, mm7; // mm4 // c(0,1,2,3) in rd(0,32,35,1)
//#define mm7 mm7
//#define mm4 mm4
//#define mm2 mm2
// movq mm7, [ebx+32*2+16*2]; // mm7=b1 mm7
// movq mm4, mm7; // mm4
// movq mm2, [ebx+32*2+8+16*2]; // mm2=b3 mm2
paddsw mm7, mm1; // mm7=y1
psubsw mm4, mm1; // mm4=y6 mm1
movq mm3, mm2; // mm3
movq [ebx+32*2+8*2], mm7; // mm7
paddsw mm2, mm6; // mm2=y3
movq [ebx+32*2+8+16*2], mm4; // mm4
//#define mm3 mm3
//#define mm0 mm0
//#define mm7 mm7
// movq mm3, mm2; // mm3
// paddsw mm2, mm6; // mm2=y3
psubsw mm3, mm6; // mm3=y4 mm6
movq [ebx+32*2+24*2], mm2; // mm2
// movq mm0, [ebx+32*2+8+0*2]; // mm0=b2 mm0
movq mm7, mm0; // mm7
movq [ebx+32*2+8+0*2], mm3; // mm3
paddsw mm0, mm5; // mm0=y2
movq mm1, [ebx+32*2+8*2]; // mm1
psubsw mm7, mm5; // mm7=y5 mm5
movq [ebx+32*2+16*2], mm0; // mm0
;//slot
movq mm0, [ebx+32*2+0*2]; // mm0
;//slot
movq [ebx+32*2+8+8*2], mm7; // mm7
//#define mm7 mm7
//#define mm0 mm0
//#define mm1 mm1
//#define mm2 mm2
//#define mm3 mm3
//#define mm4 mm4
//#define mm5 mm5
//#define mm6 mm6
////#define mm1 mm7
pcmpeqw mm7, mm7
movq mm2, [ebx+32*2+16*2]; // mm2
psllw mm7, idct_chen_mmx1_LS8 // mm7=-2
// psubw mm7, mm7
// movq mm0, [ebx+32*2+0*2]; // mm0
psubw mm0, mm7
// movq mm1, [ebx+32*2+8*2]; // mm1
psubw mm1, mm7
psubw mm2, mm7
movq mm3, mm0 // mm3
movq mm4, [ebx+32*2+24*2]; // mm4
punpcklwd mm0, mm1
psubw mm4, mm7
punpckhwd mm3, mm1 // mm1
movq mm5, mm2 // mm5
// rows calculation
punpcklwd mm2, mm4
movq mm6, mm0 // mm6
punpckhwd mm5, mm4 // mm4
movq mm1, mm3 // mm1
punpckldq mm0, mm2 // mm0=(00,10,20,30)
movq mm4, [ebx+32*2+8+0*2]; // mm4
psraw mm0, idct_chen_mmx1_RS8
punpckhdq mm6, mm2 // mm6=(01,11,21,31) mm2
psubw mm4, mm7
movq [ebx+32*2+0*2], mm0 // mm0
psraw mm6, idct_chen_mmx1_RS8
// movq [ebx+32*2+8*2], mm6 // mm6
//#define mm1 mm1
// movq mm1, mm3 // mm1
//#define mm4 mm4
// movq mm4, [ebx+32*2+8+0*2]; // mm4
// psubw mm4, mm7
movq mm0, [ebx+32*2+8+8*2]; // mm0
punpckldq mm3, mm5 // mm3=(02,12,22,32)
movq [ebx+32*2+8*2], mm6 // mm6
psraw mm3, idct_chen_mmx1_RS8
//#define mm0 mm0
// movq mm0, [ebx+32*2+8+8*2]; // mm0
psubw mm0, mm7
punpckhdq mm1, mm5 // mm1=(03,13,23,33) mm5
// psraw mm1, idct_chen_mmx1_RS8
//#define mm2 mm2
movq [ebx+32*2+16*2], mm3 // mm3
psraw mm1, idct_chen_mmx1_RS8
movq mm2, mm4 // mm2
//#define mm6 mm6
punpcklwd mm4, mm0
movq mm6, [ebx+32*2+8+16*2]; // mm6
punpckhwd mm2, mm0 // mm0
movq [ebx+32*2+24*2], mm1 // mm1
psubw mm6, mm7
//#define mm5 mm5
//#define mm3 mm3
// punpckhwd mm2, mm0 // mm0
movq mm5, [ebx+32*2+8+24*2]; // mm5
movq mm3, mm6 // mm3
psubw mm5, mm7 // mm7
//#define mm1 mm1
//#define mm0 mm0
movq mm1, mm4 // mm1
punpcklwd mm6, mm5
;//slot
punpckhwd mm3, mm5 // mm5
movq mm0, mm2 // mm0
punpckhdq mm0, mm3 // mm0=(07,17,27,37)
;//slot
punpckldq mm2, mm3 // mm2=(06,16,26,36) mm3
;//slot
psraw mm0, idct_chen_mmx1_RS8
;//slot
punpckhdq mm1, mm6 // mm1=(05,15,25,35)
;//slot
psraw mm2, idct_chen_mmx1_RS8
;//slot
punpckldq mm4, mm6 // mm4=(04,14,24,34) mm6
;//slot
movq [ebx+32*2+24*2+8], mm0 // mm0
psraw mm1, idct_chen_mmx1_RS8
movq [ebx+32*2+16*2+8], mm2 // mm2
psraw mm4, idct_chen_mmx1_RS8
movq [ebx+32*2+8*2+8], mm1 // mm1
movq [ebx+32*2+0*2+8], mm4 // mm4
emms
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -