On 17 November 2010 13:21, Julian Brown <jul...@codesourcery.com> wrote:
>> > We'd need to figure out what the RTL for such loads/stores should
>> > look like, and whether it can represent alignment constraints, or
>> > strides, or loads/stores of multiple vector registers simulateously.

Alignment info is kept in struct ptr_info_def.
Is it necessary to represent stride?
Multiple loads/stores seem the most complicated part to me. In neon.md
vld is implemented with output_asm_insn. Is it going to change? Does
this assure consecutive (or stride two) registers?

>> > Getting it right might be a bit awkward, especially if we want to
>> > consider a scope wider than just NEON, i.e. other vector
>> > architectures also.
>>
>> I think we need to somehow enhance MEM_REF, or maybe generate a
>> MEM_REF for the first vector and a builtin after it.
>
> Yeah, keeping these things looking like memory references to most of
> the compiler seems like a good plan.

Is it possible to have a list of MEM_REFs and a builtin after them:

v0 = MEM_REF (addr)
v1 = MEM_REF (addr + 8B)
v2 = MEM_REF (addr + 16B)
builtin (v0, v1, v2, stride=3, reg_stride=1,...)

to be expanded into:

<regular RTL mem refs> (addr)
NOTE (...)

and then combined into vld3?

Ira

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to