<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I second Eric's comments. Please use early exits.<div><br></div><div>Thanks,</div><div><br></div><div>Evan</div><div><br><div><div>On Nov 30, 2012, at 2:14 PM, Eric Christopher <<a href="mailto:echristo@gmail.com">echristo@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+static void detectLog2OfHalf(Value *&Op, Value *&Y, IntrinsicInst *&Log2) {<br>
+   if (Op->hasOneUse()) {<br>
+    if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Op)) {<br>
+      if (II->getIntrinsicID() == Intrinsic::log2 &&<br>
+          II->hasUnsafeAlgebra()) {<br>
+        Log2 = II;<br>
+        Value *OpLog2Of = II->getArgOperand(0);<br>
+        if (OpLog2Of->hasOneUse()) {<br>
+          if (Instruction *I = dyn_cast<Instruction>(OpLog2Of)) {<br>
+            if (I->getOpcode() == Instruction::FMul &&<br>
+                I->hasUnsafeAlgebra()) {<br>
+              ConstantFP *CFP = dyn_cast<ConstantFP>(I->getOperand(0));<br>
+              if (CFP && CFP->isExactlyValue(0.5)) {<br>
+                Y = I->getOperand(1);<br>
+              } else {<br>
+                CFP = dyn_cast<ConstantFP>(I->getOperand(1));<br>
+                if (CFP && CFP->isExactlyValue(0.5)) {<br>
+                  Y = I->getOperand(0);<br>
+                }<br>
+              }<br>
+            }<br>
+          }<br>
+        }<br>
+      }<br>
+    }<br>
+  }<br>
+}<br>
+<br></blockquote><div><br></div><div>Trivially fwiw,</div><div><br></div><div>if (!Op->hasOneUse()) return false;</div><div>if (!isa<IntrinsicInst>(Op)) return false;</div><div><br></div><div>and just change it to return true/false if you've managed to do something or not.</div>
<div><br></div><div>-eric </div></div></div>
_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits<br></blockquote></div><br></div></body></html>