5616 }
5617
5618 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
5619 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5620 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5621 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
5622 emit_int16(0x53, (0xC0 | encode));
5623 }
5624
5625 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
5626 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5627 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5628 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
5629 emit_int16(0x53, (0xC0 | encode));
5630 }
5631
5632 void Assembler::rdtsc() {
5633 emit_int16(0x0F, 0x31);
5634 }
5635
5636 // copies data from [esi] to [edi] using rcx pointer sized words
5637 // generic
5638 void Assembler::rep_mov() {
5639 // REP
5640 // MOVSQ
5641 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);)
5642 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xA5);)
5643 }
5644
5645 // sets rcx bytes with rax, value at [edi]
5646 void Assembler::rep_stosb() {
5647 // REP
5648 // STOSB
5649 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);)
5650 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xAA);)
5651 }
5652
5653 // sets rcx pointer sized words with rax, value at [edi]
5654 // generic
5655 void Assembler::rep_stos() {
|
5616 }
5617
5618 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
5619 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5620 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5621 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
5622 emit_int16(0x53, (0xC0 | encode));
5623 }
5624
5625 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
5626 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5627 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5628 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
5629 emit_int16(0x53, (0xC0 | encode));
5630 }
5631
5632 void Assembler::rdtsc() {
5633 emit_int16(0x0F, 0x31);
5634 }
5635
5636 void Assembler::rdtscp() {
5637 emit_int24(0x0F, 0x01, (unsigned char)0xF9);
5638 }
5639
5640 // copies data from [esi] to [edi] using rcx pointer sized words
5641 // generic
5642 void Assembler::rep_mov() {
5643 // REP
5644 // MOVSQ
5645 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);)
5646 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xA5);)
5647 }
5648
5649 // sets rcx bytes with rax, value at [edi]
5650 void Assembler::rep_stosb() {
5651 // REP
5652 // STOSB
5653 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);)
5654 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xAA);)
5655 }
5656
5657 // sets rcx pointer sized words with rax, value at [edi]
5658 // generic
5659 void Assembler::rep_stos() {
|