[LLVMdev] Adding NonTemporal
Sandeep Patel
deeppatel1987 at gmail.com
Fri Feb 12 13:55:34 PST 2010
On Fri, Feb 12, 2010 at 9:43 PM, David Greene <dag at cray.com> wrote:
> 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.
We had a similar problem in the ARM backend. You get correct code, but
suboptimal scheduling.
deep
More information about the llvm-dev
mailing list