--- gcc/config/pyr/pyr.md 2018/04/24 18:10:26 1.1 +++ gcc/config/pyr/pyr.md 2018/04/24 18:30:18 1.1.1.2 @@ -1,5 +1,5 @@ ;; GNU C machine description for Pyramid 90x, 9000, MIServer Series -;; Copyright (C) 1989, 1990 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1990, 1995 Free Software Foundation, Inc. ;; This file is part of GNU CC. @@ -15,7 +15,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU CC; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;; the Free Software Foundation, 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. ;; Instruction patterns. When multiple patterns apply, ;; the first one in the file is chosen. @@ -223,7 +224,7 @@ (compare (match_operand:HI 0 "nonimmediate_operand" "r,m") (match_operand:HI 1 "nonimmediate_operand" "m,r")))] "(!TRULY_UNSIGNED_COMPARE_P (GET_CODE (XEXP (SET_SRC (PATTERN (NEXT_INSN (insn))), 0)))) - && (GET_CODE (operands[0]) != GET_CODE (operands[1]))" + && ((GET_CODE (operands[0]) == MEM) != (GET_CODE (operands[1]) == MEM))" "* { rtx br_insn = NEXT_INSN (insn); @@ -305,7 +306,7 @@ [(set (cc0) (compare (match_operand:QI 0 "nonimmediate_operand" "r,m") (match_operand:QI 1 "nonimmediate_operand" "m,r")))] - "(GET_CODE (operands[0]) != GET_CODE (operands[1]))" + "((GET_CODE (operands[0]) == MEM) != (GET_CODE (operands[1]) == MEM))" "* { rtx br_insn = NEXT_INSN (insn); @@ -1136,36 +1137,6 @@ return \"mtstw %1,%0\"; ") -;; Same for HI and QI mode move-test as well. - -(define_peephole - [(set (match_operand:HI 0 "register_operand" "=r") - (match_operand:HI 1 "nonimmediate_operand" "rm")) - (set (match_operand:SI 2 "register_operand" "=r") - (sign_extend:SI (match_operand:HI 3 "nonimmediate_operand" "rm"))) - (set (cc0) (match_dup 2))] - "dead_or_set_p (insn, operands[2]) - && (rtx_equal_p (operands[3], operands[0]) - || rtx_equal_p (operands[3], operands[1]))" - "* - cc_status.flags |= CC_NO_OVERFLOW; - return \"cvthw %1,%0\"; -") - -(define_peephole - [(set (match_operand:QI 0 "register_operand" "=r") - (match_operand:QI 1 "nonimmediate_operand" "rm")) - (set (match_operand:SI 2 "register_operand" "=r") - (sign_extend:SI (match_operand:QI 3 "nonimmediate_operand" "rm"))) - (set (cc0) (match_dup 2))] - "dead_or_set_p (insn, operands[2]) - && (rtx_equal_p (operands[3], operands[0]) - || rtx_equal_p (operands[3], operands[1]))" - "* - cc_status.flags |= CC_NO_OVERFLOW; - return \"cvtbw %1,%0\"; -") - ;; Optimize loops with an incremented/decremented variable. (define_peephole