Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Unified Diff: media/base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm

Issue 2694113002: Delete media/base/yuv_convert and dependents. Prefer libyuv. (Closed)
Patch Set: Fix media_unittests. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/simd/linear_scale_yuv_to_rgb_mmx.inc ('k') | media/base/simd/linear_scale_yuv_to_rgb_sse.asm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm
diff --git a/media/base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm b/media/base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm
deleted file mode 100644
index 969a1fde940a5b7249b11cd5eb6bea61a9be01fb..0000000000000000000000000000000000000000
--- a/media/base/simd/linear_scale_yuv_to_rgb_mmx_x64.asm
+++ /dev/null
@@ -1,152 +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"
-%include "third_party/x86inc/x86inc.asm"
-
-;
-; This file uses MMX instructions.
-;
- SECTION_TEXT
- CPU MMX
-
-;void LinearScaleYUVToRGB32Row_MMX_X64(const uint8_t* y_buf,
-; const uint8_t* u_buf,
-; const uint8_t* v_buf,
-; uint8_t* rgb_buf,
-; ptrdiff_t width,
-; ptrdiff_t source_dx);
-%define SYMBOL LinearScaleYUVToRGB32Row_MMX_X64
- 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, U, V, ARGB, WIDTH, SOURCE_DX, R1
-
-%define TABLEq r10
-%define Xq r11
-%define INDEXq r12
-%define COMPRd r13d
-%define COMPRq r13
-%define FRACTIONq r14
-%define COMPL R1
-%define COMPLq R1q
-%define COMPLd R1d
-
- PUSH TABLEq
- PUSH Xq
- PUSH INDEXq
- PUSH COMPRq
- PUSH FRACTIONq
-
-%macro EPILOGUE 0
- POP FRACTIONq
- POP COMPRq
- POP INDEXq
- POP Xq
- POP TABLEq
-%endmacro
-
- mov TABLEq, R1q
-
- imul WIDTHq, SOURCE_DXq ; source_width = width * source_dx
- xor Xq, Xq ; x = 0
- cmp SOURCE_DXq, 0x20000
- jl .lscaleend
- mov Xq, 0x8000 ; x = 0.5 for 1/2 or less
- jmp .lscaleend
-
-.lscaleloop:
- ; Interpolate U
- mov INDEXq, Xq
- sar INDEXq, 0x11
- movzx COMPLd, BYTE [Uq + INDEXq]
- movzx COMPRd, BYTE [Uq + INDEXq + 1]
- mov FRACTIONq, Xq
- and FRACTIONq, 0x1fffe
- imul COMPRq, FRACTIONq
- xor FRACTIONq, 0x1fffe
- imul COMPLq, FRACTIONq
- add COMPLq, COMPRq
- shr COMPLq, 17
- movq mm0, [TABLEq + 2048 + 8 * COMPLq]
-
- ; Interpolate V
- movzx COMPLd, BYTE [Vq + INDEXq]
- movzx COMPRd, BYTE [Vq + INDEXq + 1]
- ; Trick here to imul COMPL first then COMPR.
- ; Saves two instruction. :)
- imul COMPLq, FRACTIONq
- xor FRACTIONq, 0x1fffe
- imul COMPRq, FRACTIONq
- add COMPLq, COMPRq
- shr COMPLq, 17
- paddsw mm0, [TABLEq + 4096 + 8 * COMPLq]
-
- ; Interpolate first Y1.
- lea INDEXq, [Xq + SOURCE_DXq] ; INDEXq now points to next pixel.
- ; Xq points to current pixel.
- mov FRACTIONq, Xq
- sar Xq, 0x10
- movzx COMPLd, BYTE [Yq + Xq]
- movzx COMPRd, BYTE [Yq + Xq + 1]
- and FRACTIONq, 0xffff
- imul COMPRq, FRACTIONq
- xor FRACTIONq, 0xffff
- imul COMPLq, FRACTIONq
- add COMPLq, COMPRq
- shr COMPLq, 16
- movq mm1, [TABLEq + 8 * COMPLq]
-
- ; Interpolate Y2 if available.
- cmp INDEXq, WIDTHq
- jge .lscalelastpixel
-
- lea Xq, [INDEXq + SOURCE_DXq] ; Xq points to next pixel.
- ; INDEXq points to current pixel.
- mov FRACTIONq, INDEXq
- sar INDEXq, 0x10
- movzx COMPLd, BYTE [Yq + INDEXq]
- movzx COMPRd, BYTE [Yq + INDEXq + 1]
- and FRACTIONq, 0xffff
- imul COMPRq, FRACTIONq
- xor FRACTIONq, 0xffff
- imul COMPLq, FRACTIONq
- add COMPLq, COMPRq
- shr COMPLq, 16
- movq mm2, [TABLEq + 8 * COMPLq]
-
- paddsw mm1, mm0
- paddsw mm2, mm0
- psraw mm1, 0x6
- psraw mm2, 0x6
- packuswb mm1, mm2
- movntq [ARGBq], mm1
- add ARGBq, 0x8
-
-.lscaleend:
- cmp Xq, WIDTHq
- jl .lscaleloop
- jmp .epilogue
-
-.lscalelastpixel:
- paddsw mm1, mm0
- psraw mm1, 6
- packuswb mm1, mm1
- movd [ARGBq], mm1
-
-.epilogue
- EPILOGUE
- RET
« no previous file with comments | « media/base/simd/linear_scale_yuv_to_rgb_mmx.inc ('k') | media/base/simd/linear_scale_yuv_to_rgb_sse.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698