A real solution for the first part of PR5445
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Wed, 11 Nov 2009 23:09:33 +0000 (23:09 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Wed, 11 Nov 2009 23:09:33 +0000 (23:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86895 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsInstrFPU.td

index 8fa1c6570981baf9cfafa7092deba18749d90715..b7d02bcb27753b97b98671b5c35e3e12db422568 100644 (file)
@@ -281,10 +281,15 @@ def MOVCCRToCCR : MipsPseudo<(outs CCR:$dst), (ins CCR:$src),
 // Floating Point Patterns
 //===----------------------------------------------------------------------===//
 def fpimm0 : PatLeaf<(fpimm), [{
-  return N->isExactlyValue(+0.0) || N->isExactlyValue(-0.0);
+  return N->isExactlyValue(+0.0);
+}]>;
+
+def fpimm0neg : PatLeaf<(fpimm), [{
+  return N->isExactlyValue(-0.0);
 }]>;
 
 def : Pat<(f32 fpimm0), (MTC1 ZERO)>;
+def : Pat<(f32 fpimm0neg), (FNEG_S32 (MTC1 ZERO))>;
 
 def : Pat<(f32 (sint_to_fp CPURegs:$src)), (CVTS_W32 (MTC1 CPURegs:$src))>;
 def : Pat<(f64 (sint_to_fp CPURegs:$src)), (CVTD_W32 (MTC1 CPURegs:$src))>;