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

Side by Side Diff: src/arm/assembler-arm.h

Issue 2711863002: Implement remaining Boolean SIMD operations on ARM. (Closed)
Patch Set: Fix macro assembler test. Created 3 years, 9 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 | « no previous file | src/arm/assembler-arm.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 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 const QwNeonRegister q13 = { 13 }; 411 const QwNeonRegister q13 = { 13 };
412 const QwNeonRegister q14 = { 14 }; 412 const QwNeonRegister q14 = { 14 };
413 const QwNeonRegister q15 = { 15 }; 413 const QwNeonRegister q15 = { 15 };
414 414
415 415
416 // Aliases for double registers. Defined using #define instead of 416 // Aliases for double registers. Defined using #define instead of
417 // "static const DwVfpRegister&" because Clang complains otherwise when a 417 // "static const DwVfpRegister&" because Clang complains otherwise when a
418 // compilation unit that includes this header doesn't use the variables. 418 // compilation unit that includes this header doesn't use the variables.
419 #define kFirstCalleeSavedDoubleReg d8 419 #define kFirstCalleeSavedDoubleReg d8
420 #define kLastCalleeSavedDoubleReg d15 420 #define kLastCalleeSavedDoubleReg d15
421 // kDoubleRegZero and kScratchDoubleReg must pair to form kScratchQuadReg. 421 // kDoubleRegZero and kScratchDoubleReg must pair to form kScratchQuadReg. SIMD
422 // code depends on kDoubleRegZero before kScratchDoubleReg.
422 #define kDoubleRegZero d14 423 #define kDoubleRegZero d14
423 #define kScratchDoubleReg d15 424 #define kScratchDoubleReg d15
424 // After using kScratchQuadReg, kDoubleRegZero must be reset to 0. 425 // After using kScratchQuadReg, kDoubleRegZero must be reset to 0.
425 #define kScratchQuadReg q7 426 #define kScratchQuadReg q7
426 427
427 // Coprocessor register 428 // Coprocessor register
428 struct CRegister { 429 struct CRegister {
429 bool is_valid() const { return 0 <= reg_code && reg_code < 16; } 430 bool is_valid() const { return 0 <= reg_code && reg_code < 16; }
430 bool is(CRegister creg) const { return reg_code == creg.reg_code; } 431 bool is(CRegister creg) const { return reg_code == creg.reg_code; }
431 int code() const { 432 int code() const {
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 void vmul(QwNeonRegister dst, QwNeonRegister src1, 1353 void vmul(QwNeonRegister dst, QwNeonRegister src1,
1353 QwNeonRegister src2); 1354 QwNeonRegister src2);
1354 void vmul(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, 1355 void vmul(NeonSize size, QwNeonRegister dst, QwNeonRegister src1,
1355 QwNeonRegister src2); 1356 QwNeonRegister src2);
1356 void vmin(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1357 void vmin(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1357 void vmin(NeonDataType dt, QwNeonRegister dst, 1358 void vmin(NeonDataType dt, QwNeonRegister dst,
1358 QwNeonRegister src1, QwNeonRegister src2); 1359 QwNeonRegister src1, QwNeonRegister src2);
1359 void vmax(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1360 void vmax(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1360 void vmax(NeonDataType dt, QwNeonRegister dst, 1361 void vmax(NeonDataType dt, QwNeonRegister dst,
1361 QwNeonRegister src1, QwNeonRegister src2); 1362 QwNeonRegister src1, QwNeonRegister src2);
1363 void vpmin(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1,
1364 DwVfpRegister src2);
1365 void vpmax(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1,
1366 DwVfpRegister src2);
1362 void vshl(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); 1367 void vshl(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift);
1363 void vshr(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); 1368 void vshr(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift);
1364 // vrecpe and vrsqrte only support floating point lanes. 1369 // vrecpe and vrsqrte only support floating point lanes.
1365 void vrecpe(QwNeonRegister dst, QwNeonRegister src); 1370 void vrecpe(QwNeonRegister dst, QwNeonRegister src);
1366 void vrsqrte(QwNeonRegister dst, QwNeonRegister src); 1371 void vrsqrte(QwNeonRegister dst, QwNeonRegister src);
1367 void vrecps(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1372 void vrecps(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1368 void vrsqrts(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1373 void vrsqrts(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1369 void vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, 1374 void vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1,
1370 QwNeonRegister src2); 1375 QwNeonRegister src2);
1371 void vceq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1376 void vceq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
1785 class EnsureSpace BASE_EMBEDDED { 1790 class EnsureSpace BASE_EMBEDDED {
1786 public: 1791 public:
1787 INLINE(explicit EnsureSpace(Assembler* assembler)); 1792 INLINE(explicit EnsureSpace(Assembler* assembler));
1788 }; 1793 };
1789 1794
1790 1795
1791 } // namespace internal 1796 } // namespace internal
1792 } // namespace v8 1797 } // namespace v8
1793 1798
1794 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1799 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698