Index: media/base/simd/convert_yuva_to_argb_mmx.inc |
diff --git a/media/base/simd/convert_yuva_to_argb_mmx.inc b/media/base/simd/convert_yuva_to_argb_mmx.inc |
deleted file mode 100644 |
index d4933836ca89bec26134e015048ae8151bd3531b..0000000000000000000000000000000000000000 |
--- a/media/base/simd/convert_yuva_to_argb_mmx.inc |
+++ /dev/null |
@@ -1,114 +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 |
- PROLOGUE 7, 7, 3, Y, U, V, A, ARGB, WIDTH, TABLE |
- PUSH WIDTHq |
- DEFINE_ARGS Y, U, V, A, ARGB, TABLE, TEMP |
- mov TABLEq, TEMPq |
- jmp .convertend |
- |
-.convertloop: |
- movzx TEMPd, BYTE [Uq] |
- movq mm0, [TABLEq + 2048 + 8 * TEMPq] |
- add Uq, 1 |
- |
- movzx TEMPd, BYTE [Vq] |
- paddsw mm0, [TABLEq + 4096 + 8 * TEMPq] |
- add Vq, 1 |
- |
- movzx TEMPd, BYTE [Yq] |
- movq mm1, [TABLEq + 8 * TEMPq] |
- |
- movzx TEMPd, BYTE [Yq + 1] |
- movq mm2, [TABLEq + 8 * TEMPq] |
- add Yq, 2 |
- |
- ; Add UV components to Y component. |
- paddsw mm1, mm0 |
- paddsw mm2, mm0 |
- |
- ; Down shift and then pack. |
- psraw mm1, 6 |
- psraw mm2, 6 |
- packuswb mm1, mm2 |
- |
- ; Unpack |
- movq mm0, mm1 |
- pxor mm2, mm2 |
- punpcklbw mm0, mm2 |
- punpckhbw mm1, mm2 |
- |
- ; Add one to our alpha values, this is a somewhat unfortunate hack; while |
- ; the pack/unpack above handle saturating any negative numbers to 0, they also |
- ; truncate the alpha value to 255. The math ahead wants to produce the same |
- ; ARGB alpha value as the source pixel in YUVA, but this depends on the alpha |
- ; value in |mm0| and |mm1| being 256, (let A be the source image alpha, |
- ; 256 * A >> 8 == A, whereas 255 * A >> 8 is off by one except at 0). |
- mov TEMPq, 0x00010000 |
- movd mm2, TEMPd |
- psllq mm2, 32 |
- paddsw mm0, mm2 |
- paddsw mm1, mm2 |
- |
- ; Multiply by alpha value, then repack high bytes of words. |
- movzx TEMPd, BYTE [Aq] |
- movq mm2, [TABLEq + 6144 + 8 * TEMPq] |
- pmullw mm0, mm2 |
- psrlw mm0, 8 |
- movzx TEMPd, BYTE [Aq + 1] |
- movq mm2, [TABLEq + 6144 + 8 * TEMPq] |
- add Aq, 2 |
- pmullw mm1, mm2 |
- psrlw mm1, 8 |
- packuswb mm0, mm1 |
- |
- MOVQ [ARGBq], mm0 |
- add ARGBq, 8 |
- |
-.convertend: |
- sub dword [rsp], 2 |
- jns .convertloop |
- |
- ; If number of pixels is odd then compute it. |
- and dword [rsp], 1 |
- jz .convertdone |
- |
- movzx TEMPd, BYTE [Uq] |
- movq mm0, [TABLEq + 2048 + 8 * TEMPq] |
- movzx TEMPd, BYTE [Vq] |
- paddsw mm0, [TABLEq + 4096 + 8 * TEMPq] |
- movzx TEMPd, BYTE [Yq] |
- movq mm1, [TABLEq + 8 * TEMPq] |
- paddsw mm1, mm0 |
- psraw mm1, 6 |
- packuswb mm1, mm1 |
- |
- ; Multiply ARGB by alpha value. |
- pxor mm0, mm0 |
- punpcklbw mm1, mm0 |
- |
- ; See above note about this hack. |
- mov TEMPq, 0x00010000 |
- movd mm0, TEMPd |
- psllq mm0, 32 |
- paddsw mm1, mm0 |
- |
- movzx TEMPd, BYTE [Aq] |
- movq mm0, [TABLEq + 6144 + 8 * TEMPq] |
- pmullw mm1, mm0 |
- psrlw mm1, 8 |
- packuswb mm1, mm1 |
- |
- movd [ARGBq], mm1 |
- |
-.convertdone: |
- POP TABLEq |
- RET |