diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/codegen/ia32/assembler-ia32.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/codegen/ia32/assembler-ia32.cc')
-rw-r--r-- | chromium/v8/src/codegen/ia32/assembler-ia32.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/chromium/v8/src/codegen/ia32/assembler-ia32.cc b/chromium/v8/src/codegen/ia32/assembler-ia32.cc index 551750936db..321a59ceded 100644 --- a/chromium/v8/src/codegen/ia32/assembler-ia32.cc +++ b/chromium/v8/src/codegen/ia32/assembler-ia32.cc @@ -691,6 +691,29 @@ void Assembler::stos() { EMIT(0xAB); } +void Assembler::xadd(Operand dst, Register src) { + EnsureSpace ensure_space(this); + EMIT(0x0F); + EMIT(0xC1); + emit_operand(src, dst); +} + +void Assembler::xadd_b(Operand dst, Register src) { + DCHECK(src.is_byte_register()); + EnsureSpace ensure_space(this); + EMIT(0x0F); + EMIT(0xC0); + emit_operand(src, dst); +} + +void Assembler::xadd_w(Operand dst, Register src) { + EnsureSpace ensure_space(this); + EMIT(0x66); + EMIT(0x0F); + EMIT(0xC1); + emit_operand(src, dst); +} + void Assembler::xchg(Register dst, Register src) { EnsureSpace ensure_space(this); if (src == eax || dst == eax) { // Single-byte encoding. @@ -2246,6 +2269,30 @@ void Assembler::ucomisd(XMMRegister dst, Operand src) { emit_sse_operand(dst, src); } +void Assembler::roundps(XMMRegister dst, XMMRegister src, RoundingMode mode) { + DCHECK(IsEnabled(SSE4_1)); + EnsureSpace ensure_space(this); + EMIT(0x66); + EMIT(0x0F); + EMIT(0x3A); + EMIT(0x08); + emit_sse_operand(dst, src); + // Mask precision exeption. + EMIT(static_cast<byte>(mode) | 0x8); +} + +void Assembler::roundpd(XMMRegister dst, XMMRegister src, RoundingMode mode) { + DCHECK(IsEnabled(SSE4_1)); + EnsureSpace ensure_space(this); + EMIT(0x66); + EMIT(0x0F); + EMIT(0x3A); + EMIT(0x09); + emit_sse_operand(dst, src); + // Mask precision exeption. + EMIT(static_cast<byte>(mode) | 0x8); +} + void Assembler::roundss(XMMRegister dst, XMMRegister src, RoundingMode mode) { DCHECK(IsEnabled(SSE4_1)); EnsureSpace ensure_space(this); @@ -2921,6 +2968,15 @@ void Assembler::vpinsrd(XMMRegister dst, XMMRegister src1, Operand src2, EMIT(offset); } +void Assembler::vroundps(XMMRegister dst, XMMRegister src, RoundingMode mode) { + vinstr(0x08, dst, xmm0, Operand(src), k66, k0F3A, kWIG); + EMIT(static_cast<byte>(mode) | 0x8); // Mask precision exception. +} +void Assembler::vroundpd(XMMRegister dst, XMMRegister src, RoundingMode mode) { + vinstr(0x09, dst, xmm0, Operand(src), k66, k0F3A, kWIG); + EMIT(static_cast<byte>(mode) | 0x8); // Mask precision exception. +} + void Assembler::vmovmskps(Register dst, XMMRegister src) { DCHECK(IsEnabled(AVX)); EnsureSpace ensure_space(this); |