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

Side by Side Diff: source/row_gcc.cc

Issue 1574253004: refactor ARGBToI422 using ARGBToI420 internally (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « source/row_common.cc ('k') | source/row_neon.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // VERSION 2 1 // VERSION 2
2 /* 2 /*
3 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 * Copyright 2011 The LibYuv Project Authors. All rights reserved.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license 5 * Use of this source code is governed by a BSD-style license
6 * that can be found in the LICENSE file in the root of the source 6 * that can be found in the LICENSE file in the root of the source
7 * tree. An additional intellectual property rights grant can be found 7 * tree. An additional intellectual property rights grant can be found
8 * in the file PATENTS. All contributing project authors may 8 * in the file PATENTS. All contributing project authors may
9 * be found in the AUTHORS file in the root of the source tree. 9 * be found in the AUTHORS file in the root of the source tree.
10 */ 10 */
(...skipping 1126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1137 "+rm"(width) // %3 1137 "+rm"(width) // %3
1138 : "m"(kARGBToV), // %4 1138 : "m"(kARGBToV), // %4
1139 "m"(kARGBToU), // %5 1139 "m"(kARGBToU), // %5
1140 "m"(kAddUV128) // %6 1140 "m"(kAddUV128) // %6
1141 : "memory", "cc", NACL_R14 1141 : "memory", "cc", NACL_R14
1142 "xmm0", "xmm1", "xmm2", "xmm6" 1142 "xmm0", "xmm1", "xmm2", "xmm6"
1143 ); 1143 );
1144 } 1144 }
1145 #endif // HAS_ARGBTOUV444ROW_SSSE3 1145 #endif // HAS_ARGBTOUV444ROW_SSSE3
1146 1146
1147 #ifdef HAS_ARGBTOUV422ROW_SSSE3
1148 void ARGBToUV422Row_SSSE3(const uint8* src_argb0,
1149 uint8* dst_u, uint8* dst_v, int width) {
1150 asm volatile (
1151 "movdqa %4,%%xmm3 \n"
1152 "movdqa %5,%%xmm4 \n"
1153 "movdqa %6,%%xmm5 \n"
1154 "sub %1,%2 \n"
1155 LABELALIGN
1156 "1: \n"
1157 "movdqu " MEMACCESS(0) ",%%xmm0 \n"
1158 "movdqu " MEMACCESS2(0x10,0) ",%%xmm1 \n"
1159 "movdqu " MEMACCESS2(0x20,0) ",%%xmm2 \n"
1160 "movdqu " MEMACCESS2(0x30,0) ",%%xmm6 \n"
1161 "lea " MEMLEA(0x40,0) ",%0 \n"
1162 "movdqa %%xmm0,%%xmm7 \n"
1163 "shufps $0x88,%%xmm1,%%xmm0 \n"
1164 "shufps $0xdd,%%xmm1,%%xmm7 \n"
1165 "pavgb %%xmm7,%%xmm0 \n"
1166 "movdqa %%xmm2,%%xmm7 \n"
1167 "shufps $0x88,%%xmm6,%%xmm2 \n"
1168 "shufps $0xdd,%%xmm6,%%xmm7 \n"
1169 "pavgb %%xmm7,%%xmm2 \n"
1170 "movdqa %%xmm0,%%xmm1 \n"
1171 "movdqa %%xmm2,%%xmm6 \n"
1172 "pmaddubsw %%xmm4,%%xmm0 \n"
1173 "pmaddubsw %%xmm4,%%xmm2 \n"
1174 "pmaddubsw %%xmm3,%%xmm1 \n"
1175 "pmaddubsw %%xmm3,%%xmm6 \n"
1176 "phaddw %%xmm2,%%xmm0 \n"
1177 "phaddw %%xmm6,%%xmm1 \n"
1178 "psraw $0x8,%%xmm0 \n"
1179 "psraw $0x8,%%xmm1 \n"
1180 "packsswb %%xmm1,%%xmm0 \n"
1181 "paddb %%xmm5,%%xmm0 \n"
1182 "movlps %%xmm0," MEMACCESS(1) " \n"
1183 MEMOPMEM(movhps,xmm0,0x00,1,2,1) // movhps %%xmm0,(%1,%2,1)
1184 "lea " MEMLEA(0x8,1) ",%1 \n"
1185 "sub $0x10,%3 \n"
1186 "jg 1b \n"
1187 : "+r"(src_argb0), // %0
1188 "+r"(dst_u), // %1
1189 "+r"(dst_v), // %2
1190 "+rm"(width) // %3
1191 : "m"(kARGBToV), // %4
1192 "m"(kARGBToU), // %5
1193 "m"(kAddUV128) // %6
1194 : "memory", "cc", NACL_R14
1195 "xmm0", "xmm1", "xmm2", "xmm6", "xmm7"
1196 );
1197 }
1198 #endif // HAS_ARGBTOUV422ROW_SSSE3
1199
1200 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width) { 1147 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width) {
1201 asm volatile ( 1148 asm volatile (
1202 "movdqa %4,%%xmm5 \n" 1149 "movdqa %4,%%xmm5 \n"
1203 "movdqa %3,%%xmm4 \n" 1150 "movdqa %3,%%xmm4 \n"
1204 LABELALIGN 1151 LABELALIGN
1205 "1: \n" 1152 "1: \n"
1206 "movdqu " MEMACCESS(0) ",%%xmm0 \n" 1153 "movdqu " MEMACCESS(0) ",%%xmm0 \n"
1207 "movdqu " MEMACCESS2(0x10,0) ",%%xmm1 \n" 1154 "movdqu " MEMACCESS2(0x10,0) ",%%xmm1 \n"
1208 "movdqu " MEMACCESS2(0x20,0) ",%%xmm2 \n" 1155 "movdqu " MEMACCESS2(0x20,0) ",%%xmm2 \n"
1209 "movdqu " MEMACCESS2(0x30,0) ",%%xmm3 \n" 1156 "movdqu " MEMACCESS2(0x30,0) ",%%xmm3 \n"
(...skipping 4233 matching lines...) Expand 10 before | Expand all | Expand 10 after
5443 ); 5390 );
5444 } 5391 }
5445 #endif // HAS_ARGBLUMACOLORTABLEROW_SSSE3 5392 #endif // HAS_ARGBLUMACOLORTABLEROW_SSSE3
5446 5393
5447 #endif // defined(__x86_64__) || defined(__i386__) 5394 #endif // defined(__x86_64__) || defined(__i386__)
5448 5395
5449 #ifdef __cplusplus 5396 #ifdef __cplusplus
5450 } // extern "C" 5397 } // extern "C"
5451 } // namespace libyuv 5398 } // namespace libyuv
5452 #endif 5399 #endif
OLDNEW
« no previous file with comments | « source/row_common.cc ('k') | source/row_neon.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698