search for: issinglevaluetype

Displaying 15 results from an estimated 15 matches for "issinglevaluetype".

2010 Oct 28
2
[LLVMdev] global optimizer precision
...static memory to stack memory. // // If the global is in different address space, don't bring it to stack. if (!GS.HasMultipleAccessingFunctions && GS.AccessingFunction && !GS.HasNonInstructionUser && GV->getType()->getElementType()->isSingleValueType() && GS.AccessingFunction->getName() == "main" && GS.AccessingFunction->hasExternalLinkage() && GV->getType()->getAddressSpace() == 0) { The comment above the test states the reason for the check for main which is: main is not r...
2013 Jul 08
1
[LLVMdev] Special cased global-to-local-in-main replacement in GlobalOpt
...replacing static memory to stack memory. // // If the global is in different address space, don't bring it to stack. if (!GS.HasMultipleAccessingFunctions && GS.AccessingFunction && !GS.HasNonInstructionUser && GV->getType()->getElementType()->isSingleValueType() && GS.AccessingFunction->getName() == "main" && GS.AccessingFunction->hasExternalLinkage() && GV->getType()->getAddressSpace() == 0) { >From today's discussion on IRC, there appear to be two problems with this approach: 1) T...
2009 Jun 16
3
[LLVMdev] Localizing Globals ?
...n't make sense to promote non single-value types since we // are just replacing static memory to stack memory. if (!GS.HasMultipleAccessingFunctions && GS.AccessingFunction && !GS.HasNonInstructionUser && GV->getType()->getElementType()->isSingleValueType() && GS.AccessingFunction->getName() == "main" && GS.AccessingFunction->hasExternalLinkage()) { DOUT << "LOCALIZING GLOBAL: " << *GV; What if my global variable was into a different address space than stack? How do I deny...
2011 Nov 17
2
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...;StoreInst>(I)) { isLdStr = Store->isSimple(); } > + > + // We can vectorize casts, but not casts of pointer types, etc. > + bool isCast = false; > + if (I->isCast()) { > + isCast = true; > + if (!cast<CastInst>(I)->getSrcTy()->isSingleValueType()) { > + isCast = false; > + } else if (!cast<CastInst>(I)->getDestTy()->isSingleValueType()) { > + isCast = false; > + } else if (cast<CastInst>(I)->getSrcTy()->isPointerTy()) { > + isCast = false; > + } else...
2011 Nov 21
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...>isSimple(); > } > > > + > > + // We can vectorize casts, but not casts of pointer types, etc. > > + bool isCast = false; > > + if (I->isCast()) { > > + isCast = true; > > + if (!cast<CastInst>(I)->getSrcTy()->isSingleValueType()) { > > + isCast = false; > > + } else if (!cast<CastInst>(I)->getDestTy()->isSingleValueType()) { > > + isCast = false; > > + } else if (cast<CastInst>(I)->getSrcTy()->isPointerTy()) { > > + isCast = fa...
2008 Sep 22
0
[LLVMdev] Overzealous PromoteCastOfAllocation
On Sep 13, 2008, at 1:07 PM, Matthijs Kooijman wrote: > Hi Dan, > >> Changing PromoteCastOfAllocation to not replace aggregate allocas >> with >> non-aggregate allocas if they have GEP users sounds reasonable to me. > This sounds reasonable indeed, but still a bit arbitrary. Haven't > figured out > anything better yet, though. > >> Finding the
2011 Nov 16
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
Tobias, et al., Attached is the my autovectorization pass. I've fixed a bug that appears when using -bb-vectorize-aligned-only, fixed some 80-col violations, etc., and at least on x86_64, all test cases pass except for a few; and all of these failures look like instruction-selection bugs. For example: MultiSource/Applications/ClamAV - fails to compile shared_sha256.c with an error: error in
2011 Dec 02
5
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...) || NoMemOps) { IsSimpleLoadStore = false; return false; } } > + // We can vectorize casts, but not casts of pointer types, etc. > + bool IsCast = false; > + if (I->isCast()) { > + IsCast = true; > + if (!cast<CastInst>(I)->getSrcTy()->isSingleValueType()) { > + IsCast = false; > + } else if (!cast<CastInst>(I)->getDestTy()->isSingleValueType()) { > + IsCast = false; > + } else if (cast<CastInst>(I)->getSrcTy()->isPointerTy()) { > + IsCast = false; > + } else if (cast&lt...
2011 Dec 14
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...se; > return false; > } > } > > > + // We can vectorize casts, but not casts of pointer types, etc. > > + bool IsCast = false; > > + if (I->isCast()) { > > + IsCast = true; > > + if (!cast<CastInst>(I)->getSrcTy()->isSingleValueType()) { > > + IsCast = false; > > + } else if (!cast<CastInst>(I)->getDestTy()->isSingleValueType()) { > > + IsCast = false; > > + } else if (cast<CastInst>(I)->getSrcTy()->isPointerTy()) { > > + IsCast = false; >...
2011 Nov 23
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
On Mon, 2011-11-21 at 21:22 -0600, Hal Finkel wrote: > On Mon, 2011-11-21 at 11:55 -0600, Hal Finkel wrote: > > Tobias, > > > > I've attached an updated patch. It contains a few bug fixes and many > > (refactoring and coding-convention) changes inspired by your comments. > > > > I'm currently trying to fix the bug responsible for causing a compile
2008 Sep 13
3
[LLVMdev] Overzealous PromoteCastOfAllocation
Hi Dan, > Changing PromoteCastOfAllocation to not replace aggregate allocas with > non-aggregate allocas if they have GEP users sounds reasonable to me. This sounds reasonable indeed, but still a bit arbitrary. Haven't figured out anything better yet, though. > Finding the maximum alignment is sometimes still useful though, so > it would be nice to update the alignment field of
2011 Nov 15
3
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
Tobias, I've attached the latest version of my autovectorization patch. I was able to add support for using the ScalarEvolution analysis for load/store pairing (thanks for your help!). This led to a modest performance increase and a modest compile-time increase. This version also has a cutoff as you suggested (although the default value is set high (4000 instructions between pairs) because
2011 Dec 02
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...se; > return false; > } > } > > > + // We can vectorize casts, but not casts of pointer types, etc. > > + bool IsCast = false; > > + if (I->isCast()) { > > + IsCast = true; > > + if (!cast<CastInst>(I)->getSrcTy()->isSingleValueType()) { > > + IsCast = false; > > + } else if (!cast<CastInst>(I)->getDestTy()->isSingleValueType()) { > > + IsCast = false; > > + } else if (cast<CastInst>(I)->getSrcTy()->isPointerTy()) { > > + IsCast = false; >...
2011 Nov 22
5
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
On Mon, 2011-11-21 at 11:55 -0600, Hal Finkel wrote: > Tobias, > > I've attached an updated patch. It contains a few bug fixes and many > (refactoring and coding-convention) changes inspired by your comments. > > I'm currently trying to fix the bug responsible for causing a compile > failure when compiling >
2008 Sep 23
3
[LLVMdev] Overzealous PromoteCastOfAllocation
...ctionCombining.cpp =================================================================== --- lib/Transforms/Scalar/InstructionCombining.cpp (revision 56433) +++ lib/Transforms/Scalar/InstructionCombining.cpp (working copy) @@ -8707,7 +8800,7 @@ break; } - if (SrcETy->isSingleValueType()) + if (SrcETy->isFirstClassType()) NewPtrTy = PointerType::getUnqual(SrcETy); } } -------------- next part -------------- Index: test/Transforms/InstCombine/2008-09-22-preserve-struct-alloca.ll =================================================================== --- test/T...