search for: processassumeintrinsic

Displaying 3 results from an estimated 3 matches for "processassumeintrinsic".

2016 Jun 10
2
Early CSE clobbering llvm.assume
...zation. I'm working on a proposal to just fix assume at some point to deal with the former issue. The problem with this testcase is that all the ways assume is propagate expect the variable in the assume to later be used. <This is the main way assume constants are propagated> bool GVN::processAssumeIntrinsic(IntrinsicInst *Inst) { ... // We can replace assume value with true, which covers cases like this: // call void @llvm.assume(i1 %cmp) // br i1 %cmp, label %bb1, label %bb2 ; will change %cmp to true ReplaceWithConstMap[V] = True; ... } ... bool GVN::processBlock(BasicBlock *BB) { ......
2016 Jun 10
3
Early CSE clobbering llvm.assume
...t to deal with >> the former issue. >> >> The problem with this testcase is that all the ways assume is propagate >> expect the variable in the assume to later be used. >> >> >> <This is the main way assume constants are propagated> >> bool GVN::processAssumeIntrinsic(IntrinsicInst *Inst) { >> ... >> >> // We can replace assume value with true, which covers cases like this: >> // call void @llvm.assume(i1 %cmp) >> // br i1 %cmp, label %bb1, label %bb2 ; will change %cmp to true >> ReplaceWithConstMap[V] = True; &gt...
2016 Jun 10
4
Early CSE clobbering llvm.assume
As of llvm 3.8, the early CSE pass seems to remove llvm.assume intrinsics. Is this the expected behavior? I've attached as small-ish example of this happening in my production code. $ opt -early-cse before-early-cse.ll -S > after-early-cse.ll Note the use of the assume intrinsic indicating that the loaded value %channels equals 3. In a later pass I replace the load instruction with