diff --git a/crates/edit/src/simd/lines_bwd.rs b/crates/edit/src/simd/lines_bwd.rs index 581e69954b7..37a016906f9 100644 --- a/crates/edit/src/simd/lines_bwd.rs +++ b/crates/edit/src/simd/lines_bwd.rs @@ -206,7 +206,7 @@ unsafe fn lines_bwd_lasx( } } - let lf = lasx_xvrepli_b(b'\n' as i32); + const LF: i32 = b'\n' as i32; let line_stop = line_stop.min(line); let off = end.addr() & 31; if off != 0 && off < end.offset_from_unsigned(beg) { @@ -221,11 +221,10 @@ unsafe fn lines_bwd_lasx( let v3 = lasx_xvld::<64>(chunk_start as *const _); let v4 = lasx_xvld::<96>(chunk_start as *const _); - let mut sum = lasx_xvrepli_b(0); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v1, lf)); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v2, lf)); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v3, lf)); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v4, lf)); + let mut sum = lasx_xvneg_b(lasx_xvseqi_b::(v1)); + sum = lasx_xvsub_b(sum, lasx_xvseqi_b::(v2)); + sum = lasx_xvsub_b(sum, lasx_xvseqi_b::(v3)); + sum = lasx_xvsub_b(sum, lasx_xvseqi_b::(v4)); let sum = horizontal_sum(sum); let line_next = line - sum as CoordType; @@ -240,9 +239,9 @@ unsafe fn lines_bwd_lasx( while end.offset_from_unsigned(beg) >= 32 { let chunk_start = end.sub(32); let v = lasx_xvld::<0>(chunk_start as *const _); - let c = lasx_xvseq_b(v, lf); + let c = lasx_xvseqi_b::(v); - let ones = lasx_xvand_v(c, lasx_xvrepli_b(1)); + let ones = lasx_xvandi_b::<1>(c); let sum = horizontal_sum(ones); let line_next = line - sum as CoordType; @@ -295,8 +294,7 @@ unsafe fn lines_bwd_lsx( let v3 = lsx_vld::<32>(chunk_start as *const _); let v4 = lsx_vld::<48>(chunk_start as *const _); - let mut sum = lsx_vldi::<0>(); - sum = lsx_vsub_b(sum, lsx_vseqi_b::(v1)); + let mut sum = lsx_vneg_b(lsx_vseqi_b::(v1)); sum = lsx_vsub_b(sum, lsx_vseqi_b::(v2)); sum = lsx_vsub_b(sum, lsx_vseqi_b::(v3)); sum = lsx_vsub_b(sum, lsx_vseqi_b::(v4)); diff --git a/crates/edit/src/simd/lines_fwd.rs b/crates/edit/src/simd/lines_fwd.rs index 86f333992a7..c05d827d8d3 100644 --- a/crates/edit/src/simd/lines_fwd.rs +++ b/crates/edit/src/simd/lines_fwd.rs @@ -213,7 +213,7 @@ unsafe fn lines_fwd_lasx( } } - let lf = lasx_xvrepli_b(b'\n' as i32); + const LF: i32 = b'\n' as i32; let off = beg.align_offset(32); if off != 0 && off < end.offset_from_unsigned(beg) { (beg, line) = lines_fwd_fallback(beg, beg.add(off), line, line_stop); @@ -226,11 +226,10 @@ unsafe fn lines_fwd_lasx( let v3 = lasx_xvld::<64>(beg as *const _); let v4 = lasx_xvld::<96>(beg as *const _); - let mut sum = lasx_xvrepli_b(0); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v1, lf)); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v2, lf)); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v3, lf)); - sum = lasx_xvsub_b(sum, lasx_xvseq_b(v4, lf)); + let mut sum = lasx_xvneg_b(lasx_xvseqi_b::(v1)); + sum = lasx_xvsub_b(sum, lasx_xvseqi_b::(v2)); + sum = lasx_xvsub_b(sum, lasx_xvseqi_b::(v3)); + sum = lasx_xvsub_b(sum, lasx_xvseqi_b::(v4)); let sum = horizontal_sum(sum); let line_next = line + sum as CoordType; @@ -244,9 +243,9 @@ unsafe fn lines_fwd_lasx( while end.offset_from_unsigned(beg) >= 32 { let v = lasx_xvld::<0>(beg as *const _); - let c = lasx_xvseq_b(v, lf); + let c = lasx_xvseqi_b::(v); - let ones = lasx_xvand_v(c, lasx_xvrepli_b(1)); + let ones = lasx_xvandi_b::<1>(c); let sum = horizontal_sum(ones); let line_next = line + sum as CoordType; @@ -298,8 +297,7 @@ unsafe fn lines_fwd_lsx( let v3 = lsx_vld::<32>(beg as *const _); let v4 = lsx_vld::<48>(beg as *const _); - let mut sum = lsx_vldi(0); - sum = lsx_vsub_b(sum, lsx_vseqi_b::(v1)); + let mut sum = lsx_vneg_b(lsx_vseqi_b::(v1)); sum = lsx_vsub_b(sum, lsx_vseqi_b::(v2)); sum = lsx_vsub_b(sum, lsx_vseqi_b::(v3)); sum = lsx_vsub_b(sum, lsx_vseqi_b::(v4));