This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][RFC] Make the function vectorizer capable of doing type transformations
- From: Richard Guenther <rguenther at suse dot de>
- To: Dorit Nuzman <DORIT at il dot ibm dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 1 Feb 2007 15:12:55 +0100 (CET)
- Subject: Re: [PATCH][RFC] Make the function vectorizer capable of doing type transformations
- References: <OF47008142.D3DEFD65-ONC2257274.00571FB3-C2257275.000AD5FA@il.ibm.com>
On Thu, 1 Feb 2007, Dorit Nuzman wrote:
> I looked back at my "todo" notes and realized that there were a couple
> additional bits that need fixing in vectorizable_call:
>
> (1) I think we're going to ICE (need to find the testcase) in
> vect_get_vec_def_for_copy, because we are deleting the scalar call stmt
> that we are vectorizing, while we are going to need it, at least when
> ncopies>1, when we look for the vector-defs. I think the only reason we
> haven't bumped into this ICE yet is because the sqrt is currently
> vectorized as a "pattern_stmt" - in which case - we don't visit the scalar
> sqrt to look for the vector def, but rather we visit the original stmt
> (pow) - that is the stmt in the pattern that sqrt had replaced. If sqrt
> was generated not as a result of a pattern-recognition in the vectorizer -
> we probably would have ICEd. (I hope this is making any sense to you?).
> Anyhow - the point is that we should probably be deleting the scalar calls
> after we finished vectorizing all the stmts in the loop (just chain them
> somewhere until then).
It seems to work for me, maybe you can clarify under which circumstances
we still need the stmt after vectorization?
> (2) We should also check that the return value of the function call is not
> used after the loop (not "live") cause we simply don't handle that yet
> (it's not difficult, but we simply don't do it yet). So all vectorizable_*
> functions should check that.
They seem to do:
t.i:11: note: init: stmt relevant? tmp_7 = lrintf (D.1967_6)
t.i:11: note: vec_stmt_relevant_p: used out of loop.
Richard.
--
Richard Guenther <rguenther@suse.de>
Novell / SUSE Labs