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

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

Issue 2711863002: Implement remaining Boolean SIMD operations on ARM. (Closed)
Patch Set: All Boolean vector tests. 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') | src/arm/assembler-arm.cc » ('J')
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 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 void vmul(QwNeonRegister dst, QwNeonRegister src1, 1379 void vmul(QwNeonRegister dst, QwNeonRegister src1,
1379 QwNeonRegister src2); 1380 QwNeonRegister src2);
1380 void vmul(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, 1381 void vmul(NeonSize size, QwNeonRegister dst, QwNeonRegister src1,
1381 QwNeonRegister src2); 1382 QwNeonRegister src2);
1382 void vmin(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1383 void vmin(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1383 void vmin(NeonDataType dt, QwNeonRegister dst, 1384 void vmin(NeonDataType dt, QwNeonRegister dst,
1384 QwNeonRegister src1, QwNeonRegister src2); 1385 QwNeonRegister src1, QwNeonRegister src2);
1385 void vmax(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1386 void vmax(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1386 void vmax(NeonDataType dt, QwNeonRegister dst, 1387 void vmax(NeonDataType dt, QwNeonRegister dst,
1387 QwNeonRegister src1, QwNeonRegister src2); 1388 QwNeonRegister src1, QwNeonRegister src2);
1389 void vpmin(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1,
1390 DwVfpRegister src2);
1391 void vpmax(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1,
1392 DwVfpRegister src2);
1388 void vshl(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); 1393 void vshl(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift);
1389 void vshr(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); 1394 void vshr(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift);
1390 // vrecpe and vrsqrte only support floating point lanes. 1395 // vrecpe and vrsqrte only support floating point lanes.
1391 void vrecpe(QwNeonRegister dst, QwNeonRegister src); 1396 void vrecpe(QwNeonRegister dst, QwNeonRegister src);
1392 void vrsqrte(QwNeonRegister dst, QwNeonRegister src); 1397 void vrsqrte(QwNeonRegister dst, QwNeonRegister src);
1393 void vrecps(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1398 void vrecps(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1394 void vrsqrts(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1399 void vrsqrts(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
1395 void vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, 1400 void vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1,
1396 QwNeonRegister src2); 1401 QwNeonRegister src2);
1397 void vceq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); 1402 void vceq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2);
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 explicit EnsureSpace(Assembler* assembler) { 1819 explicit EnsureSpace(Assembler* assembler) {
1815 assembler->CheckBuffer(); 1820 assembler->CheckBuffer();
1816 } 1821 }
1817 }; 1822 };
1818 1823
1819 1824
1820 } // namespace internal 1825 } // namespace internal
1821 } // namespace v8 1826 } // namespace v8
1822 1827
1823 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1828 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | src/arm/assembler-arm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698