summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen/arm/macro-assembler-arm.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/codegen/arm/macro-assembler-arm.h')
-rw-r--r--deps/v8/src/codegen/arm/macro-assembler-arm.h20
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);