Skip to content

Commit e4b773c

Browse files
authored
Merge pull request #81 from awxkee/f16
Better complex multiplication
2 parents 330453b + 5c8abf9 commit e4b773c

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

‎src/filter2d/neon/mul_spectrum_fcma.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ unsafe fn mul_spectrum_in_place_f32_impl(
5757

5858
for (dst, kernel) in value1.chunks_exact_mut(8).zip(other.chunks_exact(8)) {
5959
let vd0 = vld1q_f32(dst.as_ptr().cast());
60-
let vd1 = vld1q_f32(dst.as_ptr().add(2).cast());
61-
let vd2 = vld1q_f32(dst.as_ptr().add(4).cast());
62-
let vd3 = vld1q_f32(dst.as_ptr().add(6).cast());
60+
let vd1 = vld1q_f32(dst.get_unchecked(2..).as_ptr().cast());
61+
let vd2 = vld1q_f32(dst.get_unchecked(4..).as_ptr().cast());
62+
let vd3 = vld1q_f32(dst.get_unchecked(6..).as_ptr().cast());
6363

6464
let vk0 = vld1q_f32(kernel.as_ptr().cast());
65-
let vk1 = vld1q_f32(kernel.as_ptr().add(2).cast());
66-
let vk2 = vld1q_f32(kernel.as_ptr().add(4).cast());
67-
let vk3 = vld1q_f32(kernel.as_ptr().add(6).cast());
65+
let vk1 = vld1q_f32(kernel.get_unchecked(2..).as_ptr().cast());
66+
let vk2 = vld1q_f32(kernel.get_unchecked(4..).as_ptr().cast());
67+
let vk3 = vld1q_f32(kernel.get_unchecked(6..).as_ptr().cast());
6868

6969
let p0 = vmulq_f32(
7070
vcmlaq_rot90_f32(vcmlaq_f32(zero, vd0, vk0), vd0, vk0),

‎src/filter2d/neon/mul_spectrum_neon.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ pub(crate) fn neon_mul_spectrum_in_place_f32(
4444

4545
for (dst, kernel) in value1.chunks_exact_mut(8).zip(other.chunks_exact(8)) {
4646
let vd0 = vld1q_f32(dst.as_ptr().cast());
47-
let vd1 = vld1q_f32(dst.as_ptr().add(2).cast());
48-
let vd2 = vld1q_f32(dst.as_ptr().add(4).cast());
49-
let vd3 = vld1q_f32(dst.as_ptr().add(6).cast());
47+
let vd1 = vld1q_f32(dst.get_unchecked(2..).as_ptr().cast());
48+
let vd2 = vld1q_f32(dst.get_unchecked(4..).as_ptr().cast());
49+
let vd3 = vld1q_f32(dst.get_unchecked(6..).as_ptr().cast());
5050

5151
let vk0 = vld1q_f32(kernel.as_ptr().cast());
52-
let vk1 = vld1q_f32(kernel.as_ptr().add(2).cast());
53-
let vk2 = vld1q_f32(kernel.as_ptr().add(4).cast());
54-
let vk3 = vld1q_f32(kernel.as_ptr().add(6).cast());
52+
let vk1 = vld1q_f32(kernel.get_unchecked(2..).as_ptr().cast());
53+
let vk2 = vld1q_f32(kernel.get_unchecked(4..).as_ptr().cast());
54+
let vk3 = vld1q_f32(kernel.get_unchecked(6..).as_ptr().cast());
5555

5656
let p0 = vmulq_f32(mul_complex_f32(vd0, vk0), v_norm_factor);
5757
let p1 = vmulq_f32(mul_complex_f32(vd1, vk1), v_norm_factor);

0 commit comments

Comments
 (0)