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

Side by Side Diff: src/compiler/x64/code-generator-x64.cc

Issue 2951793003: [wasm] Implement remaining SIMD x64 compare ops, unops. (Closed)
Patch Set: Bill's review Created 3 years, 5 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
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | src/compiler/x64/instruction-codes-x64.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/code-generator.h" 5 #include "src/compiler/code-generator.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/compilation-info.h" 9 #include "src/compilation-info.h"
10 #include "src/compiler/code-generator-impl.h" 10 #include "src/compiler/code-generator-impl.h"
(...skipping 2170 matching lines...) Expand 10 before | Expand all | Expand 10 after
2181 case kX64I32x4ReplaceLane: { 2181 case kX64I32x4ReplaceLane: {
2182 CpuFeatureScope sse_scope(masm(), SSE4_1); 2182 CpuFeatureScope sse_scope(masm(), SSE4_1);
2183 if (instr->InputAt(2)->IsRegister()) { 2183 if (instr->InputAt(2)->IsRegister()) {
2184 __ Pinsrd(i.OutputSimd128Register(), i.InputRegister(2), 2184 __ Pinsrd(i.OutputSimd128Register(), i.InputRegister(2),
2185 i.InputInt8(1)); 2185 i.InputInt8(1));
2186 } else { 2186 } else {
2187 __ Pinsrd(i.OutputSimd128Register(), i.InputOperand(2), i.InputInt8(1)); 2187 __ Pinsrd(i.OutputSimd128Register(), i.InputOperand(2), i.InputInt8(1));
2188 } 2188 }
2189 break; 2189 break;
2190 } 2190 }
2191 case kX64I32x4Neg: {
2192 CpuFeatureScope sse_scope(masm(), SSSE3);
2193 XMMRegister dst = i.OutputSimd128Register();
2194 XMMRegister src = i.InputSimd128Register(0);
2195 if (dst.is(src)) {
2196 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
2197 __ psignd(dst, kScratchDoubleReg);
2198 } else {
2199 __ pxor(dst, dst);
2200 __ psubd(dst, src);
2201 }
2202 break;
2203 }
2191 case kX64I32x4Shl: { 2204 case kX64I32x4Shl: {
2192 __ pslld(i.OutputSimd128Register(), i.InputInt8(1)); 2205 __ pslld(i.OutputSimd128Register(), i.InputInt8(1));
2193 break; 2206 break;
2194 } 2207 }
2195 case kX64I32x4ShrS: { 2208 case kX64I32x4ShrS: {
2196 __ psrad(i.OutputSimd128Register(), i.InputInt8(1)); 2209 __ psrad(i.OutputSimd128Register(), i.InputInt8(1));
2197 break; 2210 break;
2198 } 2211 }
2199 case kX64I32x4Add: { 2212 case kX64I32x4Add: {
2200 __ paddd(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2213 __ paddd(i.OutputSimd128Register(), i.InputSimd128Register(1));
(...skipping 26 matching lines...) Expand all
2227 case kX64I32x4Eq: { 2240 case kX64I32x4Eq: {
2228 __ pcmpeqd(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2241 __ pcmpeqd(i.OutputSimd128Register(), i.InputSimd128Register(1));
2229 break; 2242 break;
2230 } 2243 }
2231 case kX64I32x4Ne: { 2244 case kX64I32x4Ne: {
2232 __ pcmpeqd(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2245 __ pcmpeqd(i.OutputSimd128Register(), i.InputSimd128Register(1));
2233 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg); 2246 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
2234 __ pxor(i.OutputSimd128Register(), kScratchDoubleReg); 2247 __ pxor(i.OutputSimd128Register(), kScratchDoubleReg);
2235 break; 2248 break;
2236 } 2249 }
2250 case kX64I32x4GtS: {
2251 __ pcmpgtd(i.OutputSimd128Register(), i.InputSimd128Register(1));
2252 break;
2253 }
2254 case kX64I32x4GeS: {
2255 CpuFeatureScope sse_scope(masm(), SSE4_1);
2256 XMMRegister dst = i.OutputSimd128Register();
2257 XMMRegister src = i.InputSimd128Register(1);
2258 __ pminsd(dst, src);
2259 __ pcmpeqd(dst, src);
2260 break;
2261 }
2237 case kX64I32x4ShrU: { 2262 case kX64I32x4ShrU: {
2238 __ psrld(i.OutputSimd128Register(), i.InputInt8(1)); 2263 __ psrld(i.OutputSimd128Register(), i.InputInt8(1));
2239 break; 2264 break;
2240 } 2265 }
2241 case kX64I32x4MinU: { 2266 case kX64I32x4MinU: {
2242 CpuFeatureScope sse_scope(masm(), SSE4_1); 2267 CpuFeatureScope sse_scope(masm(), SSE4_1);
2243 __ pminud(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2268 __ pminud(i.OutputSimd128Register(), i.InputSimd128Register(1));
2244 break; 2269 break;
2245 } 2270 }
2246 case kX64I32x4MaxU: { 2271 case kX64I32x4MaxU: {
2247 CpuFeatureScope sse_scope(masm(), SSE4_1); 2272 CpuFeatureScope sse_scope(masm(), SSE4_1);
2248 __ pmaxud(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2273 __ pmaxud(i.OutputSimd128Register(), i.InputSimd128Register(1));
2249 break; 2274 break;
2250 } 2275 }
2276 case kX64I32x4GtU: {
2277 CpuFeatureScope sse_scope(masm(), SSE4_1);
2278 XMMRegister dst = i.OutputSimd128Register();
2279 XMMRegister src = i.InputSimd128Register(1);
2280 __ pmaxud(dst, src);
2281 __ pcmpeqd(dst, src);
2282 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
2283 __ pxor(dst, kScratchDoubleReg);
2284 break;
2285 }
2286 case kX64I32x4GeU: {
2287 CpuFeatureScope sse_scope(masm(), SSE4_1);
2288 XMMRegister dst = i.OutputSimd128Register();
2289 XMMRegister src = i.InputSimd128Register(1);
2290 __ pminud(dst, src);
2291 __ pcmpeqd(dst, src);
2292 break;
2293 }
2251 case kX64S128Zero: { 2294 case kX64S128Zero: {
2252 XMMRegister dst = i.OutputSimd128Register(); 2295 XMMRegister dst = i.OutputSimd128Register();
2253 __ xorps(dst, dst); 2296 __ xorps(dst, dst);
2254 break; 2297 break;
2255 } 2298 }
2256 case kX64I16x8Splat: { 2299 case kX64I16x8Splat: {
2257 XMMRegister dst = i.OutputSimd128Register(); 2300 XMMRegister dst = i.OutputSimd128Register();
2258 __ movd(dst, i.InputRegister(0)); 2301 __ movd(dst, i.InputRegister(0));
2259 __ pshuflw(dst, dst, 0x0); 2302 __ pshuflw(dst, dst, 0x0);
2260 __ pshufhw(dst, dst, 0x0); 2303 __ pshufhw(dst, dst, 0x0);
(...skipping 10 matching lines...) Expand all
2271 case kX64I16x8ReplaceLane: { 2314 case kX64I16x8ReplaceLane: {
2272 CpuFeatureScope sse_scope(masm(), SSE4_1); 2315 CpuFeatureScope sse_scope(masm(), SSE4_1);
2273 if (instr->InputAt(2)->IsRegister()) { 2316 if (instr->InputAt(2)->IsRegister()) {
2274 __ pinsrw(i.OutputSimd128Register(), i.InputRegister(2), 2317 __ pinsrw(i.OutputSimd128Register(), i.InputRegister(2),
2275 i.InputInt8(1)); 2318 i.InputInt8(1));
2276 } else { 2319 } else {
2277 __ pinsrw(i.OutputSimd128Register(), i.InputOperand(2), i.InputInt8(1)); 2320 __ pinsrw(i.OutputSimd128Register(), i.InputOperand(2), i.InputInt8(1));
2278 } 2321 }
2279 break; 2322 break;
2280 } 2323 }
2324 case kX64I16x8Neg: {
2325 CpuFeatureScope sse_scope(masm(), SSSE3);
2326 XMMRegister dst = i.OutputSimd128Register();
2327 XMMRegister src = i.InputSimd128Register(0);
2328 if (dst.is(src)) {
2329 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
2330 __ psignw(dst, kScratchDoubleReg);
2331 } else {
2332 __ pxor(dst, dst);
2333 __ psubw(dst, src);
2334 }
2335 break;
2336 }
2281 case kX64I16x8Shl: { 2337 case kX64I16x8Shl: {
2282 __ psllw(i.OutputSimd128Register(), i.InputInt8(1)); 2338 __ psllw(i.OutputSimd128Register(), i.InputInt8(1));
2283 break; 2339 break;
2284 } 2340 }
2285 case kX64I16x8ShrS: { 2341 case kX64I16x8ShrS: {
2286 __ psraw(i.OutputSimd128Register(), i.InputInt8(1)); 2342 __ psraw(i.OutputSimd128Register(), i.InputInt8(1));
2287 break; 2343 break;
2288 } 2344 }
2289 case kX64I16x8Add: { 2345 case kX64I16x8Add: {
2290 __ paddw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2346 __ paddw(i.OutputSimd128Register(), i.InputSimd128Register(1));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2325 case kX64I16x8Eq: { 2381 case kX64I16x8Eq: {
2326 __ pcmpeqw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2382 __ pcmpeqw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2327 break; 2383 break;
2328 } 2384 }
2329 case kX64I16x8Ne: { 2385 case kX64I16x8Ne: {
2330 __ pcmpeqw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2386 __ pcmpeqw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2331 __ pcmpeqw(kScratchDoubleReg, kScratchDoubleReg); 2387 __ pcmpeqw(kScratchDoubleReg, kScratchDoubleReg);
2332 __ pxor(i.OutputSimd128Register(), kScratchDoubleReg); 2388 __ pxor(i.OutputSimd128Register(), kScratchDoubleReg);
2333 break; 2389 break;
2334 } 2390 }
2391 case kX64I16x8GtS: {
2392 __ pcmpgtw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2393 break;
2394 }
2395 case kX64I16x8GeS: {
2396 CpuFeatureScope sse_scope(masm(), SSE4_1);
2397 XMMRegister dst = i.OutputSimd128Register();
2398 XMMRegister src = i.InputSimd128Register(1);
2399 __ pminsw(dst, src);
2400 __ pcmpeqw(dst, src);
2401 break;
2402 }
2335 case kX64I16x8ShrU: { 2403 case kX64I16x8ShrU: {
2336 __ psrlw(i.OutputSimd128Register(), i.InputInt8(1)); 2404 __ psrlw(i.OutputSimd128Register(), i.InputInt8(1));
2337 break; 2405 break;
2338 } 2406 }
2339 case kX64I16x8AddSaturateU: { 2407 case kX64I16x8AddSaturateU: {
2340 __ paddusw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2408 __ paddusw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2341 break; 2409 break;
2342 } 2410 }
2343 case kX64I16x8SubSaturateU: { 2411 case kX64I16x8SubSaturateU: {
2344 __ psubusw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2412 __ psubusw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2345 break; 2413 break;
2346 } 2414 }
2347 case kX64I16x8MinU: { 2415 case kX64I16x8MinU: {
2348 CpuFeatureScope sse_scope(masm(), SSE4_1); 2416 CpuFeatureScope sse_scope(masm(), SSE4_1);
2349 __ pminuw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2417 __ pminuw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2350 break; 2418 break;
2351 } 2419 }
2352 case kX64I16x8MaxU: { 2420 case kX64I16x8MaxU: {
2353 CpuFeatureScope sse_scope(masm(), SSE4_1); 2421 CpuFeatureScope sse_scope(masm(), SSE4_1);
2354 __ pmaxuw(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2422 __ pmaxuw(i.OutputSimd128Register(), i.InputSimd128Register(1));
2355 break; 2423 break;
2356 } 2424 }
2425 case kX64I16x8GtU: {
2426 CpuFeatureScope sse_scope(masm(), SSE4_1);
2427 XMMRegister dst = i.OutputSimd128Register();
2428 XMMRegister src = i.InputSimd128Register(1);
2429 __ pmaxuw(dst, src);
2430 __ pcmpeqw(dst, src);
2431 __ pcmpeqw(kScratchDoubleReg, kScratchDoubleReg);
2432 __ pxor(dst, kScratchDoubleReg);
2433 break;
2434 }
2435 case kX64I16x8GeU: {
2436 CpuFeatureScope sse_scope(masm(), SSE4_1);
2437 XMMRegister dst = i.OutputSimd128Register();
2438 XMMRegister src = i.InputSimd128Register(1);
2439 __ pminuw(dst, src);
2440 __ pcmpeqw(dst, src);
2441 break;
2442 }
2357 case kX64I8x16Splat: { 2443 case kX64I8x16Splat: {
2358 CpuFeatureScope sse_scope(masm(), SSSE3); 2444 CpuFeatureScope sse_scope(masm(), SSSE3);
2359 XMMRegister dst = i.OutputSimd128Register(); 2445 XMMRegister dst = i.OutputSimd128Register();
2360 __ movd(dst, i.InputRegister(0)); 2446 __ movd(dst, i.InputRegister(0));
2361 __ xorps(kScratchDoubleReg, kScratchDoubleReg); 2447 __ xorps(kScratchDoubleReg, kScratchDoubleReg);
2362 __ pshufb(dst, kScratchDoubleReg); 2448 __ pshufb(dst, kScratchDoubleReg);
2363 break; 2449 break;
2364 } 2450 }
2365 case kX64I8x16ExtractLane: { 2451 case kX64I8x16ExtractLane: {
2366 CpuFeatureScope sse_scope(masm(), SSE4_1); 2452 CpuFeatureScope sse_scope(masm(), SSE4_1);
2367 Register dst = i.OutputRegister(); 2453 Register dst = i.OutputRegister();
2368 __ pextrb(dst, i.InputSimd128Register(0), i.InputInt8(1)); 2454 __ pextrb(dst, i.InputSimd128Register(0), i.InputInt8(1));
2369 __ movsxbl(dst, dst); 2455 __ movsxbl(dst, dst);
2370 break; 2456 break;
2371 } 2457 }
2372 case kX64I8x16ReplaceLane: { 2458 case kX64I8x16ReplaceLane: {
2373 CpuFeatureScope sse_scope(masm(), SSE4_1); 2459 CpuFeatureScope sse_scope(masm(), SSE4_1);
2374 if (instr->InputAt(2)->IsRegister()) { 2460 if (instr->InputAt(2)->IsRegister()) {
2375 __ pinsrb(i.OutputSimd128Register(), i.InputRegister(2), 2461 __ pinsrb(i.OutputSimd128Register(), i.InputRegister(2),
2376 i.InputInt8(1)); 2462 i.InputInt8(1));
2377 } else { 2463 } else {
2378 __ pinsrb(i.OutputSimd128Register(), i.InputOperand(2), i.InputInt8(1)); 2464 __ pinsrb(i.OutputSimd128Register(), i.InputOperand(2), i.InputInt8(1));
2379 } 2465 }
2380 break; 2466 break;
2381 } 2467 }
2468 case kX64I8x16Neg: {
2469 CpuFeatureScope sse_scope(masm(), SSSE3);
2470 XMMRegister dst = i.OutputSimd128Register();
2471 XMMRegister src = i.InputSimd128Register(0);
2472 if (dst.is(src)) {
2473 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
2474 __ psignb(dst, kScratchDoubleReg);
2475 } else {
2476 __ pxor(dst, dst);
2477 __ psubb(dst, src);
2478 }
2479 break;
2480 }
2382 case kX64I8x16Add: { 2481 case kX64I8x16Add: {
2383 __ paddb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2482 __ paddb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2384 break; 2483 break;
2385 } 2484 }
2386 case kX64I8x16AddSaturateS: { 2485 case kX64I8x16AddSaturateS: {
2387 __ paddsb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2486 __ paddsb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2388 break; 2487 break;
2389 } 2488 }
2390 case kX64I8x16Sub: { 2489 case kX64I8x16Sub: {
2391 __ psubb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2490 __ psubb(i.OutputSimd128Register(), i.InputSimd128Register(1));
(...skipping 16 matching lines...) Expand all
2408 case kX64I8x16Eq: { 2507 case kX64I8x16Eq: {
2409 __ pcmpeqb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2508 __ pcmpeqb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2410 break; 2509 break;
2411 } 2510 }
2412 case kX64I8x16Ne: { 2511 case kX64I8x16Ne: {
2413 __ pcmpeqb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2512 __ pcmpeqb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2414 __ pcmpeqb(kScratchDoubleReg, kScratchDoubleReg); 2513 __ pcmpeqb(kScratchDoubleReg, kScratchDoubleReg);
2415 __ pxor(i.OutputSimd128Register(), kScratchDoubleReg); 2514 __ pxor(i.OutputSimd128Register(), kScratchDoubleReg);
2416 break; 2515 break;
2417 } 2516 }
2517 case kX64I8x16GtS: {
2518 __ pcmpgtb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2519 break;
2520 }
2521 case kX64I8x16GeS: {
2522 CpuFeatureScope sse_scope(masm(), SSE4_1);
2523 XMMRegister dst = i.OutputSimd128Register();
2524 XMMRegister src = i.InputSimd128Register(1);
2525 __ pminsb(dst, src);
2526 __ pcmpeqb(dst, src);
2527 break;
2528 }
2418 case kX64I8x16AddSaturateU: { 2529 case kX64I8x16AddSaturateU: {
2419 __ paddusb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2530 __ paddusb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2420 break; 2531 break;
2421 } 2532 }
2422 case kX64I8x16SubSaturateU: { 2533 case kX64I8x16SubSaturateU: {
2423 __ psubusb(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2534 __ psubusb(i.OutputSimd128Register(), i.InputSimd128Register(1));
2424 break; 2535 break;
2425 } 2536 }
2426 case kX64I8x16MinU: { 2537 case kX64I8x16MinU: {
2427 CpuFeatureScope sse_scope(masm(), SSE4_1); 2538 CpuFeatureScope sse_scope(masm(), SSE4_1);
2428 __ pminub(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2539 __ pminub(i.OutputSimd128Register(), i.InputSimd128Register(1));
2429 break; 2540 break;
2430 } 2541 }
2431 case kX64I8x16MaxU: { 2542 case kX64I8x16MaxU: {
2432 CpuFeatureScope sse_scope(masm(), SSE4_1); 2543 CpuFeatureScope sse_scope(masm(), SSE4_1);
2433 __ pmaxub(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2544 __ pmaxub(i.OutputSimd128Register(), i.InputSimd128Register(1));
2434 break; 2545 break;
2435 } 2546 }
2547 case kX64I8x16GtU: {
2548 CpuFeatureScope sse_scope(masm(), SSE4_1);
2549 XMMRegister dst = i.OutputSimd128Register();
2550 XMMRegister src = i.InputSimd128Register(1);
2551 __ pmaxub(dst, src);
2552 __ pcmpeqb(dst, src);
2553 __ pcmpeqb(kScratchDoubleReg, kScratchDoubleReg);
2554 __ pxor(dst, kScratchDoubleReg);
2555 break;
2556 }
2557 case kX64I8x16GeU: {
2558 CpuFeatureScope sse_scope(masm(), SSE4_1);
2559 XMMRegister dst = i.OutputSimd128Register();
2560 XMMRegister src = i.InputSimd128Register(1);
2561 __ pminub(dst, src);
2562 __ pcmpeqb(dst, src);
2563 break;
2564 }
2436 case kX64S128And: { 2565 case kX64S128And: {
2437 __ pand(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2566 __ pand(i.OutputSimd128Register(), i.InputSimd128Register(1));
2438 break; 2567 break;
2439 } 2568 }
2440 case kX64S128Or: { 2569 case kX64S128Or: {
2441 __ por(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2570 __ por(i.OutputSimd128Register(), i.InputSimd128Register(1));
2442 break; 2571 break;
2443 } 2572 }
2444 case kX64S128Xor: { 2573 case kX64S128Xor: {
2445 __ pxor(i.OutputSimd128Register(), i.InputSimd128Register(1)); 2574 __ pxor(i.OutputSimd128Register(), i.InputSimd128Register(1));
2446 break; 2575 break;
2447 } 2576 }
2448 case kX64S128Not: { 2577 case kX64S128Not: {
2449 XMMRegister dst = i.OutputSimd128Register(); 2578 XMMRegister dst = i.OutputSimd128Register();
2450 __ pcmpeqd(dst, dst); 2579 XMMRegister src = i.InputSimd128Register(0);
2451 __ pxor(dst, i.InputSimd128Register(1)); 2580 if (dst.is(src)) {
2581 __ movaps(kScratchDoubleReg, dst);
2582 __ pcmpeqd(dst, dst);
2583 __ pxor(dst, kScratchDoubleReg);
2584 } else {
2585 __ pcmpeqd(dst, dst);
2586 __ pxor(dst, src);
2587 }
2588
2452 break; 2589 break;
2453 } 2590 }
2454 case kX64S128Select: { 2591 case kX64S128Select: {
2455 // Mask used here is stored in dst. 2592 // Mask used here is stored in dst.
2456 XMMRegister dst = i.OutputSimd128Register(); 2593 XMMRegister dst = i.OutputSimd128Register();
2457 __ movaps(kScratchDoubleReg, i.InputSimd128Register(1)); 2594 __ movaps(kScratchDoubleReg, i.InputSimd128Register(1));
2458 __ xorps(kScratchDoubleReg, i.InputSimd128Register(2)); 2595 __ xorps(kScratchDoubleReg, i.InputSimd128Register(2));
2459 __ andps(dst, kScratchDoubleReg); 2596 __ andps(dst, kScratchDoubleReg);
2460 __ xorps(dst, i.InputSimd128Register(2)); 2597 __ xorps(dst, i.InputSimd128Register(2));
2461 break; 2598 break;
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after
3214 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; 3351 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc;
3215 __ Nop(padding_size); 3352 __ Nop(padding_size);
3216 } 3353 }
3217 } 3354 }
3218 3355
3219 #undef __ 3356 #undef __
3220 3357
3221 } // namespace compiler 3358 } // namespace compiler
3222 } // namespace internal 3359 } // namespace internal
3223 } // namespace v8 3360 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | src/compiler/x64/instruction-codes-x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698