5330 }
5331
5332 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
5333 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5334 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5335 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
5336 emit_int16(0x53, (0xC0 | encode));
5337 }
5338
5339 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
5340 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5341 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5342 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
5343 emit_int16(0x53, (0xC0 | encode));
5344 }
5345
5346 void Assembler::rdtsc() {
5347 emit_int16(0x0F, 0x31);
5348 }
5349
5350 // copies data from [esi] to [edi] using rcx pointer sized words
5351 // generic
5352 void Assembler::rep_mov() {
5353 // REP
5354 // MOVSQ
5355 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);)
5356 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xA5);)
5357 }
5358
5359 // sets rcx bytes with rax, value at [edi]
5360 void Assembler::rep_stosb() {
5361 // REP
5362 // STOSB
5363 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);)
5364 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xAA);)
5365 }
5366
5367 // sets rcx pointer sized words with rax, value at [edi]
5368 // generic
5369 void Assembler::rep_stos() {
|
5330 }
5331
5332 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
5333 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5334 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5335 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
5336 emit_int16(0x53, (0xC0 | encode));
5337 }
5338
5339 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
5340 NOT_LP64(assert(VM_Version::supports_sse(), ""));
5341 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
5342 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
5343 emit_int16(0x53, (0xC0 | encode));
5344 }
5345
5346 void Assembler::rdtsc() {
5347 emit_int16(0x0F, 0x31);
5348 }
5349
5350 void Assembler::rdtscp() {
5351 emit_int24(0x0F, 0x01, (unsigned char)0xF9);
5352 }
5353
5354 // copies data from [esi] to [edi] using rcx pointer sized words
5355 // generic
5356 void Assembler::rep_mov() {
5357 // REP
5358 // MOVSQ
5359 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);)
5360 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xA5);)
5361 }
5362
5363 // sets rcx bytes with rax, value at [edi]
5364 void Assembler::rep_stosb() {
5365 // REP
5366 // STOSB
5367 LP64_ONLY(emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);)
5368 NOT_LP64( emit_int16((unsigned char)0xF3, (unsigned char)0xAA);)
5369 }
5370
5371 // sets rcx pointer sized words with rax, value at [edi]
5372 // generic
5373 void Assembler::rep_stos() {
|