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

Side by Side Diff: src/compiler/instruction-selector.cc

Issue 2804883008: [WASM SIMD] Implement horizontal add for float and integer types. (Closed)
Patch Set: Rebase, reformat. Created 3 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
« no previous file with comments | « src/compiler/arm/instruction-selector-arm.cc ('k') | src/compiler/machine-operator.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/instruction-selector.h" 5 #include "src/compiler/instruction-selector.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/base/adapters.h" 10 #include "src/base/adapters.h"
(...skipping 1491 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 case IrOpcode::kF32x4Abs: 1502 case IrOpcode::kF32x4Abs:
1503 return MarkAsSimd128(node), VisitF32x4Abs(node); 1503 return MarkAsSimd128(node), VisitF32x4Abs(node);
1504 case IrOpcode::kF32x4Neg: 1504 case IrOpcode::kF32x4Neg:
1505 return MarkAsSimd128(node), VisitF32x4Neg(node); 1505 return MarkAsSimd128(node), VisitF32x4Neg(node);
1506 case IrOpcode::kF32x4RecipApprox: 1506 case IrOpcode::kF32x4RecipApprox:
1507 return MarkAsSimd128(node), VisitF32x4RecipApprox(node); 1507 return MarkAsSimd128(node), VisitF32x4RecipApprox(node);
1508 case IrOpcode::kF32x4RecipSqrtApprox: 1508 case IrOpcode::kF32x4RecipSqrtApprox:
1509 return MarkAsSimd128(node), VisitF32x4RecipSqrtApprox(node); 1509 return MarkAsSimd128(node), VisitF32x4RecipSqrtApprox(node);
1510 case IrOpcode::kF32x4Add: 1510 case IrOpcode::kF32x4Add:
1511 return MarkAsSimd128(node), VisitF32x4Add(node); 1511 return MarkAsSimd128(node), VisitF32x4Add(node);
1512 case IrOpcode::kF32x4AddHoriz:
1513 return MarkAsSimd128(node), VisitF32x4AddHoriz(node);
1512 case IrOpcode::kF32x4Sub: 1514 case IrOpcode::kF32x4Sub:
1513 return MarkAsSimd128(node), VisitF32x4Sub(node); 1515 return MarkAsSimd128(node), VisitF32x4Sub(node);
1514 case IrOpcode::kF32x4Mul: 1516 case IrOpcode::kF32x4Mul:
1515 return MarkAsSimd128(node), VisitF32x4Mul(node); 1517 return MarkAsSimd128(node), VisitF32x4Mul(node);
1516 case IrOpcode::kF32x4Min: 1518 case IrOpcode::kF32x4Min:
1517 return MarkAsSimd128(node), VisitF32x4Min(node); 1519 return MarkAsSimd128(node), VisitF32x4Min(node);
1518 case IrOpcode::kF32x4Max: 1520 case IrOpcode::kF32x4Max:
1519 return MarkAsSimd128(node), VisitF32x4Max(node); 1521 return MarkAsSimd128(node), VisitF32x4Max(node);
1520 case IrOpcode::kF32x4Eq: 1522 case IrOpcode::kF32x4Eq:
1521 return MarkAsSimd1x4(node), VisitF32x4Eq(node); 1523 return MarkAsSimd1x4(node), VisitF32x4Eq(node);
(...skipping 16 matching lines...) Expand all
1538 case IrOpcode::kI32x4SConvertI16x8High: 1540 case IrOpcode::kI32x4SConvertI16x8High:
1539 return MarkAsSimd128(node), VisitI32x4SConvertI16x8High(node); 1541 return MarkAsSimd128(node), VisitI32x4SConvertI16x8High(node);
1540 case IrOpcode::kI32x4Neg: 1542 case IrOpcode::kI32x4Neg:
1541 return MarkAsSimd128(node), VisitI32x4Neg(node); 1543 return MarkAsSimd128(node), VisitI32x4Neg(node);
1542 case IrOpcode::kI32x4Shl: 1544 case IrOpcode::kI32x4Shl:
1543 return MarkAsSimd128(node), VisitI32x4Shl(node); 1545 return MarkAsSimd128(node), VisitI32x4Shl(node);
1544 case IrOpcode::kI32x4ShrS: 1546 case IrOpcode::kI32x4ShrS:
1545 return MarkAsSimd128(node), VisitI32x4ShrS(node); 1547 return MarkAsSimd128(node), VisitI32x4ShrS(node);
1546 case IrOpcode::kI32x4Add: 1548 case IrOpcode::kI32x4Add:
1547 return MarkAsSimd128(node), VisitI32x4Add(node); 1549 return MarkAsSimd128(node), VisitI32x4Add(node);
1550 case IrOpcode::kI32x4AddHoriz:
1551 return MarkAsSimd128(node), VisitI32x4AddHoriz(node);
1548 case IrOpcode::kI32x4Sub: 1552 case IrOpcode::kI32x4Sub:
1549 return MarkAsSimd128(node), VisitI32x4Sub(node); 1553 return MarkAsSimd128(node), VisitI32x4Sub(node);
1550 case IrOpcode::kI32x4Mul: 1554 case IrOpcode::kI32x4Mul:
1551 return MarkAsSimd128(node), VisitI32x4Mul(node); 1555 return MarkAsSimd128(node), VisitI32x4Mul(node);
1552 case IrOpcode::kI32x4MinS: 1556 case IrOpcode::kI32x4MinS:
1553 return MarkAsSimd128(node), VisitI32x4MinS(node); 1557 return MarkAsSimd128(node), VisitI32x4MinS(node);
1554 case IrOpcode::kI32x4MaxS: 1558 case IrOpcode::kI32x4MaxS:
1555 return MarkAsSimd128(node), VisitI32x4MaxS(node); 1559 return MarkAsSimd128(node), VisitI32x4MaxS(node);
1556 case IrOpcode::kI32x4Eq: 1560 case IrOpcode::kI32x4Eq:
1557 return MarkAsSimd1x4(node), VisitI32x4Eq(node); 1561 return MarkAsSimd1x4(node), VisitI32x4Eq(node);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 case IrOpcode::kI16x8Shl: 1596 case IrOpcode::kI16x8Shl:
1593 return MarkAsSimd128(node), VisitI16x8Shl(node); 1597 return MarkAsSimd128(node), VisitI16x8Shl(node);
1594 case IrOpcode::kI16x8ShrS: 1598 case IrOpcode::kI16x8ShrS:
1595 return MarkAsSimd128(node), VisitI16x8ShrS(node); 1599 return MarkAsSimd128(node), VisitI16x8ShrS(node);
1596 case IrOpcode::kI16x8SConvertI32x4: 1600 case IrOpcode::kI16x8SConvertI32x4:
1597 return MarkAsSimd128(node), VisitI16x8SConvertI32x4(node); 1601 return MarkAsSimd128(node), VisitI16x8SConvertI32x4(node);
1598 case IrOpcode::kI16x8Add: 1602 case IrOpcode::kI16x8Add:
1599 return MarkAsSimd128(node), VisitI16x8Add(node); 1603 return MarkAsSimd128(node), VisitI16x8Add(node);
1600 case IrOpcode::kI16x8AddSaturateS: 1604 case IrOpcode::kI16x8AddSaturateS:
1601 return MarkAsSimd128(node), VisitI16x8AddSaturateS(node); 1605 return MarkAsSimd128(node), VisitI16x8AddSaturateS(node);
1606 case IrOpcode::kI16x8AddHoriz:
1607 return MarkAsSimd128(node), VisitI16x8AddHoriz(node);
1602 case IrOpcode::kI16x8Sub: 1608 case IrOpcode::kI16x8Sub:
1603 return MarkAsSimd128(node), VisitI16x8Sub(node); 1609 return MarkAsSimd128(node), VisitI16x8Sub(node);
1604 case IrOpcode::kI16x8SubSaturateS: 1610 case IrOpcode::kI16x8SubSaturateS:
1605 return MarkAsSimd128(node), VisitI16x8SubSaturateS(node); 1611 return MarkAsSimd128(node), VisitI16x8SubSaturateS(node);
1606 case IrOpcode::kI16x8Mul: 1612 case IrOpcode::kI16x8Mul:
1607 return MarkAsSimd128(node), VisitI16x8Mul(node); 1613 return MarkAsSimd128(node), VisitI16x8Mul(node);
1608 case IrOpcode::kI16x8MinS: 1614 case IrOpcode::kI16x8MinS:
1609 return MarkAsSimd128(node), VisitI16x8MinS(node); 1615 return MarkAsSimd128(node), VisitI16x8MinS(node);
1610 case IrOpcode::kI16x8MaxS: 1616 case IrOpcode::kI16x8MaxS:
1611 return MarkAsSimd128(node), VisitI16x8MaxS(node); 1617 return MarkAsSimd128(node), VisitI16x8MaxS(node);
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
2142 2148
2143 void InstructionSelector::VisitF32x4Abs(Node* node) { UNIMPLEMENTED(); } 2149 void InstructionSelector::VisitF32x4Abs(Node* node) { UNIMPLEMENTED(); }
2144 2150
2145 void InstructionSelector::VisitF32x4Neg(Node* node) { UNIMPLEMENTED(); } 2151 void InstructionSelector::VisitF32x4Neg(Node* node) { UNIMPLEMENTED(); }
2146 2152
2147 void InstructionSelector::VisitF32x4RecipSqrtApprox(Node* node) { 2153 void InstructionSelector::VisitF32x4RecipSqrtApprox(Node* node) {
2148 UNIMPLEMENTED(); 2154 UNIMPLEMENTED();
2149 } 2155 }
2150 2156
2151 void InstructionSelector::VisitF32x4Add(Node* node) { UNIMPLEMENTED(); } 2157 void InstructionSelector::VisitF32x4Add(Node* node) { UNIMPLEMENTED(); }
2158 #endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64
2152 2159
2160 #if !V8_TARGET_ARCH_ARM
2161 void InstructionSelector::VisitF32x4AddHoriz(Node* node) { UNIMPLEMENTED(); }
2162 #endif // !V8_TARGET_ARCH_ARM
2163
2164 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64
2153 void InstructionSelector::VisitF32x4Sub(Node* node) { UNIMPLEMENTED(); } 2165 void InstructionSelector::VisitF32x4Sub(Node* node) { UNIMPLEMENTED(); }
2154 2166
2155 void InstructionSelector::VisitF32x4Mul(Node* node) { UNIMPLEMENTED(); } 2167 void InstructionSelector::VisitF32x4Mul(Node* node) { UNIMPLEMENTED(); }
2156 2168
2157 void InstructionSelector::VisitF32x4Max(Node* node) { UNIMPLEMENTED(); } 2169 void InstructionSelector::VisitF32x4Max(Node* node) { UNIMPLEMENTED(); }
2158 2170
2159 void InstructionSelector::VisitF32x4Min(Node* node) { UNIMPLEMENTED(); } 2171 void InstructionSelector::VisitF32x4Min(Node* node) { UNIMPLEMENTED(); }
2160 2172
2161 void InstructionSelector::VisitF32x4RecipApprox(Node* node) { UNIMPLEMENTED(); } 2173 void InstructionSelector::VisitF32x4RecipApprox(Node* node) { UNIMPLEMENTED(); }
2162 2174
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 void InstructionSelector::VisitI32x4Ne(Node* node) { UNIMPLEMENTED(); } 2212 void InstructionSelector::VisitI32x4Ne(Node* node) { UNIMPLEMENTED(); }
2201 2213
2202 void InstructionSelector::VisitI32x4MinU(Node* node) { UNIMPLEMENTED(); } 2214 void InstructionSelector::VisitI32x4MinU(Node* node) { UNIMPLEMENTED(); }
2203 2215
2204 void InstructionSelector::VisitI32x4MaxU(Node* node) { UNIMPLEMENTED(); } 2216 void InstructionSelector::VisitI32x4MaxU(Node* node) { UNIMPLEMENTED(); }
2205 2217
2206 void InstructionSelector::VisitI32x4ShrU(Node* node) { UNIMPLEMENTED(); } 2218 void InstructionSelector::VisitI32x4ShrU(Node* node) { UNIMPLEMENTED(); }
2207 #endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && 2219 #endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS &&
2208 // !V8_TARGET_ARCH_MIPS64 2220 // !V8_TARGET_ARCH_MIPS64
2209 2221
2222 #if !V8_TARGET_ARCH_ARM
2223 void InstructionSelector::VisitI32x4AddHoriz(Node* node) { UNIMPLEMENTED(); }
2224 #endif // !V8_TARGET_ARCH_ARM
2225
2210 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64 2226 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64
2211 void InstructionSelector::VisitI32x4SConvertF32x4(Node* node) { 2227 void InstructionSelector::VisitI32x4SConvertF32x4(Node* node) {
2212 UNIMPLEMENTED(); 2228 UNIMPLEMENTED();
2213 } 2229 }
2214 2230
2215 void InstructionSelector::VisitI32x4UConvertF32x4(Node* node) { 2231 void InstructionSelector::VisitI32x4UConvertF32x4(Node* node) {
2216 UNIMPLEMENTED(); 2232 UNIMPLEMENTED();
2217 } 2233 }
2218 #endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64 2234 #endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64
2219 2235
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2254 2270
2255 void InstructionSelector::VisitI16x8Shl(Node* node) { UNIMPLEMENTED(); } 2271 void InstructionSelector::VisitI16x8Shl(Node* node) { UNIMPLEMENTED(); }
2256 2272
2257 void InstructionSelector::VisitI16x8ShrS(Node* node) { UNIMPLEMENTED(); } 2273 void InstructionSelector::VisitI16x8ShrS(Node* node) { UNIMPLEMENTED(); }
2258 2274
2259 void InstructionSelector::VisitI16x8Add(Node* node) { UNIMPLEMENTED(); } 2275 void InstructionSelector::VisitI16x8Add(Node* node) { UNIMPLEMENTED(); }
2260 2276
2261 void InstructionSelector::VisitI16x8AddSaturateS(Node* node) { 2277 void InstructionSelector::VisitI16x8AddSaturateS(Node* node) {
2262 UNIMPLEMENTED(); 2278 UNIMPLEMENTED();
2263 } 2279 }
2280 #endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM
2264 2281
2282 #if !V8_TARGET_ARCH_ARM
2283 void InstructionSelector::VisitI16x8AddHoriz(Node* node) { UNIMPLEMENTED(); }
2284 #endif // !V8_TARGET_ARCH_ARM
2285
2286 #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM
2265 void InstructionSelector::VisitI16x8Sub(Node* node) { UNIMPLEMENTED(); } 2287 void InstructionSelector::VisitI16x8Sub(Node* node) { UNIMPLEMENTED(); }
2266 2288
2267 void InstructionSelector::VisitI16x8SubSaturateS(Node* node) { 2289 void InstructionSelector::VisitI16x8SubSaturateS(Node* node) {
2268 UNIMPLEMENTED(); 2290 UNIMPLEMENTED();
2269 } 2291 }
2270 2292
2271 void InstructionSelector::VisitI16x8Mul(Node* node) { UNIMPLEMENTED(); } 2293 void InstructionSelector::VisitI16x8Mul(Node* node) { UNIMPLEMENTED(); }
2272 2294
2273 void InstructionSelector::VisitI16x8MinS(Node* node) { UNIMPLEMENTED(); } 2295 void InstructionSelector::VisitI16x8MinS(Node* node) { UNIMPLEMENTED(); }
2274 2296
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2348 UNIMPLEMENTED(); 2370 UNIMPLEMENTED();
2349 } 2371 }
2350 #endif // !V8_TARGET_ARCH_ARM 2372 #endif // !V8_TARGET_ARCH_ARM
2351 2373
2352 #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM 2374 #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM
2353 void InstructionSelector::VisitI8x16Add(Node* node) { UNIMPLEMENTED(); } 2375 void InstructionSelector::VisitI8x16Add(Node* node) { UNIMPLEMENTED(); }
2354 2376
2355 void InstructionSelector::VisitI8x16AddSaturateS(Node* node) { 2377 void InstructionSelector::VisitI8x16AddSaturateS(Node* node) {
2356 UNIMPLEMENTED(); 2378 UNIMPLEMENTED();
2357 } 2379 }
2380 #endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM
2358 2381
2382 #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM
2359 void InstructionSelector::VisitI8x16Sub(Node* node) { UNIMPLEMENTED(); } 2383 void InstructionSelector::VisitI8x16Sub(Node* node) { UNIMPLEMENTED(); }
2360 2384
2361 void InstructionSelector::VisitI8x16SubSaturateS(Node* node) { 2385 void InstructionSelector::VisitI8x16SubSaturateS(Node* node) {
2362 UNIMPLEMENTED(); 2386 UNIMPLEMENTED();
2363 } 2387 }
2364 2388
2365 void InstructionSelector::VisitI8x16MinS(Node* node) { UNIMPLEMENTED(); } 2389 void InstructionSelector::VisitI8x16MinS(Node* node) { UNIMPLEMENTED(); }
2366 2390
2367 void InstructionSelector::VisitI8x16MaxS(Node* node) { UNIMPLEMENTED(); } 2391 void InstructionSelector::VisitI8x16MaxS(Node* node) { UNIMPLEMENTED(); }
2368 2392
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
2915 return new (instruction_zone()) FrameStateDescriptor( 2939 return new (instruction_zone()) FrameStateDescriptor(
2916 instruction_zone(), state_info.type(), state_info.bailout_id(), 2940 instruction_zone(), state_info.type(), state_info.bailout_id(),
2917 state_info.state_combine(), parameters, locals, stack, 2941 state_info.state_combine(), parameters, locals, stack,
2918 state_info.shared_info(), outer_state); 2942 state_info.shared_info(), outer_state);
2919 } 2943 }
2920 2944
2921 2945
2922 } // namespace compiler 2946 } // namespace compiler
2923 } // namespace internal 2947 } // namespace internal
2924 } // namespace v8 2948 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-selector-arm.cc ('k') | src/compiler/machine-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698