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

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

Issue 44153002: Introduce andps for IA32/X64 (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Created 7 years, 1 month 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2458 matching lines...) Expand 10 before | Expand all | Expand 10 after
2469 2469
2470 2470
2471 void Assembler::emit_farith(int b1, int b2, int i) { 2471 void Assembler::emit_farith(int b1, int b2, int i) {
2472 ASSERT(is_uint8(b1) && is_uint8(b2)); // wrong opcode 2472 ASSERT(is_uint8(b1) && is_uint8(b2)); // wrong opcode
2473 ASSERT(is_uint3(i)); // illegal stack offset 2473 ASSERT(is_uint3(i)); // illegal stack offset
2474 emit(b1); 2474 emit(b1);
2475 emit(b2 + i); 2475 emit(b2 + i);
2476 } 2476 }
2477 2477
2478 2478
2479 // SSE operations.
2480
2481 void Assembler::andps(XMMRegister dst, XMMRegister src) {
2482 EnsureSpace ensure_space(this);
2483 emit_optional_rex_32(dst, src);
2484 emit(0x0F);
2485 emit(0x54);
2486 emit_sse_operand(dst, src);
2487 }
2488
2489
2479 // SSE 2 operations. 2490 // SSE 2 operations.
2480 2491
2481 void Assembler::movd(XMMRegister dst, Register src) { 2492 void Assembler::movd(XMMRegister dst, Register src) {
2482 EnsureSpace ensure_space(this); 2493 EnsureSpace ensure_space(this);
2483 emit(0x66); 2494 emit(0x66);
2484 emit_optional_rex_32(dst, src); 2495 emit_optional_rex_32(dst, src);
2485 emit(0x0F); 2496 emit(0x0F);
2486 emit(0x6E); 2497 emit(0x6E);
2487 emit_sse_operand(dst, src); 2498 emit_sse_operand(dst, src);
2488 } 2499 }
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after
3078 bool RelocInfo::IsCodedSpecially() { 3089 bool RelocInfo::IsCodedSpecially() {
3079 // The deserializer needs to know whether a pointer is specially coded. Being 3090 // The deserializer needs to know whether a pointer is specially coded. Being
3080 // specially coded on x64 means that it is a relative 32 bit address, as used 3091 // specially coded on x64 means that it is a relative 32 bit address, as used
3081 // by branch instructions. 3092 // by branch instructions.
3082 return (1 << rmode_) & kApplyMask; 3093 return (1 << rmode_) & kApplyMask;
3083 } 3094 }
3084 3095
3085 } } // namespace v8::internal 3096 } } // namespace v8::internal
3086 3097
3087 #endif // V8_TARGET_ARCH_X64 3098 #endif // V8_TARGET_ARCH_X64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698