OLD | NEW |
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 2391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2402 void Assembler::movsd(XMMRegister dst, const Operand& src) { | 2402 void Assembler::movsd(XMMRegister dst, const Operand& src) { |
2403 ASSERT(CpuFeatures::IsEnabled(SSE2)); | 2403 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
2404 EnsureSpace ensure_space(this); | 2404 EnsureSpace ensure_space(this); |
2405 last_pc_ = pc_; | 2405 last_pc_ = pc_; |
2406 EMIT(0xF2); // double | 2406 EMIT(0xF2); // double |
2407 EMIT(0x0F); | 2407 EMIT(0x0F); |
2408 EMIT(0x10); // load | 2408 EMIT(0x10); // load |
2409 emit_sse_operand(dst, src); | 2409 emit_sse_operand(dst, src); |
2410 } | 2410 } |
2411 | 2411 |
| 2412 |
2412 void Assembler::movsd(XMMRegister dst, XMMRegister src) { | 2413 void Assembler::movsd(XMMRegister dst, XMMRegister src) { |
2413 ASSERT(CpuFeatures::IsEnabled(SSE2)); | 2414 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
2414 EnsureSpace ensure_space(this); | 2415 EnsureSpace ensure_space(this); |
2415 last_pc_ = pc_; | 2416 last_pc_ = pc_; |
2416 EMIT(0xF2); | 2417 EMIT(0xF2); |
2417 EMIT(0x0F); | 2418 EMIT(0x0F); |
2418 EMIT(0x10); | 2419 EMIT(0x10); |
2419 emit_sse_operand(dst, src); | 2420 emit_sse_operand(dst, src); |
2420 } | 2421 } |
2421 | 2422 |
2422 | 2423 |
2423 void Assembler::movd(XMMRegister dst, const Operand& src) { | 2424 void Assembler::movd(XMMRegister dst, const Operand& src) { |
2424 ASSERT(CpuFeatures::IsEnabled(SSE2)); | 2425 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
2425 EnsureSpace ensure_space(this); | 2426 EnsureSpace ensure_space(this); |
2426 last_pc_ = pc_; | 2427 last_pc_ = pc_; |
2427 EMIT(0x66); | 2428 EMIT(0x66); |
2428 EMIT(0x0F); | 2429 EMIT(0x0F); |
2429 EMIT(0x6E); | 2430 EMIT(0x6E); |
2430 emit_sse_operand(dst, src); | 2431 emit_sse_operand(dst, src); |
2431 } | 2432 } |
2432 | 2433 |
2433 | 2434 |
| 2435 void Assembler::movd(const Operand& dst, XMMRegister src) { |
| 2436 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
| 2437 EnsureSpace ensure_space(this); |
| 2438 last_pc_ = pc_; |
| 2439 EMIT(0x66); |
| 2440 EMIT(0x0F); |
| 2441 EMIT(0x7E); |
| 2442 emit_sse_operand(src, dst); |
| 2443 } |
| 2444 |
| 2445 |
2434 void Assembler::pand(XMMRegister dst, XMMRegister src) { | 2446 void Assembler::pand(XMMRegister dst, XMMRegister src) { |
2435 ASSERT(CpuFeatures::IsEnabled(SSE2)); | 2447 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
2436 EnsureSpace ensure_space(this); | 2448 EnsureSpace ensure_space(this); |
2437 last_pc_ = pc_; | 2449 last_pc_ = pc_; |
2438 EMIT(0x66); | 2450 EMIT(0x66); |
2439 EMIT(0x0F); | 2451 EMIT(0x0F); |
2440 EMIT(0xDB); | 2452 EMIT(0xDB); |
2441 emit_sse_operand(dst, src); | 2453 emit_sse_operand(dst, src); |
2442 } | 2454 } |
2443 | 2455 |
(...skipping 14 matching lines...) Expand all Loading... |
2458 EnsureSpace ensure_space(this); | 2470 EnsureSpace ensure_space(this); |
2459 last_pc_ = pc_; | 2471 last_pc_ = pc_; |
2460 EMIT(0x66); | 2472 EMIT(0x66); |
2461 EMIT(0x0F); | 2473 EMIT(0x0F); |
2462 EMIT(0x38); | 2474 EMIT(0x38); |
2463 EMIT(0x17); | 2475 EMIT(0x17); |
2464 emit_sse_operand(dst, src); | 2476 emit_sse_operand(dst, src); |
2465 } | 2477 } |
2466 | 2478 |
2467 | 2479 |
2468 void Assembler::psllq(XMMRegister reg, int8_t imm8) { | 2480 void Assembler::psllq(XMMRegister reg, int8_t shift) { |
2469 ASSERT(CpuFeatures::IsEnabled(SSE2)); | 2481 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
2470 EnsureSpace ensure_space(this); | 2482 EnsureSpace ensure_space(this); |
2471 last_pc_ = pc_; | 2483 last_pc_ = pc_; |
2472 EMIT(0x66); | 2484 EMIT(0x66); |
2473 EMIT(0x0F); | 2485 EMIT(0x0F); |
2474 EMIT(0x73); | 2486 EMIT(0x73); |
2475 emit_sse_operand(esi, reg); // esi == 6 | 2487 emit_sse_operand(esi, reg); // esi == 6 |
2476 EMIT(imm8); | 2488 EMIT(shift); |
| 2489 } |
| 2490 |
| 2491 |
| 2492 void Assembler::pshufd(XMMRegister dst, XMMRegister src, int8_t shuffle) { |
| 2493 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
| 2494 EnsureSpace ensure_space(this); |
| 2495 last_pc_ = pc_; |
| 2496 EMIT(0x66); |
| 2497 EMIT(0x0F); |
| 2498 EMIT(0x70); |
| 2499 emit_sse_operand(dst, src); |
| 2500 EMIT(shuffle); |
| 2501 } |
| 2502 |
| 2503 |
| 2504 void Assembler::pextrd(const Operand& dst, XMMRegister src, int8_t offset) { |
| 2505 ASSERT(CpuFeatures::IsEnabled(SSE2)); |
| 2506 EnsureSpace ensure_space(this); |
| 2507 last_pc_ = pc_; |
| 2508 EMIT(0x66); |
| 2509 EMIT(0x0F); |
| 2510 EMIT(0x3A); |
| 2511 EMIT(0x16); |
| 2512 emit_sse_operand(src, dst); |
| 2513 EMIT(offset); |
2477 } | 2514 } |
2478 | 2515 |
2479 | 2516 |
2480 void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) { | 2517 void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) { |
2481 Register ireg = { reg.code() }; | 2518 Register ireg = { reg.code() }; |
2482 emit_operand(ireg, adr); | 2519 emit_operand(ireg, adr); |
2483 } | 2520 } |
2484 | 2521 |
2485 | 2522 |
2486 void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) { | 2523 void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) { |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2696 fprintf(coverage_log, "%s\n", file_line); | 2733 fprintf(coverage_log, "%s\n", file_line); |
2697 fflush(coverage_log); | 2734 fflush(coverage_log); |
2698 } | 2735 } |
2699 } | 2736 } |
2700 | 2737 |
2701 #endif | 2738 #endif |
2702 | 2739 |
2703 } } // namespace v8::internal | 2740 } } // namespace v8::internal |
2704 | 2741 |
2705 #endif // V8_TARGET_ARCH_IA32 | 2742 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |