Index: media/base/simd/scale_yuv_to_rgb_sse2_x64.asm |
diff --git a/media/base/simd/scale_yuv_to_rgb_sse2_x64.asm b/media/base/simd/scale_yuv_to_rgb_sse2_x64.asm |
deleted file mode 100644 |
index 9c52b8dca3df0edefb7a5b9e1ec2d4633aeaeb90..0000000000000000000000000000000000000000 |
--- a/media/base/simd/scale_yuv_to_rgb_sse2_x64.asm |
+++ /dev/null |
@@ -1,113 +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, SSE2 and instructions. |
-; |
- SECTION_TEXT |
- CPU SSE2 |
- |
-; void ScaleYUVToRGB32Row_SSE2_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 ScaleYUVToRGB32Row_SSE2_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. Convert table |
- |
-PROLOGUE 7, 7, 3, Y, U, V, ARGB, WIDTH, SOURCE_DX, R1 |
- |
-%define TABLEq r10 |
-%define Xq r11 |
-%define INDEXq r12 |
-%define COMPq R1q |
-%define COMPd R1d |
- |
- PUSH r10 |
- PUSH r11 |
- PUSH r12 |
- |
- mov TABLEq, R1q |
- |
- ; Set Xq index to 0. |
- xor Xq, Xq |
- jmp .scaleend |
- |
-.scaleloop: |
- ; Read UV pixels. |
- mov INDEXq, Xq |
- sar INDEXq, 17 |
- movzx COMPd, BYTE [Uq + INDEXq] |
- movq xmm0, [TABLEq + 2048 + 8 * COMPq] |
- movzx COMPd, BYTE [Vq + INDEXq] |
- movq xmm1, [TABLEq + 4096 + 8 * COMPq] |
- |
- ; Read first Y pixel. |
- lea INDEXq, [Xq + SOURCE_DXq] ; INDEXq nows points to next pixel. |
- sar Xq, 16 |
- movzx COMPd, BYTE [Yq + Xq] |
- paddsw xmm0, xmm1 ; Hide a ADD after memory load. |
- movq xmm1, [TABLEq + 8 * COMPq] |
- |
- ; Read next Y pixel. |
- lea Xq, [INDEXq + SOURCE_DXq] ; Xq now points to next pixel. |
- sar INDEXq, 16 |
- movzx COMPd, BYTE [Yq + INDEXq] |
- movq xmm2, [TABLEq + 8 * COMPq] |
- paddsw xmm1, xmm0 |
- paddsw xmm2, xmm0 |
- shufps xmm1, xmm2, 0x44 ; Join two pixels into one XMM register |
- psraw xmm1, 6 |
- packuswb xmm1, xmm1 |
- movq QWORD [ARGBq], xmm1 |
- add ARGBq, 8 |
- |
-.scaleend: |
- sub WIDTHq, 2 |
- jns .scaleloop |
- |
- and WIDTHq, 1 ; odd number of pixels? |
- jz .scaledone |
- |
- ; Read U V components. |
- mov INDEXq, Xq |
- sar INDEXq, 17 |
- movzx COMPd, BYTE [Uq + INDEXq] |
- movq xmm0, [TABLEq + 2048 + 8 * COMPq] |
- movzx COMPd, BYTE [Vq + INDEXq] |
- movq xmm1, [TABLEq + 4096 + 8 * COMPq] |
- paddsw xmm0, xmm1 |
- |
- ; Read one Y component. |
- mov INDEXq, Xq |
- sar INDEXq, 16 |
- movzx COMPd, BYTE [Yq + INDEXq] |
- movq xmm1, [TABLEq + 8 * COMPq] |
- paddsw xmm1, xmm0 |
- psraw xmm1, 6 |
- packuswb xmm1, xmm1 |
- movd DWORD [ARGBq], xmm1 |
- |
-.scaledone: |
- POP r12 |
- POP r11 |
- POP r10 |
- RET |