[LLVMdev] Adding NonTemporal
David Greene
dag at cray.com
Thu Feb 11 15:40:24 PST 2010
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.
-Dave
More information about the llvm-dev
mailing list