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

Side by Side Diff: src/compiler/simd-scalar-lowering.cc

Issue 2385393002: [wasm] Implement I32x4ReplaceLane, I32x4Add, I32x4Sub. (Closed)
Patch Set: Add lanes as compile time constants Created 4 years 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 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/simd-scalar-lowering.h" 5 #include "src/compiler/simd-scalar-lowering.h"
6 #include "src/compiler/diamond.h" 6 #include "src/compiler/diamond.h"
7 #include "src/compiler/linkage.h" 7 #include "src/compiler/linkage.h"
8 #include "src/compiler/node-matchers.h" 8 #include "src/compiler/node-matchers.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 10
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 Node* rep_node[kMaxLanes]; 244 Node* rep_node[kMaxLanes];
245 for (int i = 0; i < kMaxLanes; i++) { 245 for (int i = 0; i < kMaxLanes; i++) {
246 DCHECK(!HasReplacement(1, node->InputAt(i))); 246 DCHECK(!HasReplacement(1, node->InputAt(i)));
247 rep_node[i] = node->InputAt(i); 247 rep_node[i] = node->InputAt(i);
248 } 248 }
249 ReplaceNode(node, rep_node); 249 ReplaceNode(node, rep_node);
250 break; 250 break;
251 } 251 }
252 252
253 case IrOpcode::kInt32x4ExtractLane: { 253 case IrOpcode::kInt32x4ExtractLane: {
254 Node* laneNode = node->InputAt(1); 254 int32_t lane = OpParameter<int32_t>(node);
255 DCHECK_EQ(laneNode->opcode(), IrOpcode::kInt32Constant);
256 int32_t lane = OpParameter<int32_t>(laneNode);
257 Node* rep_node[kMaxLanes] = { 255 Node* rep_node[kMaxLanes] = {
258 GetReplacementsWithType(node->InputAt(0), rep_type)[lane], nullptr, 256 GetReplacementsWithType(node->InputAt(0), rep_type)[lane], nullptr,
259 nullptr, nullptr}; 257 nullptr, nullptr};
260 ReplaceNode(node, rep_node); 258 ReplaceNode(node, rep_node);
261 break; 259 break;
262 } 260 }
263 261
264 case IrOpcode::kFloat32x4Add: { 262 case IrOpcode::kFloat32x4Add: {
265 DCHECK(node->InputCount() == 2); 263 DCHECK(node->InputCount() == 2);
266 Node** rep_left = GetReplacementsWithType(node->InputAt(0), rep_type); 264 Node** rep_left = GetReplacementsWithType(node->InputAt(0), rep_type);
(...skipping 11 matching lines...) Expand all
278 Node* rep_node[kMaxLanes]; 276 Node* rep_node[kMaxLanes];
279 for (int i = 0; i < kMaxLanes; i++) { 277 for (int i = 0; i < kMaxLanes; i++) {
280 DCHECK(!HasReplacement(1, node->InputAt(i))); 278 DCHECK(!HasReplacement(1, node->InputAt(i)));
281 rep_node[i] = node->InputAt(i); 279 rep_node[i] = node->InputAt(i);
282 } 280 }
283 ReplaceNode(node, rep_node); 281 ReplaceNode(node, rep_node);
284 break; 282 break;
285 } 283 }
286 284
287 case IrOpcode::kFloat32x4ExtractLane: { 285 case IrOpcode::kFloat32x4ExtractLane: {
288 Node* laneNode = node->InputAt(1); 286 int32_t lane = OpParameter<int32_t>(node);
289 DCHECK_EQ(laneNode->opcode(), IrOpcode::kInt32Constant);
290 int32_t lane = OpParameter<int32_t>(laneNode);
291 Node* rep_node[kMaxLanes] = { 287 Node* rep_node[kMaxLanes] = {
292 GetReplacementsWithType(node->InputAt(0), rep_type)[lane], nullptr, 288 GetReplacementsWithType(node->InputAt(0), rep_type)[lane], nullptr,
293 nullptr, nullptr}; 289 nullptr, nullptr};
294 ReplaceNode(node, rep_node); 290 ReplaceNode(node, rep_node);
295 break; 291 break;
296 } 292 }
297 293
298 default: { DefaultLowering(node); } 294 default: { DefaultLowering(node); }
299 } 295 }
300 } 296 }
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 } else { 397 } else {
402 UNREACHABLE(); 398 UNREACHABLE();
403 } 399 }
404 } 400 }
405 ReplaceNode(phi, rep_nodes); 401 ReplaceNode(phi, rep_nodes);
406 } 402 }
407 } 403 }
408 } // namespace compiler 404 } // namespace compiler
409 } // namespace internal 405 } // namespace internal
410 } // namespace v8 406 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698