search for: storedvalue

Displaying 4 results from an estimated 4 matches for "storedvalue".

Did you mean: store_value
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: .cf...
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 valu...
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 bloc...
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 order...