OSDN Git Service

i965_drv_video: add support for H264 on Clarkdale/Arrandale
[android-x86/hardware-intel-common-libva.git] / i965_drv_video / shaders / h264 / mc / add_Error_16x16_Y.asm
1 /*\r
2  * Add macroblock correction Y data blocks to predicted picture\r
3  * Copyright © <2010>, Intel Corporation.\r
4  *\r
5  * This program is licensed under the terms and conditions of the\r
6  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at\r
7  * http://www.opensource.org/licenses/eclipse-1.0.php.\r
8  *\r
9  */\r
10         \r
11 // Module name: add_Error_16x16_Y.asm\r
12 //\r
13 // Add macroblock correction Y data blocks to predicted picture\r
14 //\r
15 \r
16 //  Every line of predicted Y data is added to Y error data if CBP bit is set\r
17 \r
18     mov (1) PERROR_UD<1>:ud     0x10001*ERRBUF*GRFWIB+0x00100000:ud     // Pointers to first and second row of error block\r
19 \r
20     and.z.f0.1 (1)      NULLREG    REG_CBPCY    CBP_Y_MASK\r
21     (f0.1) jmpi (1) End_add_Error_16x16_Y       // Skip all blocks\r
22 \r
23 //  Block Y0\r
24 //\r
25     $for(0,0; <8; 2,1) {\r
26         add.sat (16)    DEC_Y(%1)<2>    r[PERROR,%2*GRFWIB]REGION(8,1):w        PRED_Y(%1)REGION(8,2) {Compr}\r
27     }\r
28 \r
29 //  Block Y1\r
30 //\r
31     $for(0,0; <8; 2,1) {\r
32         add.sat (16)    DEC_Y(%1,16)<2>         r[PERROR,%2*GRFWIB+0x80]REGION(8,1):w   PRED_Y(%1,16)REGION(8,2) {Compr}\r
33     }\r
34 \r
35 //  Block Y2\r
36 //\r
37     $for(8,0; <16; 2,1) {\r
38         add.sat (16)    DEC_Y(%1)<2>    r[PERROR,%2*GRFWIB+0x100]REGION(8,1):w  PRED_Y(%1)REGION(8,2) {Compr}\r
39     }\r
40 \r
41 //  Block Y3\r
42 //\r
43     $for(8,0; <16; 2,1) {\r
44         add.sat (16)    DEC_Y(%1,16)<2>         r[PERROR,%2*GRFWIB+0x180]REGION(8,1):w  PRED_Y(%1,16)REGION(8,2) {Compr}\r
45     }\r
46 \r
47 End_add_Error_16x16_Y:\r
48     add (1) PERROR_UD<1>:ud     PERROR_UD:ud    0x01800180:ud   // Pointers to Y3 error block\r
49 \r
50 //  End of add_Error_16x16_Y\r
51 \r