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

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

Issue 12920009: Use generated Neon version of MemCopy() on ARM, if platform supports it. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | src/arm/codegen-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 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 p8 = 8, 433 p8 = 8,
434 p9 = 9, 434 p9 = 9,
435 p10 = 10, 435 p10 = 10,
436 p11 = 11, 436 p11 = 11,
437 p12 = 12, 437 p12 = 12,
438 p13 = 13, 438 p13 = 13,
439 p14 = 14, 439 p14 = 14,
440 p15 = 15 440 p15 = 15
441 }; 441 };
442 442
443 enum NeonElementIndex {
444 element_0 = 0,
445 element_1 = 1,
446 element_2 = 2,
447 element_3 = 3,
448 element_4 = 4,
449 element_5 = 5,
450 element_6 = 6,
451 element_7 = 7
452 };
453
454 enum NeonWritebackType {
455 Writeback = 0,
456 NoWriteback = 1
457 };
443 458
444 // ----------------------------------------------------------------------------- 459 // -----------------------------------------------------------------------------
445 // Machine instruction Operands 460 // Machine instruction Operands
446 461
447 // Class Operand represents a shifter operand in data processing instructions 462 // Class Operand represents a shifter operand in data processing instructions
448 class Operand BASE_EMBEDDED { 463 class Operand BASE_EMBEDDED {
449 public: 464 public:
450 // immediate 465 // immediate
451 INLINE(explicit Operand(int32_t immediate, 466 INLINE(explicit Operand(int32_t immediate,
452 RelocInfo::Mode rmode = RelocInfo::NONE32)); 467 RelocInfo::Mode rmode = RelocInfo::NONE32));
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 Register dst2, 903 Register dst2,
889 const MemOperand& src, Condition cond = al); 904 const MemOperand& src, Condition cond = al);
890 void strd(Register src1, 905 void strd(Register src1,
891 Register src2, 906 Register src2,
892 const MemOperand& dst, Condition cond = al); 907 const MemOperand& dst, Condition cond = al);
893 908
894 // Load/Store multiple instructions 909 // Load/Store multiple instructions
895 void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond = al); 910 void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond = al);
896 void stm(BlockAddrMode am, Register base, RegList src, Condition cond = al); 911 void stm(BlockAddrMode am, Register base, RegList src, Condition cond = al);
897 912
913 // Prefetch instructions.
914 void pld(Register base, int offset = 0);
915 void pldw(Register base, int offset = 0);
916
898 // Exception-generating instructions and debugging support 917 // Exception-generating instructions and debugging support
899 void stop(const char* msg, 918 void stop(const char* msg,
900 Condition cond = al, 919 Condition cond = al,
901 int32_t code = kDefaultStopCode); 920 int32_t code = kDefaultStopCode);
902 921
903 void bkpt(uint32_t imm16); // v5 and above 922 void bkpt(uint32_t imm16); // v5 and above
904 void svc(uint32_t imm24, Condition cond = al); 923 void svc(uint32_t imm24, Condition cond = al);
905 924
906 // Coprocessor instructions 925 // Coprocessor instructions
907 926
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1091 const double src2, 1110 const double src2,
1092 const Condition cond = al); 1111 const Condition cond = al);
1093 void vmrs(const Register dst, 1112 void vmrs(const Register dst,
1094 const Condition cond = al); 1113 const Condition cond = al);
1095 void vmsr(const Register dst, 1114 void vmsr(const Register dst,
1096 const Condition cond = al); 1115 const Condition cond = al);
1097 void vsqrt(const DwVfpRegister dst, 1116 void vsqrt(const DwVfpRegister dst,
1098 const DwVfpRegister src, 1117 const DwVfpRegister src,
1099 const Condition cond = al); 1118 const Condition cond = al);
1100 1119
1120 // NEON instructions
1121 void vld1(int size,
1122 const Register base,
1123 const DwVfpRegister first,
1124 const DwVfpRegister last,
1125 NeonWritebackType writeback = NoWriteback,
1126 int align_bytes = 1);
1127 void vld1(int size,
1128 const Register base,
1129 const DwVfpRegister first,
1130 NeonElementIndex element_index,
1131 NeonWritebackType writeback = NoWriteback,
1132 int align_bytes = 1);
1133 void vld4(int size,
1134 const Register src,
1135 const DwVfpRegister first,
1136 const DwVfpRegister last,
1137 NeonWritebackType writeback = NoWriteback,
1138 int align_bytes = 1);
1139 void vld4(int size,
1140 const Register src,
1141 const DwVfpRegister first,
1142 NeonElementIndex element_index,
1143 NeonWritebackType writeback = NoWriteback,
1144 int align_bytes = 1);
1145 void vst1(int size,
1146 const Register base,
1147 const DwVfpRegister first,
1148 const DwVfpRegister last,
1149 NeonWritebackType writeback = NoWriteback,
1150 int align_bytes = 1);
1151 void vst1(int size,
1152 const Register base,
1153 const DwVfpRegister first,
1154 NeonElementIndex element_index,
1155 NeonWritebackType writeback = NoWriteback,
1156 int align_bytes = 1);
1157 void vst4(int size,
1158 const Register src,
1159 const DwVfpRegister first,
1160 const DwVfpRegister last,
1161 NeonWritebackType writeback = NoWriteback,
1162 int align_bytes = 1);
1163 void vst4(int size,
1164 const Register src,
1165 const DwVfpRegister first,
1166 NeonElementIndex element_index,
1167 NeonWritebackType writeback = NoWriteback,
1168 int align_bytes = 1);
1169
1101 // Pseudo instructions 1170 // Pseudo instructions
1102 1171
1103 // Different nop operations are used by the code generator to detect certain 1172 // Different nop operations are used by the code generator to detect certain
1104 // states of the generated code. 1173 // states of the generated code.
1105 enum NopMarkerTypes { 1174 enum NopMarkerTypes {
1106 NON_MARKING_NOP = 0, 1175 NON_MARKING_NOP = 0,
1107 DEBUG_BREAK_NOP, 1176 DEBUG_BREAK_NOP,
1108 // IC markers. 1177 // IC markers.
1109 PROPERTY_ACCESS_INLINED, 1178 PROPERTY_ACCESS_INLINED,
1110 PROPERTY_ACCESS_INLINED_CONTEXT, 1179 PROPERTY_ACCESS_INLINED_CONTEXT,
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 public: 1512 public:
1444 explicit EnsureSpace(Assembler* assembler) { 1513 explicit EnsureSpace(Assembler* assembler) {
1445 assembler->CheckBuffer(); 1514 assembler->CheckBuffer();
1446 } 1515 }
1447 }; 1516 };
1448 1517
1449 1518
1450 } } // namespace v8::internal 1519 } } // namespace v8::internal
1451 1520
1452 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1521 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | src/arm/codegen-arm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698