[llvm] [InstCombine] Transform high latency, dependent FSQRT/FDIV into FMUL (PR #87474)
Sushant Gokhale via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 14 02:48:12 PDT 2024
================
@@ -1888,6 +2031,24 @@ Instruction *InstCombinerImpl::visitFDiv(BinaryOperator &I) {
return R;
Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
+
+ // Convert
+ // x = 1.0/sqrt(a)
+ // r1 = x * x;
+ // r2 = a/sqrt(a);
+ //
+ // TO
+ //
+ // r1 = 1/a
+ // r2 = sqrt(a)
+ // x = r1 * r2
+ SmallPtrSet<Instruction *, 2> R1, R2;
----------------
sushgokh wrote:
Had to change from SmallVector to SmallPtrSet since invoking the `users()` API somehow got me duplicate users
https://github.com/llvm/llvm-project/pull/87474
More information about the llvm-commits
mailing list