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

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

Issue 8749002: Implement Math.pow using FPU instructions and inline it in crankshaft (ia32). (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Also do NaN/infinity check on base for TAGGED case. Created 9 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 | Annotate | Revision Log
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 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after
1633 } 1633 }
1634 1634
1635 1635
1636 void Assembler::fyl2x() { 1636 void Assembler::fyl2x() {
1637 EnsureSpace ensure_space(this); 1637 EnsureSpace ensure_space(this);
1638 EMIT(0xD9); 1638 EMIT(0xD9);
1639 EMIT(0xF1); 1639 EMIT(0xF1);
1640 } 1640 }
1641 1641
1642 1642
1643 void Assembler::f2xm1() {
1644 EnsureSpace ensure_space(this);
1645 EMIT(0xD9);
1646 EMIT(0xF0);
1647 }
1648
1649
1650 void Assembler::fscale() {
1651 EnsureSpace ensure_space(this);
1652 EMIT(0xD9);
1653 EMIT(0xFD);
1654 }
1655
1656
1657 void Assembler::fninit() {
1658 EnsureSpace ensure_space(this);
1659 EMIT(0xDB);
1660 EMIT(0xE3);
1661 }
1662
1663
1643 void Assembler::fadd(int i) { 1664 void Assembler::fadd(int i) {
1644 EnsureSpace ensure_space(this); 1665 EnsureSpace ensure_space(this);
1645 emit_farith(0xDC, 0xC0, i); 1666 emit_farith(0xDC, 0xC0, i);
1646 } 1667 }
1647 1668
1648 1669
1649 void Assembler::fsub(int i) { 1670 void Assembler::fsub(int i) {
1650 EnsureSpace ensure_space(this); 1671 EnsureSpace ensure_space(this);
1651 emit_farith(0xDC, 0xE8, i); 1672 emit_farith(0xDC, 0xE8, i);
1652 } 1673 }
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 void Assembler::movd(const Operand& dst, XMMRegister src) { 2172 void Assembler::movd(const Operand& dst, XMMRegister src) {
2152 ASSERT(CpuFeatures::IsEnabled(SSE2)); 2173 ASSERT(CpuFeatures::IsEnabled(SSE2));
2153 EnsureSpace ensure_space(this); 2174 EnsureSpace ensure_space(this);
2154 EMIT(0x66); 2175 EMIT(0x66);
2155 EMIT(0x0F); 2176 EMIT(0x0F);
2156 EMIT(0x7E); 2177 EMIT(0x7E);
2157 emit_sse_operand(src, dst); 2178 emit_sse_operand(src, dst);
2158 } 2179 }
2159 2180
2160 2181
2182 void Assembler::extractps(Register dst, XMMRegister src, byte imm8) {
2183 ASSERT(CpuFeatures::IsSupported(SSE4_1));
2184 ASSERT(is_uint8(imm8));
2185 EnsureSpace ensure_space(this);
2186 EMIT(0x66);
2187 EMIT(0x0F);
2188 EMIT(0x3A);
2189 EMIT(0x17);
2190 emit_sse_operand(dst, src);
2191 EMIT(imm8);
2192 }
2193
2194
2161 void Assembler::pand(XMMRegister dst, XMMRegister src) { 2195 void Assembler::pand(XMMRegister dst, XMMRegister src) {
2162 ASSERT(CpuFeatures::IsEnabled(SSE2)); 2196 ASSERT(CpuFeatures::IsEnabled(SSE2));
2163 EnsureSpace ensure_space(this); 2197 EnsureSpace ensure_space(this);
2164 EMIT(0x66); 2198 EMIT(0x66);
2165 EMIT(0x0F); 2199 EMIT(0x0F);
2166 EMIT(0xDB); 2200 EMIT(0xDB);
2167 emit_sse_operand(dst, src); 2201 emit_sse_operand(dst, src);
2168 } 2202 }
2169 2203
2170 2204
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 fprintf(coverage_log, "%s\n", file_line); 2527 fprintf(coverage_log, "%s\n", file_line);
2494 fflush(coverage_log); 2528 fflush(coverage_log);
2495 } 2529 }
2496 } 2530 }
2497 2531
2498 #endif 2532 #endif
2499 2533
2500 } } // namespace v8::internal 2534 } } // namespace v8::internal
2501 2535
2502 #endif // V8_TARGET_ARCH_IA32 2536 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698