Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright © 2012 Intel Corporation
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a
  5.  * copy of this software and associated documentation files (the "Software"),
  6.  * to deal in the Software without restriction, including without limitation
  7.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8.  * and/or sell copies of the Software, and to permit persons to whom the
  9.  * Software is furnished to do so, subject to the following conditions:
  10.  *
  11.  * The above copyright notice and this permission notice (including the next
  12.  * paragraph) shall be included in all copies or substantial portions of the
  13.  * Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  18.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  20.  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  21.  * IN THE SOFTWARE.
  22.  *
  23.  * Authors:
  24.  *    Xiang Haihao <haihao.xiang@intel.com>
  25.  */
  26.        
  27. __PAK_OBJECT:  
  28.         mul             (1)     tmp_vme_output.8<1>:ud          width_in_mb<0,1,0>:uw           mb_y<0,1,0>:ub {align1};
  29.         add             (1)     tmp_vme_output.8<1>:ud          tmp_vme_output.8<0,1,0>:ud      mb_x<0,1,0>:ub {align1};
  30.        
  31.         mov             (16)    pak_object_ud<1>:ud             0x0:ud {align1} ;
  32.         mov             (1)     pak_object0_ud<1>:ud            MFC_AVC_PAK_OBJECT_INTRA_DW0 ;
  33.         mov             (1)     pak_object5_ud<1>:ud            MFC_AVC_PAK_OBJECT_INTRA_DW5 ;
  34.  
  35.         and.z.f0.1      (1)     null<1>:uw                      flags<0,1,0>:uw         FLAG_MASK_LAST_OBJECT {align1};
  36.        
  37. __PAK_OBJECT_LOOP:
  38.         mov             (8)     msg_reg0.0<1>:ud                tmp_vme_output<8,8,1>:ud {align1} ;
  39.        
  40. send (16)
  41.         msg_ind
  42.         ob_read_wb
  43.         null
  44.         data_port(
  45.                 OB_CACHE_TYPE,
  46.                 OB_READ,
  47.                 OB_CONTROL_0,
  48.                 BIND_IDX_VME_OUTPUT,
  49.                 OB_WRITE_COMMIT_CATEGORY,
  50.                 OB_HEADER_PRESENT
  51.         )
  52.         mlen 1
  53.         rlen ob_read_wb_len_vme_intra
  54.         {align1};
  55.  
  56.         /* DW4 */
  57.         add             (1)     pak_object4_ud<1>:ud            mb_xy<0,1,0>:uw                 MFC_AVC_PAK_OBJECT_INTRA_DW4 {align1} ;
  58.         add             (1)     mb_x<1>:ub                      mb_x<0,1,0>:ub                  1:uw {align1};
  59.         cmp.e.f0.0      (1)     null<1>:uw                      width_in_mb<0,1,0>:uw           mb_x<0,1,0>:ub {align1};
  60.         (f0.0)mov       (1)     mb_x<1>:ub                      0:uw {align1} ;
  61.         (f0.0)add       (1)     mb_y<1>:ub                      mb_y<0,1,0>:ub                  1:uw {align1} ;
  62.  
  63.         /* DW6 */
  64.         mov             (1)     pak_object6_ud<1>:ud            0x0:ud {align1} ;
  65.         (-f0.1)mov      (1)     pak_object6_ud<1>:ud            MFC_AVC_PAK_OBJECT_INTRA_DW6 {align1} ;
  66.         cmp.e.f0.0      (1)     null<1>:uw                      total_mbs<0,1,0>:uw             1:uw {align1};        
  67.         (-f0.0)mov      (1)     pak_object6_ud<1>:ud            0x0:ud {align1} ;
  68.         add             (1)     pak_object6_ud<1>:ud            pak_object6_ud<0,1,0>:ud        qp<0,1,0>:ub {align1} ;
  69.  
  70.         /* DW3 */
  71.         and             (1)     pak_object3_ud<1>:ud            ob_read_wb0.0<0,1,0>:ud         0xFFFF {align1} ;
  72.         add             (1)     pak_object3_ud<1>:ud            pak_object3_ud<0,1,0>:ud        MFC_AVC_PAK_OBJECT_INTRA_DW3 {align1} ;
  73.  
  74.         /* DW7 */
  75.         mov             (1)     pak_object7_ud<1>:ud            ob_read_wb0.4<0,1,0>:ud {align1} ;
  76.  
  77.         /* DW8 */
  78.         mov             (1)     pak_object8_ud<1>:ud            ob_read_wb0.8<0,1,0>:ud {align1} ;
  79.  
  80.         /* DW9 */
  81.         and             (1)     pak_object9_ud<1>:ud            ob_read_wb0.12<0,1,0>:ud        0xFC:ud {align1} ;
  82.        
  83.         mov             (8)     msg_reg0.0<1>:ud                tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
  84.         mov             (8)     msg_reg1.0<1>:ud                pak_object_ud<8,8,1>:ud {align1} ;
  85.         mov             (8)     msg_reg2.0<1>:ud                pak_object8_ud<8,8,1>:ud {align1} ;        
  86.  
  87.         /* the new offset */
  88.         add             (1)     tmp_vme_output.8<1>:ud          tmp_vme_output.8<0,1,0>:ud      1:ud {align1} ;
  89.        
  90. send (16)
  91.         msg_ind
  92.         ob_write_wb
  93.         null
  94.         data_port(
  95.                 OB_CACHE_TYPE,
  96.                 OB_WRITE,
  97.                 OB_CONTROL_3,
  98.                 BIND_IDX_MFC_BATCHBUFFER,
  99.                 OB_WRITE_COMMIT_CATEGORY,
  100.                 OB_HEADER_PRESENT
  101.         )
  102.         mlen 3
  103.         rlen ob_write_wb_length
  104.         {align1};
  105.  
  106.         /* the new offset */
  107.         add             (1)     tmp_mfc_batchbuffer.8<1>:ud     tmp_mfc_batchbuffer.8<0,1,0>:ud 4:ud {align1} ;
  108.  
  109.         add.z.f0.0      (1)     total_mbs<1>:w                  total_mbs<0,1,0>:w      -1:w {align1};
  110.         (-f0.0)jmpi     (1)     __PAK_OBJECT_LOOP ;
  111.        
  112.