5715 }
5716
5717 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
5718 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5719 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5720 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
5721 emit_int16(0x53, (0xC0 | encode));
5722 }
5723
5724 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
5725 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5726 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5727 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
5728 emit_int16(0x53, (0xC0 | encode));
5729 }
5730
5731 void Assembler::rdtsc() {
5732 emit_int16(0x0F, 0x31);
5733 }
5734
5735 // copies data from [esi] to [edi] using rcx pointer sized words
5736 // generic
5737 void Assembler::rep_mov() {
5738 // REP
5739 // MOVSQ
5740 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);)
5741 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xA5);)
5742 }
5743
5744 // sets rcx bytes with rax, value at [edi]
5745 void Assembler::rep_stosb() {
5746 // REP
5747 // STOSB
5748 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);)
5749 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xAA);)
5750 }
5751
5752 // sets rcx pointer sized words with rax, value at [edi]
5753 // generic
5754 void Assembler::rep_stos() {
|
5715 }
5716
5717 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
5718 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5719 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5720 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
5721 emit_int16(0x53, (0xC0 | encode));
5722 }
5723
5724 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
5725 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5726 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5727 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
5728 emit_int16(0x53, (0xC0 | encode));
5729 }
5730
5731 void Assembler::rdtsc() {
5732 emit_int16(0x0F, 0x31);
5733 }
5734
5735 void Assembler::rdtscp() {
5736 emit_int24(0x0F, 0x01, (unsigned char)0xF9);
5737 }
5738
5739 // copies data from [esi] to [edi] using rcx pointer sized words
5740 // generic
5741 void Assembler::rep_mov() {
5742 // REP
5743 // MOVSQ
5744 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);)
5745 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xA5);)
5746 }
5747
5748 // sets rcx bytes with rax, value at [edi]
5749 void Assembler::rep_stosb() {
5750 // REP
5751 // STOSB
5752 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);)
5753 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xAA);)
5754 }
5755
5756 // sets rcx pointer sized words with rax, value at [edi]
5757 // generic
5758 void Assembler::rep_stos() {
|