On September 30, 2019 3:52:52 PM GMT+02:00, Szabolcs Nagy <szabolcs.n...@arm.com> wrote: >On 27/09/2019 20:23, GT wrote: >> I am attempting to create a vector version of sincos for PPC64. >> The relevant discussion thread is on the GLIBC libc-alpha mailing >list. >> Navigate it beginning at >https://sourceware.org/ml/libc-alpha/2019-09/msg00334.html >> >> The intention is to reuse as much as possible from the existing GCC >implementation of other libmvec functions. >> My questions are: Which function(s) in GCC; >> >> 1. Gather scalar function input arguments, from multiple loop >iterations, into a single vector input argument for the vector function >version? >> 2. Distribute scalar function outputs, to appropriate loop iteration >result, from the single vector function output result? >> >> I am referring especially to vectorization of sin and cos. > >i wonder if gcc can auto-vectorize scalar sincos >calls, the vectorizer seems to want the calls to >have no side-effect, but attribute pure or const >is not appropriate for sincos (which has no return >value but takes writable pointer args)
We have __builtin_cexpi for that but not sure if any of the mechanisms can provide a mapping to a vectorized variant. >"#pragma omp simd" on a loop seems to work but i >could not get unannotated sincos loops to vectorize. > >it seems it would be nice if we could add pure/const >somehow (maybe to the simd variant only? afaik openmp >requires no sideeffects for simd variants, but that's >probably only for explicitly marked loops?)