[LLVMdev] Adding NonTemporal
David Greene
dag at cray.com
Fri Feb 12 13:43:55 PST 2010
On Thursday 11 February 2010 17:40:24 David Greene wrote:
> While hacking around in the SelectionDAG build code, I've made the
> isVolatile, (new) isNonTemporal and Alignment parameters to
> SelectionDAG::getLoad/getStore and friends non-default.
>
> I've already caught one bug in the XCore backend by doing this:
>
> if (Offset % 4 == 0) {
> // We've managed to infer better alignment information than the load
> // already has. Use an aligned load.
> return DAG.getLoad(getPointerTy(), dl, Chain, BasePtr, NULL, 4,
> false, false, 0);
> }
>
> Whoops! There's no alignment info being set here!
>
> Is there any reason to keep these as default arguments? It invites silent
> coding errors. I did this because I have to propagate the non-temporal
> information through various phases of lowering and making these non-default
> helps me catch missing cases.
>
> We've done the same in our local sources and we've never found
> specifying the extra arguments to be burdensome.
I have a patch ready to track nontemporal semantics but I'm waiting for an
opinion on this. I'd really like to get this integrated for 2.7. In my
opinion default arguments are a bad idea in this context. It's very easy
to make coding errors. I found a couple more today.
Thanks.
-Dave
More information about the llvm-dev
mailing list