451 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			ArmAsm
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			451 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			ArmAsm
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2008 Mans Rullgard <mans@mansr.com>
 | 
						|
 * Copyright (c) 2013 Janne Grunau <janne-libav@jannau.net>
 | 
						|
 *
 | 
						|
 * This file is part of FFmpeg.
 | 
						|
 *
 | 
						|
 * FFmpeg is free software; you can redistribute it and/or
 | 
						|
 * modify it under the terms of the GNU Lesser General Public
 | 
						|
 * License as published by the Free Software Foundation; either
 | 
						|
 * version 2.1 of the License, or (at your option) any later version.
 | 
						|
 *
 | 
						|
 * FFmpeg is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
 * Lesser General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU Lesser General Public
 | 
						|
 * License along with FFmpeg; if not, write to the Free Software
 | 
						|
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
						|
 */
 | 
						|
 | 
						|
#include "libavutil/aarch64/asm.S"
 | 
						|
 | 
						|
/* chroma_mc8(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) */
 | 
						|
.macro  h264_chroma_mc8 type, codec=h264
 | 
						|
function ff_\type\()_\codec\()_chroma_mc8_neon, export=1
 | 
						|
  .ifc \type,avg
 | 
						|
        mov             x8,  x0
 | 
						|
  .endif
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \codec,rv40
 | 
						|
        movrel          x6,  rv40bias
 | 
						|
        lsr             w9,  w5,  #1
 | 
						|
        lsr             w10, w4,  #1
 | 
						|
        lsl             w9,  w9,  #3
 | 
						|
        lsl             w10, w10, #1
 | 
						|
        add             w9,  w9,  w10
 | 
						|
        add             x6,  x6,  w9, UXTW
 | 
						|
        ld1r            {v22.8H}, [x6]
 | 
						|
  .endif
 | 
						|
  .ifc \codec,vc1
 | 
						|
        movi            v22.8H,   #28
 | 
						|
  .endif
 | 
						|
        mul             w7,  w4,  w5
 | 
						|
        lsl             w14, w5,  #3
 | 
						|
        lsl             w13, w4,  #3
 | 
						|
        cmp             w7,  #0
 | 
						|
        sub             w6,  w14, w7
 | 
						|
        sub             w12, w13, w7
 | 
						|
        sub             w4,  w7,  w13
 | 
						|
        sub             w4,  w4,  w14
 | 
						|
        add             w4,  w4,  #64
 | 
						|
        b.eq            2f
 | 
						|
 | 
						|
        dup             v0.8B,  w4
 | 
						|
        dup             v1.8B,  w12
 | 
						|
        ld1             {v4.8B, v5.8B}, [x1], x2
 | 
						|
        dup             v2.8B,  w6
 | 
						|
        dup             v3.8B,  w7
 | 
						|
        ext             v5.8B,  v4.8B,  v5.8B,  #1
 | 
						|
1:      ld1             {v6.8B, v7.8B}, [x1], x2
 | 
						|
        umull           v16.8H, v4.8B,  v0.8B
 | 
						|
        umlal           v16.8H, v5.8B,  v1.8B
 | 
						|
        ext             v7.8B,  v6.8B,  v7.8B,  #1
 | 
						|
        ld1             {v4.8B, v5.8B}, [x1], x2
 | 
						|
        umlal           v16.8H, v6.8B,  v2.8B
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        ext             v5.8B,  v4.8B,  v5.8B,  #1
 | 
						|
        umlal           v16.8H, v7.8B,  v3.8B
 | 
						|
        umull           v17.8H, v6.8B,  v0.8B
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        umlal           v17.8H, v7.8B, v1.8B
 | 
						|
        umlal           v17.8H, v4.8B, v2.8B
 | 
						|
        umlal           v17.8H, v5.8B, v3.8B
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v16.8H, #6
 | 
						|
        rshrn           v17.8B, v17.8H, #6
 | 
						|
  .else
 | 
						|
        add             v16.8H, v16.8H, v22.8H
 | 
						|
        add             v17.8H, v17.8H, v22.8H
 | 
						|
        shrn            v16.8B, v16.8H, #6
 | 
						|
        shrn            v17.8B, v17.8H, #6
 | 
						|
  .endif
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.8B}, [x8], x2
 | 
						|
        ld1             {v21.8B}, [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
        urhadd          v17.8B, v17.8B, v21.8B
 | 
						|
  .endif
 | 
						|
        st1             {v16.8B}, [x0], x2
 | 
						|
        st1             {v17.8B}, [x0], x2
 | 
						|
        b.gt            1b
 | 
						|
        ret
 | 
						|
 | 
						|
2:      adds            w12, w12, w6
 | 
						|
        dup             v0.8B, w4
 | 
						|
        b.eq            5f
 | 
						|
        tst             w6,  w6
 | 
						|
        dup             v1.8B, w12
 | 
						|
        b.eq            4f
 | 
						|
 | 
						|
        ld1             {v4.8B}, [x1], x2
 | 
						|
3:      ld1             {v6.8B}, [x1], x2
 | 
						|
        umull           v16.8H, v4.8B,  v0.8B
 | 
						|
        umlal           v16.8H, v6.8B,  v1.8B
 | 
						|
        ld1             {v4.8B}, [x1], x2
 | 
						|
        umull           v17.8H, v6.8B,  v0.8B
 | 
						|
        umlal           v17.8H, v4.8B,  v1.8B
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v16.8H, #6
 | 
						|
        rshrn           v17.8B, v17.8H, #6
 | 
						|
  .else
 | 
						|
        add             v16.8H, v16.8H, v22.8H
 | 
						|
        add             v17.8H, v17.8H, v22.8H
 | 
						|
        shrn            v16.8B, v16.8H, #6
 | 
						|
        shrn            v17.8B, v17.8H, #6
 | 
						|
  .endif
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.8B}, [x8], x2
 | 
						|
        ld1             {v21.8B}, [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
        urhadd          v17.8B, v17.8B, v21.8B
 | 
						|
  .endif
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        st1             {v16.8B}, [x0], x2
 | 
						|
        st1             {v17.8B}, [x0], x2
 | 
						|
        b.gt            3b
 | 
						|
        ret
 | 
						|
 | 
						|
4:      ld1             {v4.8B, v5.8B}, [x1], x2
 | 
						|
        ld1             {v6.8B, v7.8B}, [x1], x2
 | 
						|
        ext             v5.8B,  v4.8B,  v5.8B,  #1
 | 
						|
        ext             v7.8B,  v6.8B,  v7.8B,  #1
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        umull           v16.8H, v4.8B, v0.8B
 | 
						|
        umlal           v16.8H, v5.8B, v1.8B
 | 
						|
        umull           v17.8H, v6.8B, v0.8B
 | 
						|
        umlal           v17.8H, v7.8B, v1.8B
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v16.8H, #6
 | 
						|
        rshrn           v17.8B, v17.8H, #6
 | 
						|
  .else
 | 
						|
        add             v16.8H, v16.8H, v22.8H
 | 
						|
        add             v17.8H, v17.8H, v22.8H
 | 
						|
        shrn            v16.8B, v16.8H, #6
 | 
						|
        shrn            v17.8B, v17.8H, #6
 | 
						|
  .endif
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.8B}, [x8], x2
 | 
						|
        ld1             {v21.8B}, [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
        urhadd          v17.8B, v17.8B, v21.8B
 | 
						|
  .endif
 | 
						|
        st1             {v16.8B}, [x0], x2
 | 
						|
        st1             {v17.8B}, [x0], x2
 | 
						|
        b.gt            4b
 | 
						|
        ret
 | 
						|
 | 
						|
5:      ld1             {v4.8B}, [x1], x2
 | 
						|
        ld1             {v5.8B}, [x1], x2
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        umull           v16.8H, v4.8B, v0.8B
 | 
						|
        umull           v17.8H, v5.8B, v0.8B
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v16.8H, #6
 | 
						|
        rshrn           v17.8B, v17.8H, #6
 | 
						|
  .else
 | 
						|
        add             v16.8H, v16.8H, v22.8H
 | 
						|
        add             v17.8H, v17.8H, v22.8H
 | 
						|
        shrn            v16.8B, v16.8H, #6
 | 
						|
        shrn            v17.8B, v17.8H, #6
 | 
						|
  .endif
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.8B}, [x8], x2
 | 
						|
        ld1             {v21.8B}, [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
        urhadd          v17.8B, v17.8B, v21.8B
 | 
						|
  .endif
 | 
						|
        st1             {v16.8B}, [x0], x2
 | 
						|
        st1             {v17.8B}, [x0], x2
 | 
						|
        b.gt            5b
 | 
						|
        ret
 | 
						|
endfunc
 | 
						|
.endm
 | 
						|
 | 
						|
/* chroma_mc4(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) */
 | 
						|
.macro  h264_chroma_mc4 type, codec=h264
 | 
						|
function ff_\type\()_\codec\()_chroma_mc4_neon, export=1
 | 
						|
  .ifc \type,avg
 | 
						|
        mov             x8,  x0
 | 
						|
  .endif
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \codec,rv40
 | 
						|
        movrel          x6,  rv40bias
 | 
						|
        lsr             w9,  w5,  #1
 | 
						|
        lsr             w10, w4,  #1
 | 
						|
        lsl             w9,  w9,  #3
 | 
						|
        lsl             w10, w10, #1
 | 
						|
        add             w9,  w9,  w10
 | 
						|
        add             x6,  x6,  w9, UXTW
 | 
						|
        ld1r            {v22.8H}, [x6]
 | 
						|
  .endif
 | 
						|
  .ifc \codec,vc1
 | 
						|
        movi            v22.8H,   #28
 | 
						|
  .endif
 | 
						|
        mul             w7,  w4,  w5
 | 
						|
        lsl             w14, w5,  #3
 | 
						|
        lsl             w13, w4,  #3
 | 
						|
        cmp             w7,  #0
 | 
						|
        sub             w6,  w14, w7
 | 
						|
        sub             w12, w13, w7
 | 
						|
        sub             w4,  w7,  w13
 | 
						|
        sub             w4,  w4,  w14
 | 
						|
        add             w4,  w4,  #64
 | 
						|
        b.eq            2f
 | 
						|
 | 
						|
        dup             v24.8B,  w4
 | 
						|
        dup             v25.8B,  w12
 | 
						|
        ld1             {v4.8B}, [x1], x2
 | 
						|
        dup             v26.8B,  w6
 | 
						|
        dup             v27.8B,  w7
 | 
						|
        ext             v5.8B,  v4.8B,  v5.8B, #1
 | 
						|
        trn1            v0.2S,  v24.2S, v25.2S
 | 
						|
        trn1            v2.2S,  v26.2S, v27.2S
 | 
						|
        trn1            v4.2S,  v4.2S,  v5.2S
 | 
						|
1:      ld1             {v6.8B}, [x1], x2
 | 
						|
        ext             v7.8B,  v6.8B,  v7.8B, #1
 | 
						|
        trn1            v6.2S,  v6.2S,  v7.2S
 | 
						|
        umull           v18.8H, v4.8B,  v0.8B
 | 
						|
        umlal           v18.8H, v6.8B,  v2.8B
 | 
						|
        ld1             {v4.8B}, [x1], x2
 | 
						|
        ext             v5.8B,  v4.8B,  v5.8B, #1
 | 
						|
        trn1            v4.2S,  v4.2S,  v5.2S
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        umull           v19.8H, v6.8B,  v0.8B
 | 
						|
        umlal           v19.8H, v4.8B,  v2.8B
 | 
						|
        trn1            v30.2D, v18.2D, v19.2D
 | 
						|
        trn2            v31.2D, v18.2D, v19.2D
 | 
						|
        add             v18.8H, v30.8H, v31.8H
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v18.8H, #6
 | 
						|
  .else
 | 
						|
        add             v18.8H, v18.8H, v22.8H
 | 
						|
        shrn            v16.8B, v18.8H, #6
 | 
						|
  .endif
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.S}[0], [x8], x2
 | 
						|
        ld1             {v20.S}[1], [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
  .endif
 | 
						|
        st1             {v16.S}[0], [x0], x2
 | 
						|
        st1             {v16.S}[1], [x0], x2
 | 
						|
        b.gt            1b
 | 
						|
        ret
 | 
						|
 | 
						|
2:      adds            w12, w12, w6
 | 
						|
        dup             v30.8B, w4
 | 
						|
        b.eq            5f
 | 
						|
        tst             w6,  w6
 | 
						|
        dup             v31.8B, w12
 | 
						|
        trn1            v0.2S,  v30.2S, v31.2S
 | 
						|
        trn2            v1.2S,  v30.2S, v31.2S
 | 
						|
        b.eq            4f
 | 
						|
 | 
						|
        ext             v1.8B,  v0.8B,  v1.8B, #4
 | 
						|
        ld1             {v4.S}[0], [x1], x2
 | 
						|
3:      ld1             {v4.S}[1], [x1], x2
 | 
						|
        umull           v18.8H, v4.8B,  v0.8B
 | 
						|
        ld1             {v4.S}[0], [x1], x2
 | 
						|
        umull           v19.8H, v4.8B,  v1.8B
 | 
						|
        trn1            v30.2D, v18.2D, v19.2D
 | 
						|
        trn2            v31.2D, v18.2D, v19.2D
 | 
						|
        add             v18.8H, v30.8H, v31.8H
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v18.8H, #6
 | 
						|
  .else
 | 
						|
        add             v18.8H, v18.8H, v22.8H
 | 
						|
        shrn            v16.8B, v18.8H, #6
 | 
						|
  .endif
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.S}[0], [x8], x2
 | 
						|
        ld1             {v20.S}[1], [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
  .endif
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
        st1             {v16.S}[0], [x0], x2
 | 
						|
        st1             {v16.S}[1], [x0], x2
 | 
						|
        b.gt            3b
 | 
						|
        ret
 | 
						|
 | 
						|
4:      ld1             {v4.8B}, [x1], x2
 | 
						|
        ld1             {v6.8B}, [x1], x2
 | 
						|
        ext             v5.8B,  v4.8B,  v5.8B, #1
 | 
						|
        ext             v7.8B,  v6.8B,  v7.8B, #1
 | 
						|
        trn1            v4.2S,  v4.2S,  v5.2S
 | 
						|
        trn1            v6.2S,  v6.2S,  v7.2S
 | 
						|
        umull           v18.8H, v4.8B,  v0.8B
 | 
						|
        umull           v19.8H, v6.8B,  v0.8B
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        trn1            v30.2D, v18.2D, v19.2D
 | 
						|
        trn2            v31.2D, v18.2D, v19.2D
 | 
						|
        add             v18.8H, v30.8H, v31.8H
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v18.8H, #6
 | 
						|
  .else
 | 
						|
        add             v18.8H, v18.8H, v22.8H
 | 
						|
        shrn            v16.8B, v18.8H, #6
 | 
						|
  .endif
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.S}[0], [x8], x2
 | 
						|
        ld1             {v20.S}[1], [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
  .endif
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        st1             {v16.S}[0], [x0], x2
 | 
						|
        st1             {v16.S}[1], [x0], x2
 | 
						|
        b.gt            4b
 | 
						|
        ret
 | 
						|
 | 
						|
5:      ld1             {v4.S}[0], [x1], x2
 | 
						|
        ld1             {v4.S}[1], [x1], x2
 | 
						|
        umull           v18.8H, v4.8B,  v30.8B
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
  .ifc \codec,h264
 | 
						|
        rshrn           v16.8B, v18.8H, #6
 | 
						|
  .else
 | 
						|
        add             v18.8H, v18.8H, v22.8H
 | 
						|
        shrn            v16.8B, v18.8H, #6
 | 
						|
  .endif
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v20.S}[0], [x8], x2
 | 
						|
        ld1             {v20.S}[1], [x8], x2
 | 
						|
        urhadd          v16.8B, v16.8B, v20.8B
 | 
						|
  .endif
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        st1             {v16.S}[0], [x0], x2
 | 
						|
        st1             {v16.S}[1], [x0], x2
 | 
						|
        b.gt            5b
 | 
						|
        ret
 | 
						|
endfunc
 | 
						|
.endm
 | 
						|
 | 
						|
.macro  h264_chroma_mc2 type
 | 
						|
function ff_\type\()_h264_chroma_mc2_neon, export=1
 | 
						|
        prfm            pldl1strm, [x1]
 | 
						|
        prfm            pldl1strm, [x1, x2]
 | 
						|
        orr             w7,  w4,  w5
 | 
						|
        cbz             w7,  2f
 | 
						|
 | 
						|
        mul             w7,  w4,  w5
 | 
						|
        lsl             w14, w5,  #3
 | 
						|
        lsl             w13, w4,  #3
 | 
						|
        sub             w6,  w14, w7
 | 
						|
        sub             w12, w13, w7
 | 
						|
        sub             w4,  w7,  w13
 | 
						|
        sub             w4,  w4,  w14
 | 
						|
        add             w4,  w4,  #64
 | 
						|
        dup             v0.8B,  w4
 | 
						|
        dup             v2.8B,  w12
 | 
						|
        dup             v1.8B,  w6
 | 
						|
        dup             v3.8B,  w7
 | 
						|
        trn1            v0.4H,  v0.4H,  v2.4H
 | 
						|
        trn1            v1.4H,  v1.4H,  v3.4H
 | 
						|
1:
 | 
						|
        ld1             {v4.S}[0],  [x1], x2
 | 
						|
        ld1             {v4.S}[1],  [x1], x2
 | 
						|
        rev64           v5.2S,  v4.2S
 | 
						|
        ld1             {v5.S}[1],  [x1]
 | 
						|
        ext             v6.8B,  v4.8B,  v5.8B,  #1
 | 
						|
        ext             v7.8B,  v5.8B,  v4.8B,  #1
 | 
						|
        trn1            v4.4H,  v4.4H,  v6.4H
 | 
						|
        trn1            v5.4H,  v5.4H,  v7.4H
 | 
						|
        umull           v16.8H, v4.8B,  v0.8B
 | 
						|
        umlal           v16.8H, v5.8B,  v1.8B
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v18.H}[0], [x0], x2
 | 
						|
        ld1             {v18.H}[2], [x0]
 | 
						|
        sub             x0,  x0,  x2
 | 
						|
  .endif
 | 
						|
        rev64           v17.4S, v16.4S
 | 
						|
        add             v16.8H, v16.8H, v17.8H
 | 
						|
        rshrn           v16.8B, v16.8H, #6
 | 
						|
  .ifc \type,avg
 | 
						|
        urhadd          v16.8B, v16.8B, v18.8B
 | 
						|
  .endif
 | 
						|
        st1             {v16.H}[0], [x0], x2
 | 
						|
        st1             {v16.H}[2], [x0], x2
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        b.gt            1b
 | 
						|
        ret
 | 
						|
 | 
						|
2:
 | 
						|
        ld1             {v16.H}[0], [x1], x2
 | 
						|
        ld1             {v16.H}[1], [x1], x2
 | 
						|
  .ifc \type,avg
 | 
						|
        ld1             {v18.H}[0], [x0], x2
 | 
						|
        ld1             {v18.H}[1], [x0]
 | 
						|
        sub             x0,  x0,  x2
 | 
						|
        urhadd          v16.8B, v16.8B, v18.8B
 | 
						|
  .endif
 | 
						|
        st1             {v16.H}[0], [x0], x2
 | 
						|
        st1             {v16.H}[1], [x0], x2
 | 
						|
        subs            w3,  w3,  #2
 | 
						|
        b.gt            2b
 | 
						|
        ret
 | 
						|
endfunc
 | 
						|
.endm
 | 
						|
 | 
						|
        h264_chroma_mc8 put
 | 
						|
        h264_chroma_mc8 avg
 | 
						|
        h264_chroma_mc4 put
 | 
						|
        h264_chroma_mc4 avg
 | 
						|
        h264_chroma_mc2 put
 | 
						|
        h264_chroma_mc2 avg
 | 
						|
 | 
						|
#if CONFIG_RV40_DECODER
 | 
						|
const   rv40bias
 | 
						|
        .short           0, 16, 32, 16
 | 
						|
        .short          32, 28, 32, 28
 | 
						|
        .short           0, 32, 16, 32
 | 
						|
        .short          32, 28, 32, 28
 | 
						|
endconst
 | 
						|
 | 
						|
        h264_chroma_mc8 put, rv40
 | 
						|
        h264_chroma_mc8 avg, rv40
 | 
						|
        h264_chroma_mc4 put, rv40
 | 
						|
        h264_chroma_mc4 avg, rv40
 | 
						|
#endif
 | 
						|
 | 
						|
#if CONFIG_VC1DSP
 | 
						|
        h264_chroma_mc8 put, vc1
 | 
						|
        h264_chroma_mc8 avg, vc1
 | 
						|
        h264_chroma_mc4 put, vc1
 | 
						|
        h264_chroma_mc4 avg, vc1
 | 
						|
#endif
 |