‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Wednesday, November 27, 2019 3:19 AM, Richard Biener <richard.guent...@gmail.com> wrote:
... > > Questions: > > > > 1. Should we aim to provide a vectorized version of __builtin_cexpi? If > > so, it would have > > to be a PPC64-only vector __builtin-cexpi, right? > > > > 2. Or should we require that vectorized sincos be available only when > > -fno-builtin-sincos flag > > is used in compilation? > > > > > > I don't think we need to fix both types of vectorization failures in order > > to obtain sincos > > vectorization. > > I think we should have a vectorized cexpi since that's having a sane > ABI. The complex > return type of cexpi makes it a little awkward for the vectorizer but > handling this should > be manageable. It's a bit difficult to expose complex types to the > vectorizer since > most cases are lowered early. > I'm trying to identify the source code which needs modification but I need help proceeding. I am comparing two compilations: The first is a simple file with a call to sin in a loop. Vectorization succeeds. The second is an almost identical file but with a call to sincos in the loop. Vectorization fails. In gdb, the earliest code location where the two compilations differ is in function number_of_iterations_exit_assumptions in file tree-ssa-loop-niter.c. Line op0 = gimple_cond_lhs (stmt); returns a tree which when analyzed in function instantiate_scev_r (in file tree-scalar-evolution.c) results in the first branch of the switch being taken for sincos. For sin, the 2nd branch of the switch is taken. How can I correlate stmt in the source line above to the relevant line in any dump among those created using debugging dump option -fdump-tree-all? Thanks. Bert.