Home | History | Annotate | Download | only in arm_neon_asm
      1 ;
      2 ; Copyright (C) 2009 The Android Open Source Project
      3 ;
      4 ; Licensed under the Apache License, Version 2.0 (the "License");
      5 ; you may not use this file except in compliance with the License.
      6 ; You may obtain a copy of the License at
      7 ;
      8 ;      http://www.apache.org/licenses/LICENSE-2.0
      9 ;
     10 ; Unless required by applicable law or agreed to in writing, software
     11 ; distributed under the License is distributed on an "AS IS" BASIS,
     12 ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 ; See the License for the specific language governing permissions and
     14 ; limitations under the License.
     15 ;
     16 
     17     REQUIRE8
     18     PRESERVE8
     19 
     20     AREA    |.text|, CODE
     21 
     22     EXPORT h264bsdFlushBits
     23 
     24 ; Input / output registers
     25 pStrmData       RN  0
     26 numBits         RN  1
     27 readBits        RN  2
     28 strmBuffSize    RN  3
     29 pStrmBuffStart  RN  1
     30 pStrmCurrPos    RN  2
     31 bitPosInWord    RN  1
     32 
     33 ; -- NEON registers --
     34 
     35 
     36 
     37 ;/*------------------------------------------------------------------------------
     38 ;
     39 ;    Function: h264bsdFlushBits
     40 ;
     41 ;        Functional description:
     42 ;
     43 ;        Inputs:
     44 ;
     45 ;        Outputs:
     46 ;
     47 ;        Returns:
     48 ;
     49 ;------------------------------------------------------------------------------*/
     50 
     51 h264bsdFlushBits
     52 ;//    PUSH     {r4-r6,lr}
     53 
     54     LDR readBits, [pStrmData, #0x10]
     55     LDR strmBuffSize, [pStrmData, #0xC]
     56 
     57     ADD readBits, readBits, numBits
     58     AND bitPosInWord, readBits, #7
     59 
     60     STR readBits, [pStrmData, #0x10]
     61     STR bitPosInWord, [pStrmData, #0x8]
     62 
     63     LDR pStrmBuffStart, [pStrmData, #0x0]
     64 
     65     CMP readBits, strmBuffSize, LSL #3
     66 
     67     BHI end_of_stream
     68 
     69     ADD pStrmCurrPos, pStrmBuffStart, readBits, LSR #3
     70     STR pStrmCurrPos, [pStrmData, #0x4]
     71     MOV r0, #0
     72     BX  lr
     73 ;//    POP      {r4-r6,pc}
     74 
     75 end_of_stream
     76     MVN r0, #0
     77     BX  lr
     78 ;//    POP      {r4-r6,pc}
     79 
     80     END
     81 
     82 
     83