https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79752

--- Comment #5 from acsawdey at gcc dot gnu.org ---
Author: acsawdey
Date: Tue Mar 14 14:43:03 2017
New Revision: 246127

URL: https://gcc.gnu.org/viewcvs?rev=246127&root=gcc&view=rev
Log:
This showed up in power9 code for __divkf3 software float support and
caused a divd to be emitted where we needed a divdu.

Index: gcc/config/rs6000/rs6000.md
===================================================================
--- gcc/config/rs6000/rs6000.md (revision 246123)
+++ gcc/config/rs6000/rs6000.md (working copy)
@@ -3063,8 +3063,8 @@
    && ! reg_mentioned_p (operands[3], operands[1])
    && ! reg_mentioned_p (operands[3], operands[2])"
   [(set (match_dup 0)
-       (div:GPR (match_dup 1)
-                (match_dup 2)))
+       (udiv:GPR (match_dup 1)
+                 (match_dup 2)))
    (set (match_dup 3)
        (mult:GPR (match_dup 0)
                  (match_dup 2)))

2017-03-14  Aaron Sawdey  <acsaw...@linux.vnet.ibm.com>

        Backport from mainline
        2017-02-28  Aaron Sawdey  <acsaw...@linux.vnet.ibm.com>

        PR target/79752
        * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
        udiv rather than div since input pattern is unsigned.



Modified:
    branches/gcc-6-branch/gcc/ChangeLog
    branches/gcc-6-branch/gcc/config/rs6000/rs6000.md

Reply via email to