Displaying 4 results from an estimated 4 matches for "storedvalu".
Did you mean:
storedval
2016 May 27
2
Handling post-inc users in LSR
...abel %for.end
for.body.preheader: ; preds = %entry
%n_sext = sext i32 %n to i64
br label %for.body
for.body:
%K.in = phi i64 [ %n_sext, %for.body.preheader ], [ %K, %for.body ]
%K = add i64 %K.in, 1
%StoredAddr = getelementptr i32, i32* %P, i64 %K
%StoredValue = trunc i64 %K to i32
store volatile i32 %StoredValue, i32* %StoredAddr
%cmp = icmp sgt i64 %K, 1
br i1 %cmp, label %for.body, label %for.end
for.end:
ret void
}
# Output in AArch64 where you can see redundant add instructions for
stored value, store address, and in cmp :
foo:
.c...
2016 May 27
0
Handling post-inc users in LSR
...: ; preds = %entry
> %n_sext = sext i32 %n to i64
> br label %for.body
>
> for.body:
> %K.in = phi i64 [ %n_sext, %for.body.preheader ], [ %K, %for.body ]
> %K = add i64 %K.in, 1
>
> %StoredAddr = getelementptr i32, i32* %P, i64 %K
> %StoredValue = trunc i64 %K to i32
> store volatile i32 %StoredValue, i32* %StoredAddr
> %cmp = icmp sgt i64 %K, 1
> br i1 %cmp, label %for.body, label %for.end
>
> for.end:
> ret void
> }
>
>
> # Output in AArch64 where you can see redundant add instructions for stored val...
2014 May 15
4
[LLVMdev] SROA is slow when compiling a large basic block
...y for cross-block values, we need to
determine
// the order of these instructions in the block. If the first use in
the
// block is a load, then it uses the live in value. The last store
defines
// the live out value. We handle this by doing a linear scan of the
block.
Value *StoredValue = nullptr;
for (BasicBlock::iterator II = BB->begin(), E = BB->end(); II != E;
++II) {
If I understand this code correctly. LoadAndStorePromoter::run is called
once per every promotable alloca and iterates over the whole list to
determine the order of loads and stores in the basic blo...
2014 May 15
2
[LLVMdev] SROA is slow when compiling a large basic block
...> // the order of these instructions in the block. If the first use in
> the
>
> // block is a load, then it uses the live in value. The last store
> defines
>
> // the live out value. We handle this by doing a linear scan of the
> block.
>
> Value *StoredValue = nullptr;
>
> for (BasicBlock::iterator II = BB->begin(), E = BB->end(); II != E;
> ++II) {
>
>
> If I understand this code correctly. LoadAndStorePromoter::run is called
> once per every promotable alloca and iterates over the whole list to
> determine the orde...