[llvm] [RISCV] Fix lowering of negative zero with Zdinx 32-bit (PR #71869)
    Craig Topper via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Nov  9 13:55:38 PST 2023
    
    
  
================
@@ -937,9 +938,14 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) {
       Res = CurDAG->getMachineNode(Opc, DL, VT, Imm);
 
     // For f64 -0.0, we need to insert a fneg.d idiom.
-    if (NegZeroF64)
-      Res = CurDAG->getMachineNode(RISCV::FSGNJN_D, DL, VT, SDValue(Res, 0),
+    if (NegZeroF64) {
+      if (Is64Bit)
----------------
topperc wrote:
Maybe flip Is64Bit and HasZdinx to remove the duplicate case for !Zdinx.
```
if (HasZdinx)
  Opc = Is64Bit ? RISCV::FSGNJN_D_INX : RISCV::FSGNJN_D_IN32X;
else
  Opc = RISCV::FSGNJN_D
```
or 
```
Opc = RISCV::FSGNJN_D;
if (HasZdinx)
  Opc = Is64Bit ? RISCV::FSGNJN_D_INX : RISCV::FSGNJN_D_IN32X;
```
https://github.com/llvm/llvm-project/pull/71869
    
    
More information about the llvm-commits
mailing list