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

Side by Side Diff: src/ia32/assembler-ia32.cc

Issue 1044793002: [turbofan] Add backend support for float32 operations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add MachineOperator unit tests. Created 5 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
OLDNEW
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 2563 matching lines...) Expand 10 before | Expand all | Expand 10 after
2574 2574
2575 void Assembler::divss(XMMRegister dst, const Operand& src) { 2575 void Assembler::divss(XMMRegister dst, const Operand& src) {
2576 EnsureSpace ensure_space(this); 2576 EnsureSpace ensure_space(this);
2577 EMIT(0xF3); 2577 EMIT(0xF3);
2578 EMIT(0x0F); 2578 EMIT(0x0F);
2579 EMIT(0x5E); 2579 EMIT(0x5E);
2580 emit_sse_operand(dst, src); 2580 emit_sse_operand(dst, src);
2581 } 2581 }
2582 2582
2583 2583
2584 void Assembler::sqrtss(XMMRegister dst, const Operand& src) {
2585 EnsureSpace ensure_space(this);
2586 EMIT(0xF3);
2587 EMIT(0x0F);
2588 EMIT(0x51);
2589 emit_sse_operand(dst, src);
2590 }
2591
2592
2584 void Assembler::ucomiss(XMMRegister dst, const Operand& src) { 2593 void Assembler::ucomiss(XMMRegister dst, const Operand& src) {
2585 EnsureSpace ensure_space(this); 2594 EnsureSpace ensure_space(this);
2586 EMIT(0x0f); 2595 EMIT(0x0f);
2587 EMIT(0x2e); 2596 EMIT(0x2e);
2588 emit_sse_operand(dst, src); 2597 emit_sse_operand(dst, src);
2589 } 2598 }
2590 2599
2591 2600
2601 void Assembler::maxss(XMMRegister dst, const Operand& src) {
2602 EnsureSpace ensure_space(this);
2603 EMIT(0xF3);
2604 EMIT(0x0F);
2605 EMIT(0x5F);
2606 emit_sse_operand(dst, src);
2607 }
2608
2609
2610 void Assembler::minss(XMMRegister dst, const Operand& src) {
2611 EnsureSpace ensure_space(this);
2612 EMIT(0xF3);
2613 EMIT(0x0F);
2614 EMIT(0x5D);
2615 emit_sse_operand(dst, src);
2616 }
2617
2618
2592 // AVX instructions 2619 // AVX instructions
2593 void Assembler::vfmasd(byte op, XMMRegister dst, XMMRegister src1, 2620 void Assembler::vfmasd(byte op, XMMRegister dst, XMMRegister src1,
2594 const Operand& src2) { 2621 const Operand& src2) {
2595 DCHECK(IsEnabled(FMA3)); 2622 DCHECK(IsEnabled(FMA3));
2596 EnsureSpace ensure_space(this); 2623 EnsureSpace ensure_space(this);
2597 emit_vex_prefix(src1, kLIG, k66, k0F38, kW1); 2624 emit_vex_prefix(src1, kLIG, k66, k0F38, kW1);
2598 EMIT(op); 2625 EMIT(op);
2599 emit_sse_operand(dst, src2); 2626 emit_sse_operand(dst, src2);
2600 } 2627 }
2601 2628
(...skipping 11 matching lines...) Expand all
2613 void Assembler::vsd(byte op, XMMRegister dst, XMMRegister src1, 2640 void Assembler::vsd(byte op, XMMRegister dst, XMMRegister src1,
2614 const Operand& src2) { 2641 const Operand& src2) {
2615 DCHECK(IsEnabled(AVX)); 2642 DCHECK(IsEnabled(AVX));
2616 EnsureSpace ensure_space(this); 2643 EnsureSpace ensure_space(this);
2617 emit_vex_prefix(src1, kLIG, kF2, k0F, kWIG); 2644 emit_vex_prefix(src1, kLIG, kF2, k0F, kWIG);
2618 EMIT(op); 2645 EMIT(op);
2619 emit_sse_operand(dst, src2); 2646 emit_sse_operand(dst, src2);
2620 } 2647 }
2621 2648
2622 2649
2650 void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1,
2651 const Operand& src2) {
2652 DCHECK(IsEnabled(AVX));
2653 EnsureSpace ensure_space(this);
2654 emit_vex_prefix(src1, kLIG, kF3, k0F, kWIG);
2655 EMIT(op);
2656 emit_sse_operand(dst, src2);
2657 }
2658
2659
2623 void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) { 2660 void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) {
2624 Register ireg = { reg.code() }; 2661 Register ireg = { reg.code() };
2625 emit_operand(ireg, adr); 2662 emit_operand(ireg, adr);
2626 } 2663 }
2627 2664
2628 2665
2629 void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) { 2666 void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) {
2630 EMIT(0xC0 | dst.code() << 3 | src.code()); 2667 EMIT(0xC0 | dst.code() << 3 | src.code());
2631 } 2668 }
2632 2669
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
2841 fprintf(coverage_log, "%s\n", file_line); 2878 fprintf(coverage_log, "%s\n", file_line);
2842 fflush(coverage_log); 2879 fflush(coverage_log);
2843 } 2880 }
2844 } 2881 }
2845 2882
2846 #endif 2883 #endif
2847 2884
2848 } } // namespace v8::internal 2885 } } // namespace v8::internal
2849 2886
2850 #endif // V8_TARGET_ARCH_IA32 2887 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698