mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 18:31:04 +00:00
Add some (disabled code) to print out negative strides.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126102 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
477a98824a
commit
408b534e43
@ -31,6 +31,11 @@
|
||||
// void foo(_Complex float *P)
|
||||
// for (i) { __real__(*P) = 0; __imag__(*P) = 0; }
|
||||
//
|
||||
// We should enhance this to handle negative strides through memory.
|
||||
// Alternatively (and perhaps better) we could rely on an earlier pass to force
|
||||
// forward iteration through memory, which is generally better for cache
|
||||
// behavior. Negative strides *do* happen for memset/memcpy loops.
|
||||
//
|
||||
// This could recognize common matrix multiplies and dot product idioms and
|
||||
// replace them with calls to BLAS (if linked in??).
|
||||
//
|
||||
@ -272,10 +277,17 @@ bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) {
|
||||
unsigned StoreSize = (unsigned)SizeInBits >> 3;
|
||||
const SCEVConstant *Stride = dyn_cast<SCEVConstant>(StoreEv->getOperand(1));
|
||||
|
||||
// TODO: Could also handle negative stride here someday, that will require the
|
||||
// validity check in mayLoopAccessLocation to be updated though.
|
||||
if (Stride == 0 || StoreSize != Stride->getValue()->getValue())
|
||||
if (Stride == 0 || StoreSize != Stride->getValue()->getValue()) {
|
||||
// TODO: Could also handle negative stride here someday, that will require
|
||||
// the validity check in mayLoopAccessLocation to be updated though.
|
||||
// Enable this to print exact negative strides.
|
||||
if (0 && StoreSize == -Stride->getValue()->getValue()) {
|
||||
dbgs() << "NEGATIVE STRIDE: " << *SI << "\n";
|
||||
dbgs() << "BB: " << *SI->getParent();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// See if we can optimize just this store in isolation.
|
||||
if (processLoopStridedStore(StorePtr, StoreSize, SI->getAlignment(),
|
||||
|
Loading…
Reference in New Issue
Block a user