src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8004835 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/assembler_x86.cpp

Print this page




2374 
2375 void Assembler::prefetchw(Address src) {
2376   assert(VM_Version::supports_3dnow_prefetch(), "must support");
2377   InstructionMark im(this);
2378   prefetch_prefix(src);
2379   emit_byte(0x0D);
2380   emit_operand(rcx, src); // 1, src
2381 }
2382 
2383 void Assembler::prefix(Prefix p) {
2384   a_byte(p);
2385 }
2386 
2387 void Assembler::pshufb(XMMRegister dst, XMMRegister src) {
2388   assert(VM_Version::supports_ssse3(), "");
2389   int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
2390   emit_byte(0x00);
2391   emit_byte(0xC0 | encode);
2392 }
2393 
2394 void Assembler::pshufb(XMMRegister dst, Address src) {
2395   assert(VM_Version::supports_ssse3(), "");
2396   assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
2397   InstructionMark im(this);
2398   simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
2399   emit_byte(0x00);
2400   emit_operand(dst, src);
2401 }
2402 
2403 void Assembler::pshufd(XMMRegister dst, XMMRegister src, int mode) {
2404   assert(isByte(mode), "invalid value");
2405   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2406   emit_simd_arith_nonds(0x70, dst, src, VEX_SIMD_66);
2407   emit_byte(mode & 0xFF);
2408 
2409 }
2410 
2411 void Assembler::pshufd(XMMRegister dst, Address src, int mode) {
2412   assert(isByte(mode), "invalid value");
2413   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2414   assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
2415   InstructionMark im(this);
2416   simd_prefix(dst, src, VEX_SIMD_66);




2374 
2375 void Assembler::prefetchw(Address src) {
2376   assert(VM_Version::supports_3dnow_prefetch(), "must support");
2377   InstructionMark im(this);
2378   prefetch_prefix(src);
2379   emit_byte(0x0D);
2380   emit_operand(rcx, src); // 1, src
2381 }
2382 
2383 void Assembler::prefix(Prefix p) {
2384   a_byte(p);
2385 }
2386 
2387 void Assembler::pshufb(XMMRegister dst, XMMRegister src) {
2388   assert(VM_Version::supports_ssse3(), "");
2389   int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
2390   emit_byte(0x00);
2391   emit_byte(0xC0 | encode);
2392 }
2393 
2394 void Assembler::pshufb(XMMRegister dst, Address src, bool aligned_adr) {
2395   assert(VM_Version::supports_ssse3(), "");
2396   assert((UseAVX > 0) || aligned_adr, "SSE mode requires address alignment 16 bytes");
2397   InstructionMark im(this);
2398   simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
2399   emit_byte(0x00);
2400   emit_operand(dst, src);
2401 }
2402 
2403 void Assembler::pshufd(XMMRegister dst, XMMRegister src, int mode) {
2404   assert(isByte(mode), "invalid value");
2405   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2406   emit_simd_arith_nonds(0x70, dst, src, VEX_SIMD_66);
2407   emit_byte(mode & 0xFF);
2408 
2409 }
2410 
2411 void Assembler::pshufd(XMMRegister dst, Address src, int mode) {
2412   assert(isByte(mode), "invalid value");
2413   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
2414   assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
2415   InstructionMark im(this);
2416   simd_prefix(dst, src, VEX_SIMD_66);


src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File