summaryrefslogtreecommitdiff
path: root/chromium/v8/src/codegen/arm/assembler-arm.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/codegen/arm/assembler-arm.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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/arm/assembler-arm.cc')
-rw-r--r--chromium/v8/src/codegen/arm/assembler-arm.cc35
1 files changed, 34 insertions, 1 deletions
diff --git a/chromium/v8/src/codegen/arm/assembler-arm.cc b/chromium/v8/src/codegen/arm/assembler-arm.cc
index 9032714f574..343cc5f2ded 100644
--- a/chromium/v8/src/codegen/arm/assembler-arm.cc
+++ b/chromium/v8/src/codegen/arm/assembler-arm.cc
@@ -3892,7 +3892,7 @@ void Assembler::vcvt_u32_f32(QwNeonRegister dst, QwNeonRegister src) {
emit(EncodeNeonVCVT(U32, dst, F32, src));
}
-enum UnaryOp { VMVN, VSWP, VABS, VABSF, VNEG, VNEGF };
+enum UnaryOp { VMVN, VSWP, VABS, VABSF, VNEG, VNEGF, VRINTM, VRINTP, VRINTZ };
static Instr EncodeNeonUnaryOp(UnaryOp op, NeonRegType reg_type, NeonSize size,
int dst_code, int src_code) {
@@ -3920,6 +3920,15 @@ static Instr EncodeNeonUnaryOp(UnaryOp op, NeonRegType reg_type, NeonSize size,
DCHECK_EQ(Neon32, size);
op_encoding = B16 | B10 | 0x7 * B7;
break;
+ case VRINTM:
+ op_encoding = B17 | 0xD * B7;
+ break;
+ case VRINTP:
+ op_encoding = B17 | 0xF * B7;
+ break;
+ case VRINTZ:
+ op_encoding = B17 | 0xB * B7;
+ break;
default:
UNREACHABLE();
}
@@ -4575,6 +4584,30 @@ void Assembler::vpmax(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1,
emit(EncodeNeonPairwiseOp(VPMAX, dt, dst, src1, src2));
}
+void Assembler::vrintm(NeonDataType dt, const QwNeonRegister dst,
+ const QwNeonRegister src) {
+ // SIMD vector round floating-point to integer towards -Infinity.
+ // See ARM DDI 0487F.b, F6-5493.
+ DCHECK(IsEnabled(ARMv8));
+ emit(EncodeNeonUnaryOp(VRINTM, NEON_Q, NeonSize(dt), dst.code(), src.code()));
+}
+
+void Assembler::vrintp(NeonDataType dt, const QwNeonRegister dst,
+ const QwNeonRegister src) {
+ // SIMD vector round floating-point to integer towards +Infinity.
+ // See ARM DDI 0487F.b, F6-5501.
+ DCHECK(IsEnabled(ARMv8));
+ emit(EncodeNeonUnaryOp(VRINTP, NEON_Q, NeonSize(dt), dst.code(), src.code()));
+}
+
+void Assembler::vrintz(NeonDataType dt, const QwNeonRegister dst,
+ const QwNeonRegister src) {
+ // SIMD vector round floating-point to integer towards Zero.
+ // See ARM DDI 0487F.b, F6-5511.
+ DCHECK(IsEnabled(ARMv8));
+ emit(EncodeNeonUnaryOp(VRINTZ, NEON_Q, NeonSize(dt), dst.code(), src.code()));
+}
+
void Assembler::vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1,
QwNeonRegister src2) {
DCHECK(IsEnabled(NEON));