| Index: media/base/simd/linear_scale_yuv_to_rgb_mmx.inc
|
| diff --git a/media/base/simd/linear_scale_yuv_to_rgb_mmx.inc b/media/base/simd/linear_scale_yuv_to_rgb_mmx.inc
|
| deleted file mode 100644
|
| index 48f62acf25ad57893e598a0c1cb10f632b462413..0000000000000000000000000000000000000000
|
| --- a/media/base/simd/linear_scale_yuv_to_rgb_mmx.inc
|
| +++ /dev/null
|
| @@ -1,135 +0,0 @@
|
| -; Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -; Use of this source code is governed by a BSD-style license that can be
|
| -; found in the LICENSE file.
|
| -
|
| -%include "media/base/simd/media_export.asm"
|
| -
|
| - EXPORT SYMBOL
|
| - align function_align
|
| -
|
| -mangle(SYMBOL):
|
| - %assign stack_offset 0
|
| -
|
| -; Parameters are in the following order:
|
| -; 1. Y plane
|
| -; 2. U plane
|
| -; 3. V plane
|
| -; 4. ARGB frame
|
| -; 5. Width
|
| -; 6. Source dx
|
| -; 7. Conversion lookup table
|
| -
|
| -PROLOGUE 7, 7, 3, Y, R0, R1, ARGB, R2, TEMP, R3
|
| -
|
| -%if gprsize == 8
|
| -%define WORD_SIZE QWORD
|
| -%else
|
| -%define WORD_SIZE DWORD
|
| -%endif
|
| -
|
| -; Define register aliases.
|
| -%define Xq R1q ; Current X position
|
| -%define COMPLq R2q ; Component A value
|
| -%define COMPLd R2d ; Component A value
|
| -%define U_ARG_REGq R0q ; U plane address argument
|
| -%define V_ARG_REGq R1q ; V plane address argument
|
| -%define SOURCE_DX_ARG_REGq TEMPq ; Source dx argument
|
| -%define WIDTH_ARG_REGq R2q ; Width argument
|
| -
|
| -%define COMPRq R0q ; Component B value
|
| -%define COMPRd R0d ; Component B value
|
| -%define Uq R0q ; U plane address
|
| -%define Vq R0q ; V plane address
|
| -%define U_PLANE WORD_SIZE [rsp + 3 * gprsize]
|
| -%define TABLE R3q ; Address of the table
|
| -
|
| -; Defines for stack variables.
|
| -%define V_PLANE WORD_SIZE [rsp + 2 * gprsize]
|
| -%define SOURCE_DX WORD_SIZE [rsp + gprsize]
|
| -%define SOURCE_WIDTH WORD_SIZE [rsp]
|
| -
|
| -; Define stack usage.
|
| - PUSH U_ARG_REGq
|
| - PUSH V_ARG_REGq
|
| - PUSH SOURCE_DX_ARG_REGq
|
| - imul WIDTH_ARG_REGq, SOURCE_DX_ARG_REGq ; source_width = width * source_dx
|
| - PUSH WIDTH_ARG_REGq
|
| -
|
| -%macro EPILOGUE 0
|
| - ADD rsp, 4 * gprsize
|
| -%endmacro
|
| -
|
| - xor Xq, Xq ; x = 0
|
| - cmp SOURCE_DX_ARG_REGq, 0x20000
|
| - jl .lscaleend
|
| - mov Xq, 0x8000 ; x = 0.5 for 1/2 or less
|
| - jmp .lscaleend
|
| -
|
| -.lscaleloop:
|
| - mov Uq, U_PLANE
|
| -
|
| -; Define macros for scaling YUV components since they are reused.
|
| -%macro SCALEUV 1
|
| - mov TEMPq, Xq
|
| - sar TEMPq, 0x11
|
| - movzx COMPLd, BYTE [%1 + TEMPq]
|
| - movzx COMPRd, BYTE [%1 + TEMPq + 1]
|
| - mov TEMPq, Xq
|
| - and TEMPq, 0x1fffe
|
| - imul COMPRq, TEMPq
|
| - xor TEMPq, 0x1fffe
|
| - imul COMPLq, TEMPq
|
| - add COMPLq, COMPRq
|
| - shr COMPLq, 17
|
| -%endmacro
|
| - SCALEUV Uq ; Use the above macro to scale U
|
| - movq mm0, [TABLE + 2048 + 8 * COMPLq]
|
| -
|
| - mov Vq, V_PLANE ; Read V address from stack
|
| - SCALEUV Vq ; Use the above macro to scale V
|
| - paddsw mm0, [TABLE + 4096 + 8 * COMPLq]
|
| -
|
| -%macro SCALEY 0
|
| - mov TEMPq, Xq
|
| - sar TEMPq, 0x10
|
| - movzx COMPLd, BYTE [Yq + TEMPq]
|
| - movzx COMPRd, BYTE [Yq + TEMPq + 1]
|
| - mov TEMPq, Xq
|
| - add Xq, SOURCE_DX ; Add source_dx from stack
|
| - and TEMPq, 0xffff
|
| - imul COMPRq, TEMPq
|
| - xor TEMPq, 0xffff
|
| - imul COMPLq, TEMPq
|
| - add COMPLq, COMPRq
|
| - shr COMPLq, 16
|
| -%endmacro
|
| - SCALEY ; Use the above macro to scale Y1
|
| - movq mm1, [TABLE + 8 * COMPLq]
|
| -
|
| - cmp Xq, SOURCE_WIDTH ; Compare source_width from stack
|
| - jge .lscalelastpixel
|
| -
|
| - SCALEY ; Use the above macro to sacle Y2
|
| - movq mm2, [TABLE + 8 * COMPLq]
|
| -
|
| - paddsw mm1, mm0
|
| - paddsw mm2, mm0
|
| - psraw mm1, 0x6
|
| - psraw mm2, 0x6
|
| - packuswb mm1, mm2
|
| - MOVQ [ARGBq], mm1
|
| - add ARGBq, 0x8
|
| -
|
| -.lscaleend:
|
| - cmp Xq, SOURCE_WIDTH ; Compare source_width from stack
|
| - jl .lscaleloop
|
| - EPILOGUE
|
| - RET
|
| -
|
| -.lscalelastpixel:
|
| - paddsw mm1, mm0
|
| - psraw mm1, 6
|
| - packuswb mm1, mm1
|
| - movd [ARGBq], mm1
|
| - EPILOGUE
|
| - RET
|
|
|