< prev index next >

src/hotspot/cpu/x86/assembler_x86.cpp

Print this page

 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() {
< prev index next >