diff options
Diffstat (limited to 'volk/orc')
10 files changed, 69 insertions, 42 deletions
diff --git a/volk/orc/Makefile.am b/volk/orc/Makefile.am index 3f105fd80..797efee18 100644 --- a/volk/orc/Makefile.am +++ b/volk/orc/Makefile.am @@ -35,13 +35,17 @@ volk_32f_subtract_aligned16_orc_impl.orc \ volk_32f_divide_aligned16_orc_impl.orc \ volk_32f_multiply_aligned16_orc_impl.orc \ volk_32f_sqrt_aligned16_orc_impl.orc \ -volk_16sc_magnitude_32f_aligned16_orc_impl.orc \ +volk_32f_max_aligned16_orc_impl.orc \ +volk_32f_min_aligned16_orc_impl.orc \ volk_32fc_magnitude_32f_aligned16_orc_impl.orc \ -volk_32fc_magnitude_16s_aligned16_orc_impl.orc +volk_32fc_magnitude_16s_aligned16_orc_impl.orc \ +volk_16sc_deinterleave_16s_aligned16_orc_impl.orc \ +volk_16sc_deinterleave_32f_aligned16_orc_impl.orc \ +volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc -my_ORCC_FLAGS = --implementation --lazy-init $(ORCC_FLAGS) +my_ORCC_FLAGS = --implementation $(ORCC_FLAGS) .orc.c: $(ORCC) $(my_ORCC_FLAGS) -o $@ $< diff --git a/volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc new file mode 100644 index 000000000..d226064a7 --- /dev/null +++ b/volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc @@ -0,0 +1,5 @@ +.function volk_16sc_deinterleave_16s_aligned16_orc_impl +.dest 2 idst +.dest 2 qdst +.source 4 src +splitlw qdst, idst, src diff --git a/volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc b/volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc new file mode 100644 index 000000000..dddf682ca --- /dev/null +++ b/volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc @@ -0,0 +1,12 @@ +.function volk_16sc_deinterleave_32f_aligned16_orc_impl +.dest 4 idst +.dest 4 qdst +.source 4 src +.floatparam 4 scalar +.temp 8 iql +.temp 8 iqf + +x2 convswl iql, src +x2 convlf iqf, iql +x2 divf iqf, iqf, scalar +splitql qdst, idst, iqf diff --git a/volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc new file mode 100644 index 000000000..609750096 --- /dev/null +++ b/volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc @@ -0,0 +1,6 @@ +.function volk_16sc_deinterleave_real_8s_aligned16_orc_impl +.dest 1 dst +.source 4 src +.temp 2 iw +select0lw iw, src +convhwb dst, iw diff --git a/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc index f6c959c00..83b867dca 100644 --- a/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc +++ b/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc @@ -1,6 +1,7 @@ .function volk_16sc_magnitude_16s_aligned16_orc_impl .source 4 src .dest 2 dst +.floatparam 4 scalar .temp 2 reals .temp 2 imags .temp 4 reall @@ -12,13 +13,16 @@ .temp 4 rootl splitlw reals, imags, src -convwl reall, reals -convwl imagl, imags +convswl reall, reals +convswl imagl, imags convlf realf, reall convlf imagf, imagl -mulf realf, realf, (1.0 / 32768.0) -mulf imagf, imagf, (1.0 / 32768.0) +divf realf, realf, scalar +divf imagf, imagf, scalar +mulf realf, realf, realf +mulf imagf, imagf, imagf addf sumf, realf, imagf sqrtf rootf, sumf +mulf rootf, rootf, scalar convfl rootl, rootf -conflw dst, rootl +convlw dst, rootl diff --git a/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc b/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc index 44654ad8e..6d2ed8197 100644 --- a/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc +++ b/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc @@ -2,7 +2,6 @@ .source 4 src .dest 4 dst .floatparam 4 scalar -.temp 4 invscalar .temp 4 reall .temp 4 imagl .temp 2 reals @@ -11,14 +10,15 @@ .temp 4 imagf .temp 4 sumf -divf invscalar, 1.0, scalar + + splitlw reals, imags, src convswl reall, reals convswl imagl, imags convlf realf, reall convlf imagf, imagl -mulf realf, realf, invscalar -mulf imagf, imagf, invscalar +divf realf, realf, scalar +divf imagf, imagf, scalar mulf realf, realf, realf mulf imagf, imagf, imagf addf sumf, realf, imagf diff --git a/volk/orc/volk_32f_max_aligned16_orc_impl.orc b/volk/orc/volk_32f_max_aligned16_orc_impl.orc new file mode 100644 index 000000000..97f48ba4a --- /dev/null +++ b/volk/orc/volk_32f_max_aligned16_orc_impl.orc @@ -0,0 +1,5 @@ +.function volk_32f_max_aligned16_orc_impl +.dest 4 dst +.source 4 src1 +.source 4 src2 +maxf dst, src1, src2 diff --git a/volk/orc/volk_32f_min_aligned16_orc_impl.orc b/volk/orc/volk_32f_min_aligned16_orc_impl.orc new file mode 100644 index 000000000..a597933de --- /dev/null +++ b/volk/orc/volk_32f_min_aligned16_orc_impl.orc @@ -0,0 +1,5 @@ +.function volk_32f_min_aligned16_orc_impl +.dest 4 dst +.source 4 src1 +.source 4 src2 +minf dst, src1, src2 diff --git a/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc b/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc index db8405e59..f71dd9a37 100644 --- a/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc +++ b/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc @@ -2,24 +2,18 @@ .source 8 src .dest 2 dst .floatparam 4 scalar -.temp 4 invscalar -.temp 4 reall -.temp 4 imagl -.temp 4 realf -.temp 4 imagf +.temp 8 iqf +.temp 8 prodiqf +.temp 4 qf +.temp 4 if .temp 4 sumf .temp 4 rootf .temp 4 rootl -divf invscalar, 1.0, scalar -splitql reall, imagl, src -convlf realf, reall -convlf imagf, imagl -mulf realf, realf, invscalar -mulf imagf, imagf, invscalar -mulf realf, realf, realf -mulf imagf, imagf, imagf -addf sumf, realf, imagf +x2 mulf prodiqf, src, src +splitql qf, if, prodiqf +addf sumf, if, qf sqrtf rootf, sumf +mulf rootf, rootf, scalar convfl rootl, rootf -convlw dst, rootl +convssslw dst, rootl diff --git a/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc b/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc index cc5c85b45..47a10531d 100644 --- a/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc +++ b/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc @@ -1,21 +1,13 @@ .function volk_32fc_magnitude_32f_aligned16_orc_impl .source 8 src .dest 4 dst -.floatparam 4 scalar -.temp 4 invscalar -.temp 4 reall -.temp 4 imagl -.temp 4 realf -.temp 4 imagf +.temp 8 iqf +.temp 8 prodiqf +.temp 4 qf +.temp 4 if .temp 4 sumf -divf invscalar, 1.0, scalar -splitql reall, imagl, src -convlf realf, reall -convlf imagf, imagl -mulf realf, realf, invscalar -mulf imagf, imagf, invscalar -mulf realf, realf, realf -mulf imagf, imagf, imagf -addf sumf, realf, imagf +x2 mulf prodiqf, src, src +splitql qf, if, prodiqf +addf sumf, if, qf sqrtf dst, sumf |