diff options
author | Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com> | 2023-06-30 12:28:45 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2023-06-30 12:28:45 +0100 |
commit | aec90c8bf30cbd66e4febae2c78622dc217f3918 (patch) | |
tree | 41a03f2e35293d6508a0f32a67bb28803615cd84 /gcc/doc | |
parent | 80f312154eb057e66d31c95e77673780fbfcb14d (diff) | |
download | gcc-aec90c8bf30cbd66e4febae2c78622dc217f3918.zip gcc-aec90c8bf30cbd66e4febae2c78622dc217f3918.tar.gz gcc-aec90c8bf30cbd66e4febae2c78622dc217f3918.tar.bz2 |
Mid engine setup [SU]ABDL
This updates vect_recog_abd_pattern to recognize the widening
variant of absolute difference (ABDL, ABDL2).
gcc/ChangeLog:
* internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
* optabs.def (vec_widen_sabd_optab,
vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
vec_widen_uabd_optab,
vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
New optabs.
* doc/md.texi: Document them.
* tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
to build a VEC_WIDEN_ABD call if the input precision is smaller
than the precision of the output.
(vect_recog_widen_abd_pattern): Should an ABD expression be
found preceeding an extension, replace the two with a
VEC_WIDEN_ABD.
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/md.texi | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 9648fdc..cefdee8 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -5871,6 +5871,23 @@ signed/unsigned elements of size S@. Subtract the high/low elements of 2 from 1 and widen the resulting elements. Put the N/2 results of size 2*S in the output vector (operand 0). +@cindex @code{vec_widen_sabd_hi_@var{m}} instruction pattern +@cindex @code{vec_widen_sabd_lo_@var{m}} instruction pattern +@cindex @code{vec_widen_sabd_odd_@var{m}} instruction pattern +@cindex @code{vec_widen_sabd_even_@var{m}} instruction pattern +@cindex @code{vec_widen_uabd_hi_@var{m}} instruction pattern +@cindex @code{vec_widen_uabd_lo_@var{m}} instruction pattern +@cindex @code{vec_widen_uabd_odd_@var{m}} instruction pattern +@cindex @code{vec_widen_uabd_even_@var{m}} instruction pattern +@item @samp{vec_widen_uabd_hi_@var{m}}, @samp{vec_widen_uabd_lo_@var{m}} +@itemx @samp{vec_widen_uabd_odd_@var{m}}, @samp{vec_widen_uabd_even_@var{m}} +@itemx @samp{vec_widen_sabd_hi_@var{m}}, @samp{vec_widen_sabd_lo_@var{m}} +@itemx @samp{vec_widen_sabd_odd_@var{m}}, @samp{vec_widen_sabd_even_@var{m}} +Signed/Unsigned widening absolute difference. Operands 1 and 2 are +vectors with N signed/unsigned elements of size S@. Find the absolute +difference between operands 1 and 2 and widen the resulting elements. +Put the N/2 results of size 2*S in the output vector (operand 0). + @cindex @code{vec_addsub@var{m}3} instruction pattern @item @samp{vec_addsub@var{m}3} Alternating subtract, add with even lanes doing subtract and odd |