rs6000: Handle unordered for xscmpexp[dq]p without NaNs (PR92449)
authorSegher Boessenkool <segher@kernel.crashing.org>
Tue, 12 Nov 2019 21:02:03 +0000 (22:02 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Tue, 12 Nov 2019 21:02:03 +0000 (22:02 +0100)
* config/rs6000/vsx.md (xscmpexpdp_<code> for CMP_TEST): Handle
UNORDERED if !HONOR_NANS (DFmode).
(xscmpexpqp_<code>_<mode> for CMP_TEST and IEEE128): Handle UNORDERED
if !HONOR_NANS (<MODE>mode).

From-SVN: r278103

gcc/ChangeLog
gcc/config/rs6000/vsx.md

index d283626d06a3f6b9b2463cf293052e4cf6ef40cb..574b59845583c5ee41292dd6032a3d2041dbf6ae 100644 (file)
@@ -1,3 +1,10 @@
+2019-11-12  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/vsx.md (xscmpexpdp_<code> for CMP_TEST): Handle
+       UNORDERED if !HONOR_NANS (DFmode).
+       (xscmpexpqp_<code>_<mode> for CMP_TEST and IEEE128): Handle UNORDERED
+       if !HONOR_NANS (<MODE>mode).
+
 2019-11-12  Jan Hubicka  <hubicka@ucw.cz>
 
        * ipa-cp.c (ignore_edge_p): Also look for optimize flag.
index aa13b20f574e8f7ebea51376fe74a894362e17f0..3aa8e215c1106096f8034db1f55691c5df27f37a 100644 (file)
                     (const_int 0)))]
   "TARGET_P9_VECTOR"
 {
+  if (<CODE> == UNORDERED && !HONOR_NANS (DFmode))
+    {
+      emit_move_insn (operands[0], const0_rtx);
+      DONE;
+    }
+
   operands[3] = gen_reg_rtx (CCFPmode);
 })
 
                     (const_int 0)))]
   "TARGET_P9_VECTOR"
 {
+  if (<CODE> == UNORDERED && !HONOR_NANS (<MODE>mode))
+    {
+      emit_move_insn (operands[0], const0_rtx);
+      DONE;
+    }
+
   operands[3] = gen_reg_rtx (CCFPmode);
 })