diff options
Diffstat (limited to 'deps/v8/src/codegen/arm/macro-assembler-arm.h')
-rw-r--r-- | deps/v8/src/codegen/arm/macro-assembler-arm.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.h b/deps/v8/src/codegen/arm/macro-assembler-arm.h index 55a7baba7a..54c3e6c941 100644 --- a/deps/v8/src/codegen/arm/macro-assembler-arm.h +++ b/deps/v8/src/codegen/arm/macro-assembler-arm.h @@ -317,7 +317,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void LoadCodeObjectEntry(Register destination, Register code_object) override; void CallCodeObject(Register code_object) override; - void JumpCodeObject(Register code_object) override; + void JumpCodeObject(Register code_object, + JumpMode jump_mode = JumpMode::kJump) override; // Generates an instruction sequence s.t. the return address points to the // instruction following the call. @@ -565,6 +566,15 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // Define an exception handler and bind a label. void BindExceptionHandler(Label* label) { bind(label); } + // Wasm SIMD helpers. These instructions don't have direct lowering to native + // instructions. These helpers allow us to define the optimal code sequence, + // and be used in both TurboFan and Liftoff. + void I64x2BitMask(Register dst, QwNeonRegister src); + void I64x2Eq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); + void I64x2GtS(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); + void I64x2GeS(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); + void V64x2AllTrue(Register dst, QwNeonRegister src); + private: // Compare single values and then load the fpscr flags to a register. void VFPCompareAndLoadFlags(const SwVfpRegister src1, @@ -713,6 +723,14 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { // sets the flags and leaves the object type in the type_reg register. void CompareInstanceType(Register map, Register type_reg, InstanceType type); + // Compare instance type ranges for a map (lower_limit and higher_limit + // inclusive). + // + // Always use unsigned comparisons: ls for a positive result. + void CompareInstanceTypeRange(Register map, Register type_reg, + InstanceType lower_limit, + InstanceType higher_limit); + // Compare the object in a register to a value from the root list. // Acquires a scratch register. void CompareRoot(Register obj, RootIndex index); |