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

Side by Side Diff: third_party/WebKit/Source/platform/transforms/TransformationMatrix.cpp

Issue 1666613002: Remove APPLE_ARMV7S-specific code from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved. 2 * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
3 * Copyright (C) 2009 Torch Mobile, Inc. 3 * Copyright (C) 2009 Torch Mobile, Inc.
4 * Copyright (C) 2013 Google Inc. All rights reserved. 4 * Copyright (C) 2013 Google Inc. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 "fmla v7.2d, v31.2d, v23.d[1] \t\n" 1142 "fmla v7.2d, v31.2d, v23.d[1] \t\n"
1143 1143
1144 "st1 {v0.2d - v3.2d}, [x9], 64 \t\n" 1144 "st1 {v0.2d - v3.2d}, [x9], 64 \t\n"
1145 "st1 {v4.2d - v7.2d}, [x9] \t\n" 1145 "st1 {v4.2d - v7.2d}, [x9] \t\n"
1146 : [leftMatrix]"+r"(leftMatrix), [rightMatrix]"+r"(rightMatrix) 1146 : [leftMatrix]"+r"(leftMatrix), [rightMatrix]"+r"(rightMatrix)
1147 : 1147 :
1148 : "memory", "x9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", 1148 : "memory", "x9", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
1149 "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31", 1149 "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31",
1150 "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7" 1150 "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7"
1151 ); 1151 );
1152 #elif CPU(APPLE_ARMV7S)
1153 double* leftMatrix = &(m_matrix[0][0]);
1154 const double* rightMatrix = &(mat.m_matrix[0][0]);
1155 asm volatile (// First row of leftMatrix.
1156 "mov r3, %[leftMatrix]\n\t"
1157 "vld1.64 { d16-d19 }, [%[leftMatrix], :128]!\n\t"
1158 "vld1.64 { d0-d3}, [%[rightMatrix], :128]!\n\t"
1159 "vmul.f64 d4, d0, d16\n\t"
1160 "vld1.64 { d20-d23 }, [%[leftMatrix], :128]!\n\t"
1161 "vmla.f64 d4, d1, d20\n\t"
1162 "vld1.64 { d24-d27 }, [%[leftMatrix], :128]!\n\t"
1163 "vmla.f64 d4, d2, d24\n\t"
1164 "vld1.64 { d28-d31 }, [%[leftMatrix], :128]!\n\t"
1165 "vmla.f64 d4, d3, d28\n\t"
1166
1167 "vmul.f64 d5, d0, d17\n\t"
1168 "vmla.f64 d5, d1, d21\n\t"
1169 "vmla.f64 d5, d2, d25\n\t"
1170 "vmla.f64 d5, d3, d29\n\t"
1171
1172 "vmul.f64 d6, d0, d18\n\t"
1173 "vmla.f64 d6, d1, d22\n\t"
1174 "vmla.f64 d6, d2, d26\n\t"
1175 "vmla.f64 d6, d3, d30\n\t"
1176
1177 "vmul.f64 d7, d0, d19\n\t"
1178 "vmla.f64 d7, d1, d23\n\t"
1179 "vmla.f64 d7, d2, d27\n\t"
1180 "vmla.f64 d7, d3, d31\n\t"
1181 "vld1.64 { d0-d3}, [%[rightMatrix], :128]!\n\t"
1182 "vst1.64 { d4-d7 }, [r3, :128]!\n\t"
1183
1184 // Second row of leftMatrix.
1185 "vmul.f64 d4, d0, d16\n\t"
1186 "vmla.f64 d4, d1, d20\n\t"
1187 "vmla.f64 d4, d2, d24\n\t"
1188 "vmla.f64 d4, d3, d28\n\t"
1189
1190 "vmul.f64 d5, d0, d17\n\t"
1191 "vmla.f64 d5, d1, d21\n\t"
1192 "vmla.f64 d5, d2, d25\n\t"
1193 "vmla.f64 d5, d3, d29\n\t"
1194
1195 "vmul.f64 d6, d0, d18\n\t"
1196 "vmla.f64 d6, d1, d22\n\t"
1197 "vmla.f64 d6, d2, d26\n\t"
1198 "vmla.f64 d6, d3, d30\n\t"
1199
1200 "vmul.f64 d7, d0, d19\n\t"
1201 "vmla.f64 d7, d1, d23\n\t"
1202 "vmla.f64 d7, d2, d27\n\t"
1203 "vmla.f64 d7, d3, d31\n\t"
1204 "vld1.64 { d0-d3}, [%[rightMatrix], :128]!\n\t"
1205 "vst1.64 { d4-d7 }, [r3, :128]!\n\t"
1206
1207 // Third row of leftMatrix.
1208 "vmul.f64 d4, d0, d16\n\t"
1209 "vmla.f64 d4, d1, d20\n\t"
1210 "vmla.f64 d4, d2, d24\n\t"
1211 "vmla.f64 d4, d3, d28\n\t"
1212
1213 "vmul.f64 d5, d0, d17\n\t"
1214 "vmla.f64 d5, d1, d21\n\t"
1215 "vmla.f64 d5, d2, d25\n\t"
1216 "vmla.f64 d5, d3, d29\n\t"
1217
1218 "vmul.f64 d6, d0, d18\n\t"
1219 "vmla.f64 d6, d1, d22\n\t"
1220 "vmla.f64 d6, d2, d26\n\t"
1221 "vmla.f64 d6, d3, d30\n\t"
1222
1223 "vmul.f64 d7, d0, d19\n\t"
1224 "vmla.f64 d7, d1, d23\n\t"
1225 "vmla.f64 d7, d2, d27\n\t"
1226 "vmla.f64 d7, d3, d31\n\t"
1227 "vld1.64 { d0-d3}, [%[rightMatrix], :128]\n\t"
1228 "vst1.64 { d4-d7 }, [r3, :128]!\n\t"
1229
1230 // Fourth and last row of leftMatrix.
1231 "vmul.f64 d4, d0, d16\n\t"
1232 "vmla.f64 d4, d1, d20\n\t"
1233 "vmla.f64 d4, d2, d24\n\t"
1234 "vmla.f64 d4, d3, d28\n\t"
1235
1236 "vmul.f64 d5, d0, d17\n\t"
1237 "vmla.f64 d5, d1, d21\n\t"
1238 "vmla.f64 d5, d2, d25\n\t"
1239 "vmla.f64 d5, d3, d29\n\t"
1240
1241 "vmul.f64 d6, d0, d18\n\t"
1242 "vmla.f64 d6, d1, d22\n\t"
1243 "vmla.f64 d6, d2, d26\n\t"
1244 "vmla.f64 d6, d3, d30\n\t"
1245
1246 "vmul.f64 d7, d0, d19\n\t"
1247 "vmla.f64 d7, d1, d23\n\t"
1248 "vmla.f64 d7, d2, d27\n\t"
1249 "vmla.f64 d7, d3, d31\n\t"
1250 "vst1.64 { d4-d7 }, [r3, :128]\n\t"
1251 : [leftMatrix]"+r"(leftMatrix), [rightMatrix]"+r"(rightMatrix)
1252 :
1253 : "memory", "r3", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d 28", "d29", "d30", "d31");
1254 #elif defined(TRANSFORMATION_MATRIX_USE_X86_64_SSE2) 1152 #elif defined(TRANSFORMATION_MATRIX_USE_X86_64_SSE2)
1255 // x86_64 has 16 XMM registers which is enough to do the multiplication full y in registers. 1153 // x86_64 has 16 XMM registers which is enough to do the multiplication full y in registers.
1256 __m128d matrixBlockA = _mm_load_pd(&(m_matrix[0][0])); 1154 __m128d matrixBlockA = _mm_load_pd(&(m_matrix[0][0]));
1257 __m128d matrixBlockC = _mm_load_pd(&(m_matrix[1][0])); 1155 __m128d matrixBlockC = _mm_load_pd(&(m_matrix[1][0]));
1258 __m128d matrixBlockE = _mm_load_pd(&(m_matrix[2][0])); 1156 __m128d matrixBlockE = _mm_load_pd(&(m_matrix[2][0]));
1259 __m128d matrixBlockG = _mm_load_pd(&(m_matrix[3][0])); 1157 __m128d matrixBlockG = _mm_load_pd(&(m_matrix[3][0]));
1260 1158
1261 // First row. 1159 // First row.
1262 __m128d otherMatrixFirstParam = _mm_set1_pd(mat.m_matrix[0][0]); 1160 __m128d otherMatrixFirstParam = _mm_set1_pd(mat.m_matrix[0][0]);
1263 __m128d otherMatrixSecondParam = _mm_set1_pd(mat.m_matrix[0][1]); 1161 __m128d otherMatrixSecondParam = _mm_set1_pd(mat.m_matrix[0][1]);
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
1669 ret.setDouble(2, 2, matrix.m33()); 1567 ret.setDouble(2, 2, matrix.m33());
1670 ret.setDouble(2, 3, matrix.m43()); 1568 ret.setDouble(2, 3, matrix.m43());
1671 ret.setDouble(3, 0, matrix.m14()); 1569 ret.setDouble(3, 0, matrix.m14());
1672 ret.setDouble(3, 1, matrix.m24()); 1570 ret.setDouble(3, 1, matrix.m24());
1673 ret.setDouble(3, 2, matrix.m34()); 1571 ret.setDouble(3, 2, matrix.m34());
1674 ret.setDouble(3, 3, matrix.m44()); 1572 ret.setDouble(3, 3, matrix.m44());
1675 return ret; 1573 return ret;
1676 } 1574 }
1677 1575
1678 } // namespace blink 1576 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/transforms/TransformationMatrix.h ('k') | third_party/WebKit/Source/wtf/CPU.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698