Lines Matching refs:LiftoffAssembler
41 constexpr auto kRegister = LiftoffAssembler::VarState::kRegister;
42 constexpr auto kIntConst = LiftoffAssembler::VarState::kIntConst;
43 constexpr auto kStack = LiftoffAssembler::VarState::kStack;
91 constexpr ValueKind kPointerKind = LiftoffAssembler::kPointerKind;
92 constexpr ValueKind kSmiKind = LiftoffAssembler::kSmiKind;
93 constexpr ValueKind kTaggedKind = LiftoffAssembler::kTaggedKind;
347 LiftoffAssembler::CacheState state;
352 LiftoffAssembler::CacheState catch_state;
360 LiftoffAssembler::CacheState label_state;
374 using ValueKindSig = LiftoffAssembler::ValueKindSig;
706 ? LiftoffAssembler::CacheState::SpillLocation::kStackSlots
707 : LiftoffAssembler::CacheState::SpillLocation::kTopOfStack);
754 LiftoffAssembler::CacheState::SpillLocation::kTopOfStack);
818 // LiftoffAssembler methods.
1198 LiftoffRegister GetExceptionProperty(LiftoffAssembler::VarState& exception,
1211 LiftoffAssembler::VarState tag_symbol(kPointerKind, tag_symbol_reg, 0);
1212 LiftoffAssembler::VarState context(kPointerKind, context_reg, 0);
1275 const LiftoffAssembler::VarState& exception) {
1301 LiftoffAssembler::kForwardJump);
1350 LiftoffAssembler::VarState rhs_slot = __ cache_state()->stack_state.back();
1361 LiftoffAssembler::VarState lhs_slot = __ cache_state()->stack_state.back();
1403 LiftoffAssembler::kForwardJump);
1460 LiftoffAssembler::kForwardJump);
1579 bool (LiftoffAssembler::*emit_fn)(DoubleRegister, DoubleRegister),
1629 return EmitUnOp<kI32, kI32>(&LiftoffAssembler::emit_##fn);
1632 return EmitUnOp<kI64, kI64>(&LiftoffAssembler::emit_##fn);
1635 return EmitUnOp<k##kind, k##kind>(&LiftoffAssembler::emit_##fn);
1638 return EmitFloatUnOpWithCFallback<k##kind>(&LiftoffAssembler::emit_##fn, \
1726 return EmitUnOp<kI32, kI32>(&LiftoffAssembler::emit_i32_eqz);
1728 return EmitUnOp<kI64, kI32>(&LiftoffAssembler::emit_i64_eqz);
1782 LiftoffAssembler::VarState rhs_slot = __ cache_state()->stack_state.back();
1862 return EmitBinOp<kI32, kI32>(BindFirst(&LiftoffAssembler::emit_i32_set_cond,
1876 &LiftoffAssembler::emit_##fn##i);
1891 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_add,
1892 &LiftoffAssembler::emit_i32_addi);
1894 return EmitBinOp<kI32, kI32>(&LiftoffAssembler::emit_i32_sub);
1896 return EmitBinOp<kI32, kI32>(&LiftoffAssembler::emit_i32_mul);
1898 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_and,
1899 &LiftoffAssembler::emit_i32_andi);
1901 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_or,
1902 &LiftoffAssembler::emit_i32_ori);
1904 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_xor,
1905 &LiftoffAssembler::emit_i32_xori);
1927 return EmitBinOpImm<kI64, kI64>(&LiftoffAssembler::emit_i64_add,
1928 &LiftoffAssembler::emit_i64_addi);
1930 return EmitBinOp<kI64, kI64>(&LiftoffAssembler::emit_i64_sub);
1932 return EmitBinOp<kI64, kI64>(&LiftoffAssembler::emit_i64_mul);
1934 return EmitBinOpImm<kI64, kI64>(&LiftoffAssembler::emit_i64_and,
1935 &LiftoffAssembler::emit_i64_andi);
1937 return EmitBinOpImm<kI64, kI64>(&LiftoffAssembler::emit_i64_or,
1938 &LiftoffAssembler::emit_i64_ori);
1940 return EmitBinOpImm<kI64, kI64>(&LiftoffAssembler::emit_i64_xor,
1941 &LiftoffAssembler::emit_i64_xori);
1944 BindFirst(&LiftoffAssembler::emit_i64_set_cond, kEqual));
1947 BindFirst(&LiftoffAssembler::emit_i64_set_cond, kUnequal));
1950 BindFirst(&LiftoffAssembler::emit_i64_set_cond, kSignedLessThan));
1953 BindFirst(&LiftoffAssembler::emit_i64_set_cond, kUnsignedLessThan));
1956 &LiftoffAssembler::emit_i64_set_cond, kSignedGreaterThan));
1959 &LiftoffAssembler::emit_i64_set_cond, kUnsignedGreaterThan));
1962 BindFirst(&LiftoffAssembler::emit_i64_set_cond, kSignedLessEqual));
1965 &LiftoffAssembler::emit_i64_set_cond, kUnsignedLessEqual));
1968 &LiftoffAssembler::emit_i64_set_cond, kSignedGreaterEqual));
1971 &LiftoffAssembler::emit_i64_set_cond, kUnsignedGreaterEqual));
1974 BindFirst(&LiftoffAssembler::emit_f32_set_cond, kEqual));
1977 BindFirst(&LiftoffAssembler::emit_f32_set_cond, kUnequal));
1980 BindFirst(&LiftoffAssembler::emit_f32_set_cond, kUnsignedLessThan));
1983 &LiftoffAssembler::emit_f32_set_cond, kUnsignedGreaterThan));
1986 &LiftoffAssembler::emit_f32_set_cond, kUnsignedLessEqual));
1989 &LiftoffAssembler::emit_f32_set_cond, kUnsignedGreaterEqual));
1992 BindFirst(&LiftoffAssembler::emit_f64_set_cond, kEqual));
1995 BindFirst(&LiftoffAssembler::emit_f64_set_cond, kUnequal));
1998 BindFirst(&LiftoffAssembler::emit_f64_set_cond, kUnsignedLessThan));
2001 &LiftoffAssembler::emit_f64_set_cond, kUnsignedGreaterThan));
2004 &LiftoffAssembler::emit_f64_set_cond, kUnsignedLessEqual));
2007 &LiftoffAssembler::emit_f64_set_cond, kUnsignedGreaterEqual));
2009 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_shl,
2010 &LiftoffAssembler::emit_i32_shli);
2012 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_sar,
2013 &LiftoffAssembler::emit_i32_sari);
2015 return EmitBinOpImm<kI32, kI32>(&LiftoffAssembler::emit_i32_shr,
2016 &LiftoffAssembler::emit_i32_shri);
2025 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_add);
2027 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_sub);
2029 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_mul);
2031 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_div);
2033 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_min);
2035 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_max);
2037 return EmitBinOp<kF32, kF32>(&LiftoffAssembler::emit_f32_copysign);
2039 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_add);
2041 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_sub);
2043 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_mul);
2045 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_div);
2047 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_min);
2049 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_max);
2051 return EmitBinOp<kF64, kF64>(&LiftoffAssembler::emit_f64_copysign);
2141 BindFirst(&LiftoffAssembler::emit_ptrsize_set_cond, kEqual));
2191 LiftoffAssembler::VarState func_index_var(kI32, func_index_reg, 0);
2292 void LocalSetFromStackSlot(LiftoffAssembler::VarState* dst_slot,
2310 *dst_slot = LiftoffAssembler::VarState(kind, dst_reg, dst_slot->offset());
2492 LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
2494 LiftoffAssembler::VarState index = __ cache_state()->stack_state.back();
2516 LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
2518 LiftoffAssembler::VarState value = __ cache_state()->stack_state.end()[-1];
2519 LiftoffAssembler::VarState index = __ cache_state()->stack_state.end()[-2];
2617 target->is_loop() ? LiftoffAssembler::kBackwardJump
2618 : LiftoffAssembler::kForwardJump);
2656 LiftoffAssembler::CacheState old_cache_state;
2782 LiftoffAssembler::CacheState::SpillLocation::kStackSlots);
2963 bool IndexStaticallyInBounds(const LiftoffAssembler::VarState& index_slot,
3472 LiftoffAssembler::VarState rhs_slot = __ cache_state()->stack_state.back();
3495 bool (LiftoffAssembler::*emit_fn)(LiftoffRegister, LiftoffRegister),
3519 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_swizzle);
3521 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_popcnt);
3523 return EmitUnOp<kI32, kS128>(&LiftoffAssembler::emit_i8x16_splat);
3525 return EmitUnOp<kI32, kS128>(&LiftoffAssembler::emit_i16x8_splat);
3527 return EmitUnOp<kI32, kS128>(&LiftoffAssembler::emit_i32x4_splat);
3529 return EmitUnOp<kI64, kS128>(&LiftoffAssembler::emit_i64x2_splat);
3531 return EmitUnOp<kF32, kS128, kF32>(&LiftoffAssembler::emit_f32x4_splat);
3533 return EmitUnOp<kF64, kS128, kF64>(&LiftoffAssembler::emit_f64x2_splat);
3535 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_eq);
3537 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_ne);
3540 &LiftoffAssembler::emit_i8x16_gt_s);
3543 &LiftoffAssembler::emit_i8x16_gt_u);
3545 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_gt_s);
3547 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_gt_u);
3550 &LiftoffAssembler::emit_i8x16_ge_s);
3553 &LiftoffAssembler::emit_i8x16_ge_u);
3555 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_ge_s);
3557 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_ge_u);
3559 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_eq);
3561 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_ne);
3564 &LiftoffAssembler::emit_i16x8_gt_s);
3567 &LiftoffAssembler::emit_i16x8_gt_u);
3569 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_gt_s);
3571 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_gt_u);
3574 &LiftoffAssembler::emit_i16x8_ge_s);
3577 &LiftoffAssembler::emit_i16x8_ge_u);
3579 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_ge_s);
3581 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_ge_u);
3583 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_eq);
3585 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_ne);
3588 &LiftoffAssembler::emit_i32x4_gt_s);
3591 &LiftoffAssembler::emit_i32x4_gt_u);
3593 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_gt_s);
3595 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_gt_u);
3598 &LiftoffAssembler::emit_i32x4_ge_s);
3601 &LiftoffAssembler::emit_i32x4_ge_u);
3603 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_ge_s);
3605 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_ge_u);
3607 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_eq);
3609 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_ne);
3612 &LiftoffAssembler::emit_i64x2_gt_s);
3614 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_gt_s);
3617 &LiftoffAssembler::emit_i64x2_ge_s);
3619 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_ge_s);
3621 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f32x4_eq);
3623 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f32x4_ne);
3625 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f32x4_lt);
3627 return EmitBinOp<kS128, kS128, true>(&LiftoffAssembler::emit_f32x4_lt);
3629 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f32x4_le);
3631 return EmitBinOp<kS128, kS128, true>(&LiftoffAssembler::emit_f32x4_le);
3633 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f64x2_eq);
3635 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f64x2_ne);
3637 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f64x2_lt);
3639 return EmitBinOp<kS128, kS128, true>(&LiftoffAssembler::emit_f64x2_lt);
3641 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_f64x2_le);
3643 return EmitBinOp<kS128, kS128, true>(&LiftoffAssembler::emit_f64x2_le);
3645 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_s128_not);
3647 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_s128_and);
3649 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_s128_or);
3651 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_s128_xor);
3653 return EmitTerOp<kS128, kS128>(&LiftoffAssembler::emit_s128_select);
3655 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_neg);
3657 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_v128_anytrue);
3659 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i8x16_alltrue);
3661 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i8x16_bitmask);
3663 return EmitSimdShiftOp(&LiftoffAssembler::emit_i8x16_shl,
3664 &LiftoffAssembler::emit_i8x16_shli);
3666 return EmitSimdShiftOp(&LiftoffAssembler::emit_i8x16_shr_s,
3667 &LiftoffAssembler::emit_i8x16_shri_s);
3669 return EmitSimdShiftOp(&LiftoffAssembler::emit_i8x16_shr_u,
3670 &LiftoffAssembler::emit_i8x16_shri_u);
3672 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_add);
3674 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_add_sat_s);
3676 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_add_sat_u);
3678 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_sub);
3680 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_sub_sat_s);
3682 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_sub_sat_u);
3684 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_min_s);
3686 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_min_u);
3688 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_max_s);
3690 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_max_u);
3692 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_neg);
3694 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i16x8_alltrue);
3696 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i16x8_bitmask);
3698 return EmitSimdShiftOp(&LiftoffAssembler::emit_i16x8_shl,
3699 &LiftoffAssembler::emit_i16x8_shli);
3701 return EmitSimdShiftOp(&LiftoffAssembler::emit_i16x8_shr_s,
3702 &LiftoffAssembler::emit_i16x8_shri_s);
3704 return EmitSimdShiftOp(&LiftoffAssembler::emit_i16x8_shr_u,
3705 &LiftoffAssembler::emit_i16x8_shri_u);
3707 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_add);
3709 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_add_sat_s);
3711 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_add_sat_u);
3713 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_sub);
3715 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_sub_sat_s);
3717 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_sub_sat_u);
3719 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_mul);
3721 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_min_s);
3723 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_min_u);
3725 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_max_s);
3727 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_max_u);
3730 &LiftoffAssembler::emit_i16x8_extadd_pairwise_i8x16_s);
3733 &LiftoffAssembler::emit_i16x8_extadd_pairwise_i8x16_u);
3736 &LiftoffAssembler::emit_i16x8_extmul_low_i8x16_s);
3739 &LiftoffAssembler::emit_i16x8_extmul_low_i8x16_u);
3742 &LiftoffAssembler::emit_i16x8_extmul_high_i8x16_s);
3745 &LiftoffAssembler::emit_i16x8_extmul_high_i8x16_u);
3748 &LiftoffAssembler::emit_i16x8_q15mulr_sat_s);
3750 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_neg);
3752 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i32x4_alltrue);
3754 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i32x4_bitmask);
3756 return EmitSimdShiftOp(&LiftoffAssembler::emit_i32x4_shl,
3757 &LiftoffAssembler::emit_i32x4_shli);
3759 return EmitSimdShiftOp(&LiftoffAssembler::emit_i32x4_shr_s,
3760 &LiftoffAssembler::emit_i32x4_shri_s);
3762 return EmitSimdShiftOp(&LiftoffAssembler::emit_i32x4_shr_u,
3763 &LiftoffAssembler::emit_i32x4_shri_u);
3765 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_add);
3767 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_sub);
3769 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_mul);
3771 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_min_s);
3773 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_min_u);
3775 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_max_s);
3777 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_max_u);
3780 &LiftoffAssembler::emit_i32x4_dot_i16x8_s);
3783 &LiftoffAssembler::emit_i32x4_extadd_pairwise_i16x8_s);
3786 &LiftoffAssembler::emit_i32x4_extadd_pairwise_i16x8_u);
3789 &LiftoffAssembler::emit_i32x4_extmul_low_i16x8_s);
3792 &LiftoffAssembler::emit_i32x4_extmul_low_i16x8_u);
3795 &LiftoffAssembler::emit_i32x4_extmul_high_i16x8_s);
3798 &LiftoffAssembler::emit_i32x4_extmul_high_i16x8_u);
3800 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_neg);
3802 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i64x2_alltrue);
3804 return EmitSimdShiftOp(&LiftoffAssembler::emit_i64x2_shl,
3805 &LiftoffAssembler::emit_i64x2_shli);
3807 return EmitSimdShiftOp(&LiftoffAssembler::emit_i64x2_shr_s,
3808 &LiftoffAssembler::emit_i64x2_shri_s);
3810 return EmitSimdShiftOp(&LiftoffAssembler::emit_i64x2_shr_u,
3811 &LiftoffAssembler::emit_i64x2_shri_u);
3813 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_add);
3815 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_sub);
3817 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_mul);
3820 &LiftoffAssembler::emit_i64x2_extmul_low_i32x4_s);
3823 &LiftoffAssembler::emit_i64x2_extmul_low_i32x4_u);
3826 &LiftoffAssembler::emit_i64x2_extmul_high_i32x4_s);
3829 &LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u);
3831 return EmitUnOp<kS128, kI32>(&LiftoffAssembler::emit_i64x2_bitmask);
3834 &LiftoffAssembler::emit_i64x2_sconvert_i32x4_low);
3837 &LiftoffAssembler::emit_i64x2_sconvert_i32x4_high);
3840 &LiftoffAssembler::emit_i64x2_uconvert_i32x4_low);
3843 &LiftoffAssembler::emit_i64x2_uconvert_i32x4_high);
3845 return EmitUnOp<kS128, kS128, kF32>(&LiftoffAssembler::emit_f32x4_abs);
3847 return EmitUnOp<kS128, kS128, kF32>(&LiftoffAssembler::emit_f32x4_neg);
3849 return EmitUnOp<kS128, kS128, kF32>(&LiftoffAssembler::emit_f32x4_sqrt);
3852 &LiftoffAssembler::emit_f32x4_ceil,
3856 &LiftoffAssembler::emit_f32x4_floor,
3860 &LiftoffAssembler::emit_f32x4_trunc,
3864 &LiftoffAssembler::emit_f32x4_nearest_int,
3868 &LiftoffAssembler::emit_f32x4_add);
3871 &LiftoffAssembler::emit_f32x4_sub);
3874 &LiftoffAssembler::emit_f32x4_mul);
3877 &LiftoffAssembler::emit_f32x4_div);
3880 &LiftoffAssembler::emit_f32x4_min);
3883 &LiftoffAssembler::emit_f32x4_max);
3886 &LiftoffAssembler::emit_f32x4_pmin);
3889 &LiftoffAssembler::emit_f32x4_pmax);
3891 return EmitUnOp<kS128, kS128, kF64>(&LiftoffAssembler::emit_f64x2_abs);
3893 return EmitUnOp<kS128, kS128, kF64>(&LiftoffAssembler::emit_f64x2_neg);
3895 return EmitUnOp<kS128, kS128, kF64>(&LiftoffAssembler::emit_f64x2_sqrt);
3898 &LiftoffAssembler::emit_f64x2_ceil,
3902 &LiftoffAssembler::emit_f64x2_floor,
3906 &LiftoffAssembler::emit_f64x2_trunc,
3910 &LiftoffAssembler::emit_f64x2_nearest_int,
3914 &LiftoffAssembler::emit_f64x2_add);
3917 &LiftoffAssembler::emit_f64x2_sub);
3920 &LiftoffAssembler::emit_f64x2_mul);
3923 &LiftoffAssembler::emit_f64x2_div);
3926 &LiftoffAssembler::emit_f64x2_min);
3929 &LiftoffAssembler::emit_f64x2_max);
3932 &LiftoffAssembler::emit_f64x2_pmin);
3935 &LiftoffAssembler::emit_f64x2_pmax);
3938 &LiftoffAssembler::emit_i32x4_sconvert_f32x4);
3941 &LiftoffAssembler::emit_i32x4_uconvert_f32x4);
3944 &LiftoffAssembler::emit_f32x4_sconvert_i32x4);
3947 &LiftoffAssembler::emit_f32x4_uconvert_i32x4);
3950 &LiftoffAssembler::emit_i8x16_sconvert_i16x8);
3953 &LiftoffAssembler::emit_i8x16_uconvert_i16x8);
3956 &LiftoffAssembler::emit_i16x8_sconvert_i32x4);
3959 &LiftoffAssembler::emit_i16x8_uconvert_i32x4);
3962 &LiftoffAssembler::emit_i16x8_sconvert_i8x16_low);
3965 &LiftoffAssembler::emit_i16x8_sconvert_i8x16_high);
3968 &LiftoffAssembler::emit_i16x8_uconvert_i8x16_low);
3971 &LiftoffAssembler::emit_i16x8_uconvert_i8x16_high);
3974 &LiftoffAssembler::emit_i32x4_sconvert_i16x8_low);
3977 &LiftoffAssembler::emit_i32x4_sconvert_i16x8_high);
3980 &LiftoffAssembler::emit_i32x4_uconvert_i16x8_low);
3983 &LiftoffAssembler::emit_i32x4_uconvert_i16x8_high);
3985 return EmitBinOp<kS128, kS128>(&LiftoffAssembler::emit_s128_and_not);
3988 &LiftoffAssembler::emit_i8x16_rounding_average_u);
3991 &LiftoffAssembler::emit_i16x8_rounding_average_u);
3993 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i8x16_abs);
3995 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i16x8_abs);
3997 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i32x4_abs);
3999 return EmitUnOp<kS128, kS128>(&LiftoffAssembler::emit_i64x2_abs);
4002 &LiftoffAssembler::emit_f64x2_convert_low_i32x4_s);
4005 &LiftoffAssembler::emit_f64x2_convert_low_i32x4_u);
4008 &LiftoffAssembler::emit_f64x2_promote_low_f32x4);
4011 &LiftoffAssembler::emit_f32x4_demote_f64x2_zero);
4014 &LiftoffAssembler::emit_i32x4_trunc_sat_f64x2_s_zero);
4017 &LiftoffAssembler::emit_i32x4_trunc_sat_f64x2_u_zero);
4118 __ LiftoffAssembler::emit_s128_xor(dst, dst, dst);
4121 __ LiftoffAssembler::emit_i32x4_eq(dst, dst, dst);
4123 __ LiftoffAssembler::emit_s128_const(dst, imm.value);
4149 __ LiftoffAssembler::emit_i8x16_shuffle(dst, lhs, rhs, shuffle, is_swizzle);
4172 tmp_reg, pinned, LiftoffAssembler::kSkipWriteBarrier);
4181 tmp_reg, pinned, LiftoffAssembler::kSkipWriteBarrier);
4355 LiftoffAssembler::VarState& exception_var,
4394 LiftoffAssembler::kForwardJump);
4415 {LiftoffAssembler::VarState{
4449 {LiftoffAssembler::VarState{kPointerKind, exception_tag, 0},
4450 LiftoffAssembler::VarState{kPointerKind, values_array, 0}},
4507 void (LiftoffAssembler::*emit_fn)(Register, Register,
4608 std::initializer_list<LiftoffAssembler::VarState> params,
4653 LiftoffAssembler::VarState timeout =
4655 LiftoffAssembler::VarState expected_value =
4657 LiftoffAssembler::VarState index = __ cache_state()->stack_state.end()[-3];
4699 LiftoffAssembler::VarState count = __ cache_state()->stack_state.end()[-1];
4700 LiftoffAssembler::VarState index = __ cache_state()->stack_state.end()[-2];
4807 AtomicBinop(decoder, StoreType::type, imm, &LiftoffAssembler::Atomic##op); \
5040 LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
5045 LiftoffAssembler::VarState segment_index(kPointerKind, segment_index_reg,
5048 LiftoffAssembler::VarState size = __ cache_state()->stack_state.end()[-1];
5049 LiftoffAssembler::VarState src = __ cache_state()->stack_state.end()[-2];
5050 LiftoffAssembler::VarState dst = __ cache_state()->stack_state.end()[-3];
5089 LiftoffAssembler::VarState table_dst_index(kPointerKind,
5095 LiftoffAssembler::VarState table_src_index(kPointerKind,
5098 LiftoffAssembler::VarState size = __ cache_state()->stack_state.end()[-1];
5099 LiftoffAssembler::VarState src = __ cache_state()->stack_state.end()[-2];
5100 LiftoffAssembler::VarState dst = __ cache_state()->stack_state.end()[-3];
5120 LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
5122 LiftoffAssembler::VarState delta = __ cache_state()->stack_state.end()[-1];
5123 LiftoffAssembler::VarState value = __ cache_state()->stack_state.end()[-2];
5172 LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
5174 LiftoffAssembler::VarState count = __ cache_state()->stack_state.end()[-1];
5175 LiftoffAssembler::VarState value = __ cache_state()->stack_state.end()[-2];
5176 LiftoffAssembler::VarState start = __ cache_state()->stack_state.end()[-3];
5191 LiftoffAssembler::VarState rtt_value =
5282 LiftoffAssembler::VarState rtt_var =
5284 LiftoffAssembler::VarState length_var =
5287 LiftoffAssembler::VarState elem_size_var(kI32, elem_size_reg, 0);
5433 LiftoffAssembler::VarState elem_size_var(kI32, elem_size_reg, 0);
5439 LiftoffAssembler::VarState length_var(kI32, length_reg, 0);
5441 LiftoffAssembler::VarState rtt_var =
5481 LiftoffAssembler::VarState data_segment_var(kI32, data_segment_reg, 0);
5742 __ emit_smi_check(obj_reg.gp(), no_match, LiftoffAssembler::kJumpOnNotSmi);
6166 LiftoffAssembler::VarState funcref =
6170 LiftoffAssembler::VarState vector_var(kPointerKind, vector, 0);
6181 LiftoffAssembler::VarState index_var(kIntPtrKind, index, 0);
6197 // conditional branch confuses the LiftoffAssembler's register management.
6390 __ emit_smi_check(obj_reg.gp(), no_match, LiftoffAssembler::kJumpOnSmi);
6503 LiftoffAssembler asm_;