[llvm] [NVPTX] Lower -1/x to neg.f64(recp.rn.f64) instead of fdiv (PR #98343)
Rajat Bajpai via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 12 00:05:01 PDT 2024
================
@@ -1225,6 +1235,10 @@ def FDIV64ri :
"div.rn.f64 \t$dst, $a, $b;",
[(set Float64Regs:$dst, (fdiv Float64Regs:$a, fpimm:$b))]>;
+// fdiv -1.0, X => fneg (rcp.rn X)
+def : Pat<(fdiv DoubleConstNeg1:$a, Float64Regs:$b),
+ (FNEGf64 (FDIV641r (NegDoubleConst node:$a), Float64Regs:$b))>;
----------------
rajatbajpai wrote:
You mean `f64 1.0`, right? No, we can't. It is giving a build error.
```
Included from /media/nvidia-llvm-project/llvm/lib/Target/NVPTX/NVPTX.td:18:
/media/nvidia-llvm-project/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td:1240:37: error: expected field identifier after '.'
(FNEGf64 (FDIV641r (f64 1.0), Float64Regs:$b))>;
^
[2/84] Building NVPTXGenDAGISel.inc...
FAILED: lib/Target/NVPTX/NVPTXGenDAGISel.inc /media/nvidia-llvm-project/build/lib/Target/NVPTX/NVPTXGenDAGISel.inc
```
https://github.com/llvm/llvm-project/pull/98343
More information about the llvm-commits
mailing list