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/base/adapters.h" | 5 #include "src/base/adapters.h" |
6 #include "src/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 opcode = load_rep.IsSigned() ? kX87Movsxwl : kX87Movzxwl; | 188 opcode = load_rep.IsSigned() ? kX87Movsxwl : kX87Movzxwl; |
189 break; | 189 break; |
190 case MachineRepresentation::kTaggedSigned: // Fall through. | 190 case MachineRepresentation::kTaggedSigned: // Fall through. |
191 case MachineRepresentation::kTaggedPointer: // Fall through. | 191 case MachineRepresentation::kTaggedPointer: // Fall through. |
192 case MachineRepresentation::kTagged: // Fall through. | 192 case MachineRepresentation::kTagged: // Fall through. |
193 case MachineRepresentation::kWord32: | 193 case MachineRepresentation::kWord32: |
194 opcode = kX87Movl; | 194 opcode = kX87Movl; |
195 break; | 195 break; |
196 case MachineRepresentation::kWord64: // Fall through. | 196 case MachineRepresentation::kWord64: // Fall through. |
197 case MachineRepresentation::kSimd128: // Fall through. | 197 case MachineRepresentation::kSimd128: // Fall through. |
| 198 case MachineRepresentation::kSimd1x4: // Fall through. |
| 199 case MachineRepresentation::kSimd1x8: // Fall through. |
| 200 case MachineRepresentation::kSimd1x16: // Fall through. |
198 case MachineRepresentation::kNone: | 201 case MachineRepresentation::kNone: |
199 UNREACHABLE(); | 202 UNREACHABLE(); |
200 return; | 203 return; |
201 } | 204 } |
202 | 205 |
203 X87OperandGenerator g(this); | 206 X87OperandGenerator g(this); |
204 InstructionOperand outputs[1]; | 207 InstructionOperand outputs[1]; |
205 outputs[0] = g.DefineAsRegister(node); | 208 outputs[0] = g.DefineAsRegister(node); |
206 InstructionOperand inputs[3]; | 209 InstructionOperand inputs[3]; |
207 size_t input_count = 0; | 210 size_t input_count = 0; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 opcode = kX87Movw; | 281 opcode = kX87Movw; |
279 break; | 282 break; |
280 case MachineRepresentation::kTaggedSigned: // Fall through. | 283 case MachineRepresentation::kTaggedSigned: // Fall through. |
281 case MachineRepresentation::kTaggedPointer: // Fall through. | 284 case MachineRepresentation::kTaggedPointer: // Fall through. |
282 case MachineRepresentation::kTagged: // Fall through. | 285 case MachineRepresentation::kTagged: // Fall through. |
283 case MachineRepresentation::kWord32: | 286 case MachineRepresentation::kWord32: |
284 opcode = kX87Movl; | 287 opcode = kX87Movl; |
285 break; | 288 break; |
286 case MachineRepresentation::kWord64: // Fall through. | 289 case MachineRepresentation::kWord64: // Fall through. |
287 case MachineRepresentation::kSimd128: // Fall through. | 290 case MachineRepresentation::kSimd128: // Fall through. |
| 291 case MachineRepresentation::kSimd1x4: // Fall through. |
| 292 case MachineRepresentation::kSimd1x8: // Fall through. |
| 293 case MachineRepresentation::kSimd1x16: // Fall through. |
288 case MachineRepresentation::kNone: | 294 case MachineRepresentation::kNone: |
289 UNREACHABLE(); | 295 UNREACHABLE(); |
290 return; | 296 return; |
291 } | 297 } |
292 | 298 |
293 InstructionOperand val; | 299 InstructionOperand val; |
294 if (g.CanBeImmediate(value)) { | 300 if (g.CanBeImmediate(value)) { |
295 val = g.UseImmediate(value); | 301 val = g.UseImmediate(value); |
296 } else if (rep == MachineRepresentation::kWord8 || | 302 } else if (rep == MachineRepresentation::kWord8 || |
297 rep == MachineRepresentation::kBit) { | 303 rep == MachineRepresentation::kBit) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 break; | 351 break; |
346 case MachineRepresentation::kFloat64: | 352 case MachineRepresentation::kFloat64: |
347 opcode = kCheckedLoadFloat64; | 353 opcode = kCheckedLoadFloat64; |
348 break; | 354 break; |
349 case MachineRepresentation::kBit: // Fall through. | 355 case MachineRepresentation::kBit: // Fall through. |
350 case MachineRepresentation::kTaggedSigned: // Fall through. | 356 case MachineRepresentation::kTaggedSigned: // Fall through. |
351 case MachineRepresentation::kTaggedPointer: // Fall through. | 357 case MachineRepresentation::kTaggedPointer: // Fall through. |
352 case MachineRepresentation::kTagged: // Fall through. | 358 case MachineRepresentation::kTagged: // Fall through. |
353 case MachineRepresentation::kWord64: // Fall through. | 359 case MachineRepresentation::kWord64: // Fall through. |
354 case MachineRepresentation::kSimd128: // Fall through. | 360 case MachineRepresentation::kSimd128: // Fall through. |
| 361 case MachineRepresentation::kSimd1x4: // Fall through. |
| 362 case MachineRepresentation::kSimd1x8: // Fall through. |
| 363 case MachineRepresentation::kSimd1x16: // Fall through. |
355 case MachineRepresentation::kNone: | 364 case MachineRepresentation::kNone: |
356 UNREACHABLE(); | 365 UNREACHABLE(); |
357 return; | 366 return; |
358 } | 367 } |
359 InstructionOperand offset_operand = g.UseRegister(offset); | 368 InstructionOperand offset_operand = g.UseRegister(offset); |
360 InstructionOperand length_operand = | 369 InstructionOperand length_operand = |
361 g.CanBeImmediate(length) ? g.UseImmediate(length) : g.UseRegister(length); | 370 g.CanBeImmediate(length) ? g.UseImmediate(length) : g.UseRegister(length); |
362 if (g.CanBeImmediate(buffer)) { | 371 if (g.CanBeImmediate(buffer)) { |
363 Emit(opcode | AddressingModeField::encode(kMode_MRI), | 372 Emit(opcode | AddressingModeField::encode(kMode_MRI), |
364 g.DefineAsRegister(node), offset_operand, length_operand, | 373 g.DefineAsRegister(node), offset_operand, length_operand, |
(...skipping 29 matching lines...) Expand all Loading... |
394 break; | 403 break; |
395 case MachineRepresentation::kFloat64: | 404 case MachineRepresentation::kFloat64: |
396 opcode = kCheckedStoreFloat64; | 405 opcode = kCheckedStoreFloat64; |
397 break; | 406 break; |
398 case MachineRepresentation::kBit: // Fall through. | 407 case MachineRepresentation::kBit: // Fall through. |
399 case MachineRepresentation::kTaggedSigned: // Fall through. | 408 case MachineRepresentation::kTaggedSigned: // Fall through. |
400 case MachineRepresentation::kTaggedPointer: // Fall through. | 409 case MachineRepresentation::kTaggedPointer: // Fall through. |
401 case MachineRepresentation::kTagged: // Fall through. | 410 case MachineRepresentation::kTagged: // Fall through. |
402 case MachineRepresentation::kWord64: // Fall through. | 411 case MachineRepresentation::kWord64: // Fall through. |
403 case MachineRepresentation::kSimd128: // Fall through. | 412 case MachineRepresentation::kSimd128: // Fall through. |
| 413 case MachineRepresentation::kSimd1x4: // Fall through. |
| 414 case MachineRepresentation::kSimd1x8: // Fall through. |
| 415 case MachineRepresentation::kSimd1x16: // Fall through. |
404 case MachineRepresentation::kNone: | 416 case MachineRepresentation::kNone: |
405 UNREACHABLE(); | 417 UNREACHABLE(); |
406 return; | 418 return; |
407 } | 419 } |
408 InstructionOperand value_operand = | 420 InstructionOperand value_operand = |
409 g.CanBeImmediate(value) ? g.UseImmediate(value) | 421 g.CanBeImmediate(value) ? g.UseImmediate(value) |
410 : ((rep == MachineRepresentation::kWord8 || | 422 : ((rep == MachineRepresentation::kWord8 || |
411 rep == MachineRepresentation::kBit) | 423 rep == MachineRepresentation::kBit) |
412 ? g.UseByteRegister(value) | 424 ? g.UseByteRegister(value) |
413 : g.UseRegister(value)); | 425 : g.UseRegister(value)); |
(...skipping 1430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1844 // static | 1856 // static |
1845 MachineOperatorBuilder::AlignmentRequirements | 1857 MachineOperatorBuilder::AlignmentRequirements |
1846 InstructionSelector::AlignmentRequirements() { | 1858 InstructionSelector::AlignmentRequirements() { |
1847 return MachineOperatorBuilder::AlignmentRequirements:: | 1859 return MachineOperatorBuilder::AlignmentRequirements:: |
1848 FullUnalignedAccessSupport(); | 1860 FullUnalignedAccessSupport(); |
1849 } | 1861 } |
1850 | 1862 |
1851 } // namespace compiler | 1863 } // namespace compiler |
1852 } // namespace internal | 1864 } // namespace internal |
1853 } // namespace v8 | 1865 } // namespace v8 |
OLD | NEW |