6311 emit_int24((unsigned char)0xC1, (0xD0 | encode), imm8);
6312 }
6313 }
6314
6315 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
6316 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
6317 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
6318 emit_int16(0x53, (0xC0 | encode));
6319 }
6320
6321 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
6322 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
6323 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
6324 emit_int16(0x53, (0xC0 | encode));
6325 }
6326
6327 void Assembler::rdtsc() {
6328 emit_int16(0x0F, 0x31);
6329 }
6330
6331 // copies data from [esi] to [edi] using rcx pointer sized words
6332 // generic
6333 void Assembler::rep_mov() {
6334 // REP
6335 // MOVSQ
6336 emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);
6337 }
6338
6339 // sets rcx bytes with rax, value at [edi]
6340 void Assembler::rep_stosb() {
6341 // REP
6342 // STOSB
6343 emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);
6344 }
6345
6346 // sets rcx pointer sized words with rax, value at [edi]
6347 // generic
6348 void Assembler::rep_stos() {
6349 // REP
6350 // STOSQ
|
6311 emit_int24((unsigned char)0xC1, (0xD0 | encode), imm8);
6312 }
6313 }
6314
6315 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
6316 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
6317 int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
6318 emit_int16(0x53, (0xC0 | encode));
6319 }
6320
6321 void Assembler::rcpss(XMMRegister dst, XMMRegister src) {
6322 InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
6323 int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
6324 emit_int16(0x53, (0xC0 | encode));
6325 }
6326
6327 void Assembler::rdtsc() {
6328 emit_int16(0x0F, 0x31);
6329 }
6330
6331 void Assembler::rdtscp() {
6332 emit_int24(0x0F, 0x01, (unsigned char)0xF9);
6333 }
6334
6335 // copies data from [esi] to [edi] using rcx pointer sized words
6336 // generic
6337 void Assembler::rep_mov() {
6338 // REP
6339 // MOVSQ
6340 emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xA5);
6341 }
6342
6343 // sets rcx bytes with rax, value at [edi]
6344 void Assembler::rep_stosb() {
6345 // REP
6346 // STOSB
6347 emit_int24((unsigned char)0xF3, REX_W, (unsigned char)0xAA);
6348 }
6349
6350 // sets rcx pointer sized words with rax, value at [edi]
6351 // generic
6352 void Assembler::rep_stos() {
6353 // REP
6354 // STOSQ
|