This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [middle-end][PATCH] Update alignment_for_piecewise_move
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: "H.J. Lu" <hongjiu dot lu at intel dot com>
- Cc: gcc-patches at gcc dot gnu dot org, "H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Tue, 26 Apr 2016 19:21:50 +0100
- Subject: Re: [middle-end][PATCH] Update alignment_for_piecewise_move
- Authentication-results: sourceware.org; auth=none
- References: <20160426153346 dot GA18201 at intel dot com>
"H.J. Lu" <hongjiu.lu@intel.com> writes:
> I am working a patch to enable SSE, AVX and AVX512 for memcpy/memset
> optimization. x86 backend defines MAX_BITSIZE_MODE_ANY_INT to 128
> to keep the OI and XI modes from confusing the compiler into thinking
> that these modes could actually be used for computation. But the OI
> and XI modes can be used for data movement with vector instructions.
But doesn't this then open the possibility that a memset or memcpy
will be seen as a "normal" integer operation? Routines like
simplify_immed_subreg could in principle create a constant integer
for the stored value, which could then be treated by later passes as
a wide_int, breaking the MAX_BITSIZE_MODE_ANY_INT assumption.
Couldn't we move to allowing vector modes instead? That seems better
than having to pander to the current situation in which every vector
effectively needs an associated integer mode.
Thanks,
Richard