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<...
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...