On Fri, 17 Oct 2014, Uros Bizjak wrote:

While looking correct, I am a bit nervous about avx512fintrin.h
changes, mainly because I have not much experience with these
patterns. I have adder Kirill to CC for possible comments.

He asked for this part of the patch, and tested it:
https://gcc.gnu.org/ml/gcc-patches/2014-07/msg01954.html

I don't have many comments on simple arithmetic, and changes look
"trivial". I'd say that simple arithmetic part is OK for branch.

Thanks. I am testing the updated patch tonight and I'll commit. I am planning on making a branch: ^/branches/x86-intrinsics-ext if noone complains about the name.

One last note: scalar builtins preserve highpart of target register.
IIRC, I have tried to convert _mm_frcz_s{s,d} to use scalars, but
resulted in a horrible code. Current approach uses
__builtin_ia32_movs{s,d} to generate optimal code, but I didn't test
if current gcc improved in this part.

Operations that act on only part of a vector do tend to go badly indeed. I remember working on something related at some point (the goal was to handle v[0]+=2):

https://gcc.gnu.org/ml/gcc-patches/2012-12/msg00824.html

I don't remember exactly why I gave up on this. It may be a different issue from yours with frcz, but I kept the impression from then that builtins were still the way to go for anything non-trivial.

--
Marc Glisse

Reply via email to