[LLVMdev] Fwd: How to force the creation of arrays with zeroes?

Duncan Sands baldrick at free.fr
Sat Jan 21 09:42:51 PST 2012


Hi Anton, in a solution without CAZ, isNullValue can just return true when it
sees the special "this ConstantArray is all zero" flag.  So all the places that
now look for CAZ can just use isNullValue instead and there need be no
performance loss.  That said, CAZ is more "in your force" so less likely to be
forgotten about.  Another interesting possibility is to handle more than just
all zero values: if a constant array has many repeated elements, maybe the
array could be stored in a compressed form.  An all zeros array would just be a
special case of this.

Ciao, Duncan.

On 21/01/12 18:13, Anton Korobeynikov wrote:
> Sorry, forgot to reply-all
>
> ---------- Forwarded message ----------
> From: Anton Korobeynikov<anton at korobeynikov.info>
> Date: Sat, Jan 21, 2012 at 20:59
> Subject: Re: [LLVMdev] How to force the creation of arrays with zeroes?
> To: Stepan Dyatkovskiy<STPWORLD at narod.ru>
>
>
>> Though, there is also cases when we really need to transform it to 10,000 zeroes (just look at CBackend.cpp, when we print constant arrays, string #1027). There is also cases when we need to get either operand[i] or zero (SCCP.cpp, str #413). Both for CBackend and for SCCP we can reduce code size keeping performance on the same level.
> In these 2 particular cases the changes of the code size can
> definitely be neglected. Even more, in SCCP the use of CAZ is a
> performance win, since we do not have to check at all operands are
> zero, we already (!) know this.
>
> --
> With best regards, Anton Korobeynikov
> Faculty of Mathematics and Mechanics, Saint Petersburg State University
>
>




More information about the llvm-dev mailing list