| OLD | NEW |
| (Empty) |
| 1 ; Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 ; Use of this source code is governed by a BSD-style license that can be | |
| 3 ; found in the LICENSE file. | |
| 4 | |
| 5 %include "media/base/simd/media_export.asm" | |
| 6 | |
| 7 EXPORT SYMBOL | |
| 8 align function_align | |
| 9 | |
| 10 mangle(SYMBOL): | |
| 11 %assign stack_offset 0 | |
| 12 PROLOGUE 6, 7, 3, Y, U, V, ARGB, WIDTH, TABLE, TEMP | |
| 13 | |
| 14 jmp .convertend | |
| 15 | |
| 16 .convertloop: | |
| 17 movzx TEMPd, BYTE [Uq] | |
| 18 movq mm0, [TABLEq + 2048 + 8 * TEMPq] | |
| 19 add Uq, 1 | |
| 20 | |
| 21 movzx TEMPd, BYTE [Vq] | |
| 22 paddsw mm0, [TABLEq + 4096 + 8 * TEMPq] | |
| 23 add Vq, 1 | |
| 24 | |
| 25 movzx TEMPd, BYTE [Yq] | |
| 26 movq mm1, [TABLEq + 8 * TEMPq] | |
| 27 | |
| 28 movzx TEMPd, BYTE [Yq + 1] | |
| 29 movq mm2, [TABLEq + 8 * TEMPq] | |
| 30 add Yq, 2 | |
| 31 | |
| 32 ; Add UV components to Y component. | |
| 33 paddsw mm1, mm0 | |
| 34 paddsw mm2, mm0 | |
| 35 | |
| 36 ; Down shift and then pack. | |
| 37 psraw mm1, 6 | |
| 38 psraw mm2, 6 | |
| 39 packuswb mm1, mm2 | |
| 40 MOVQ [ARGBq], mm1 | |
| 41 add ARGBq, 8 | |
| 42 | |
| 43 .convertend: | |
| 44 sub WIDTHq, 2 | |
| 45 jns .convertloop | |
| 46 | |
| 47 ; If number of pixels is odd then compute it. | |
| 48 and WIDTHq, 1 | |
| 49 jz .convertdone | |
| 50 | |
| 51 movzx TEMPd, BYTE [Uq] | |
| 52 movq mm0, [TABLEq + 2048 + 8 * TEMPq] | |
| 53 movzx TEMPd, BYTE [Vq] | |
| 54 paddsw mm0, [TABLEq + 4096 + 8 * TEMPq] | |
| 55 movzx TEMPd, BYTE [Yq] | |
| 56 movq mm1, [TABLEq + 8 * TEMPq] | |
| 57 paddsw mm1, mm0 | |
| 58 psraw mm1, 6 | |
| 59 packuswb mm1, mm1 | |
| 60 movd [ARGBq], mm1 | |
| 61 | |
| 62 .convertdone: | |
| 63 RET | |
| OLD | NEW |