OLD | NEW |
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/int64-lowering.h" | 5 #include "src/compiler/int64-lowering.h" |
6 #include "src/compiler/common-operator.h" | 6 #include "src/compiler/common-operator.h" |
7 #include "src/compiler/graph.h" | 7 #include "src/compiler/graph.h" |
8 #include "src/compiler/linkage.h" | 8 #include "src/compiler/linkage.h" |
9 #include "src/compiler/machine-operator.h" | 9 #include "src/compiler/machine-operator.h" |
10 #include "src/compiler/node-properties.h" | 10 #include "src/compiler/node-properties.h" |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 graph()->NewNode(machine()->Word32Or(), GetReplacementLow(left), | 267 graph()->NewNode(machine()->Word32Or(), GetReplacementLow(left), |
268 GetReplacementLow(right)); | 268 GetReplacementLow(right)); |
269 Node* high_node = | 269 Node* high_node = |
270 graph()->NewNode(machine()->Word32Or(), GetReplacementHigh(left), | 270 graph()->NewNode(machine()->Word32Or(), GetReplacementHigh(left), |
271 GetReplacementHigh(right)); | 271 GetReplacementHigh(right)); |
272 ReplaceNode(node, low_node, high_node); | 272 ReplaceNode(node, low_node, high_node); |
273 break; | 273 break; |
274 } | 274 } |
275 | 275 |
276 // kExprI64Xor: | 276 // kExprI64Xor: |
| 277 case IrOpcode::kWord64Xor: { |
| 278 DCHECK(node->InputCount() == 2); |
| 279 Node* left = node->InputAt(0); |
| 280 Node* right = node->InputAt(1); |
| 281 |
| 282 Node* low_node = |
| 283 graph()->NewNode(machine()->Word32Xor(), GetReplacementLow(left), |
| 284 GetReplacementLow(right)); |
| 285 Node* high_node = |
| 286 graph()->NewNode(machine()->Word32Xor(), GetReplacementHigh(left), |
| 287 GetReplacementHigh(right)); |
| 288 ReplaceNode(node, low_node, high_node); |
| 289 break; |
| 290 } |
277 // kExprI64Shl: | 291 // kExprI64Shl: |
278 // kExprI64ShrU: | 292 // kExprI64ShrU: |
279 // kExprI64ShrS: | 293 // kExprI64ShrS: |
280 // kExprI64Eq: | 294 // kExprI64Eq: |
281 // kExprI64Ne: | 295 // kExprI64Ne: |
282 // kExprI64LtS: | 296 // kExprI64LtS: |
283 // kExprI64LeS: | 297 // kExprI64LeS: |
284 // kExprI64LtU: | 298 // kExprI64LtU: |
285 // kExprI64LeU: | 299 // kExprI64LeU: |
286 // kExprI64GtS: | 300 // kExprI64GtS: |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 } | 362 } |
349 | 363 |
350 Node* Int64Lowering::GetReplacementHigh(Node* node) { | 364 Node* Int64Lowering::GetReplacementHigh(Node* node) { |
351 Node* result = replacements_[node->id()].high; | 365 Node* result = replacements_[node->id()].high; |
352 DCHECK(result); | 366 DCHECK(result); |
353 return result; | 367 return result; |
354 } | 368 } |
355 } // namespace compiler | 369 } // namespace compiler |
356 } // namespace internal | 370 } // namespace internal |
357 } // namespace v8 | 371 } // namespace v8 |
OLD | NEW |