I was re-reading the specification for extractelement and friends, and I notice that the index is restricted to i32. Since vectors might clearly have a larger number of elements on 64-bit platforms, I wonder if I am misunderstanding the intended use of these instructions. Is this indeed intended for vector and structure access in general, or is intended to support (only) more specialized SIMD usage? My real reason for asking is that we would like to remove the "Word" type (basically: uintptr_t) from the BitC language core, but we currently specify arrays and vectors as indexed by Word. If we can get away with specifying the same core type for indices (probably int64) on all targets without a bad efficiency compromise, I would like to do that, so I'm trying to understand how LLVM handles this issue. Thanks shap
On Sep 21, 2008, at 11:45 AM, Jonathan S. Shapiro wrote:> I was re-reading the specification for extractelement and friends, > and I > notice that the index is restricted to i32. Since vectors might > clearly > have a larger number of elements on 64-bit platforms, I wonder if I am > misunderstanding the intended use of these instructions. > > Is this indeed intended for vector and structure access in general, or > is intended to support (only) more specialized SIMD usage?They are intended for SIMD usage. You will get very poor performance if you try to use extremely large vectors with LLVM. Use arrays instead. -Chris
On Sunday 21 September 2008 20:45:37 Jonathan S. Shapiro wrote:> I was re-reading the specification for extractelement and friends, and I > notice that the index is restricted to i32. Since vectors might clearly > have a larger number of elements on 64-bit platforms, I wonder if I am > misunderstanding the intended use of these instructions.The code generator cannot handle vectors with more than 16383 (?) elements. Even so, I'm not sure it makes much sense to use vectors with more than a handful of elements. Ciao, Duncan.
On Mon, 2008-09-22 at 09:42 +0200, Duncan Sands wrote:> On Sunday 21 September 2008 20:45:37 Jonathan S. Shapiro wrote: > > I was re-reading the specification for extractelement and friends, and I > > notice that the index is restricted to i32. Since vectors might clearly > > have a larger number of elements on 64-bit platforms, I wonder if I am > > misunderstanding the intended use of these instructions. > > The code generator cannot handle vectors with more than 16383 (?) > elements. Even so, I'm not sure it makes much sense to use vectors > with more than a handful of elements.I understood Chris to say that these instructions were for SIMD machines, and if the limit you mention applies to SIMD I'm not worried. Does that limit also apply to arrays? shap