@@ -2564,7 +2564,13 @@ void LiftoffAssembler::emit_v32x4_anytrue(LiftoffRegister dst,
2564
2564
2565
2565
void LiftoffAssembler::emit_v32x4_alltrue (LiftoffRegister dst,
2566
2566
LiftoffRegister src) {
2567
- bailout (kSimd , " v32x4_alltrue" );
2567
+ UseScratchRegisterScope temps (this );
2568
+ DwVfpRegister scratch = temps.AcquireD ();
2569
+ vpmin (NeonU32, scratch, src.low_fp (), src.high_fp ());
2570
+ vpmin (NeonU32, scratch, scratch, scratch);
2571
+ ExtractLane (dst.gp (), scratch, NeonS32, 0 );
2572
+ cmp (dst.gp (), Operand (0 ));
2573
+ mov (dst.gp (), Operand (1 ), LeaveCC, ne);
2568
2574
}
2569
2575
2570
2576
void LiftoffAssembler::emit_i32x4_shl (LiftoffRegister dst, LiftoffRegister lhs,
@@ -2666,7 +2672,14 @@ void LiftoffAssembler::emit_v16x8_anytrue(LiftoffRegister dst,
2666
2672
2667
2673
void LiftoffAssembler::emit_v16x8_alltrue (LiftoffRegister dst,
2668
2674
LiftoffRegister src) {
2669
- bailout (kSimd , " v16x8_alltrue" );
2675
+ UseScratchRegisterScope temps (this );
2676
+ DwVfpRegister scratch = temps.AcquireD ();
2677
+ vpmin (NeonU16, scratch, src.low_fp (), src.high_fp ());
2678
+ vpmin (NeonU16, scratch, scratch, scratch);
2679
+ vpmin (NeonU16, scratch, scratch, scratch);
2680
+ ExtractLane (dst.gp (), scratch, NeonS16, 0 );
2681
+ cmp (dst.gp (), Operand (0 ));
2682
+ mov (dst.gp (), Operand (1 ), LeaveCC, ne);
2670
2683
}
2671
2684
2672
2685
void LiftoffAssembler::emit_i16x8_shl (LiftoffRegister dst, LiftoffRegister lhs,
@@ -2840,7 +2853,15 @@ void LiftoffAssembler::emit_v8x16_anytrue(LiftoffRegister dst,
2840
2853
2841
2854
void LiftoffAssembler::emit_v8x16_alltrue (LiftoffRegister dst,
2842
2855
LiftoffRegister src) {
2843
- bailout (kSimd , " v8x16_alltrue" );
2856
+ UseScratchRegisterScope temps (this );
2857
+ DwVfpRegister scratch = temps.AcquireD ();
2858
+ vpmin (NeonU8, scratch, src.low_fp (), src.high_fp ());
2859
+ vpmin (NeonU8, scratch, scratch, scratch);
2860
+ vpmin (NeonU8, scratch, scratch, scratch);
2861
+ vpmin (NeonU8, scratch, scratch, scratch);
2862
+ ExtractLane (dst.gp (), scratch, NeonS8, 0 );
2863
+ cmp (dst.gp (), Operand (0 ));
2864
+ mov (dst.gp (), Operand (1 ), LeaveCC, ne);
2844
2865
}
2845
2866
2846
2867
void LiftoffAssembler::emit_i8x16_shl (LiftoffRegister dst, LiftoffRegister lhs,
0 commit comments