--- gcc/config/i370/i370.md 2018/04/24 18:17:20 1.1 +++ gcc/config/i370/i370.md 2018/04/24 18:31:11 1.1.1.3 @@ -1,7 +1,7 @@ ;;- Machine description for GNU compiler -- System/370 version. -;; Copyright (C) 1989, 1993 Free Software Foundation, Inc. -;; Contributed by Jan Stein (jan@cd.chalmers.se). -;; Modifed for MVS C/370 by Dave Pitts (pitts@mcdata.com) +;; Copyright (C) 1989, 1993, 1994, 1995 Free Software Foundation, Inc. +;; Contributed by Jan Stein (jan@cd.chalmers.se). +;; Modified for MVS C/370 by Dave Pitts (dpitts@nyx.cs.du.edu) ;; This file is part of GNU CC. @@ -17,7 +17,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. ;;- cpp macro #define NOTICE_UPDATE_CC in file tm.h handles condition code ;;- updates for most instructions. @@ -42,7 +43,7 @@ ;; %R -- Print the register of a memory reference (PLUS (REG) (CONST_INT)). ;; %X -- Print a constant byte integer in hex. ;; -;; We have a special contraint for pattern matching. +;; We have a special constraint for pattern matching. ;; ;; s_operand -- Matches a valid S operand in a RS, SI or SS type instruction. ;; @@ -219,7 +220,7 @@ (define_insn "cmpsi" [(set (cc0) (compare (match_operand:SI 0 "register_operand" "d") - (match_operand:SI 1 "general_operand" "")))] + (match_operand:SI 1 "general_operand" "md")))] "" "* { @@ -265,8 +266,8 @@ } if (GET_CODE (operands[1]) == CONST_INT) { - mvs_check_page (0, 4, 2); - return \"CH %0,=H'%h1'\"; + mvs_check_page (0, 4, 0); + return \"CH %0,%H1\"; } mvs_check_page (0, 4, 0); return \"CH %0,%1\"; @@ -780,8 +781,8 @@ check_label_emit (); } if (GET_CODE (operands[1]) == CONST_INT) { - mvs_check_page (0, 4, 2); - return \"LH %0,=H'%h1'\"; + mvs_check_page (0, 4, 0); + return \"LH %0,%H1\"; } mvs_check_page (0, 4, 0); return \"LH %0,%1\"; @@ -794,7 +795,7 @@ check_label_emit (); if (GET_CODE (operands[1]) == CONST_INT) { mvs_check_page (0, 6, 0); - return \"MVC %O0(2,%R0),=H'%h1'\"; + return \"MVC %O0(2,%R0),%H1\"; } mvs_check_page (0, 6, 0); return \"MVC %O0(2,%R0),%1\"; @@ -828,8 +829,8 @@ check_label_emit (); } if (GET_CODE (operands[1]) == CONST_INT) { - mvs_check_page (0, 4, 2); - return \"LH %0,=H'%h1'\"; + mvs_check_page (0, 4, 0); + return \"LH %0,%H1\"; } mvs_check_page (0, 4, 0); return \"LH %0,%1\"; @@ -964,8 +965,8 @@ check_label_emit (); } else if (GET_CODE (operands[1]) == CONST_INT) { - mvs_check_page (0, 4, 2); - return \"ICM %0,3,=H'%h1'\"; + mvs_check_page (0, 4, 0); + return \"ICM %0,3,%H1\"; } mvs_check_page (0, 4, 0); return \"ICM %0,3,%1\"; @@ -1366,14 +1367,14 @@ check_label_emit (); } if (GET_CODE (operands[1]) == CONST_INT) { - mvs_check_page (0, 4, 2); - return \"LH %0,=H'%h1'\"; + mvs_check_page (0, 4, 0); + return \"LH %0,%H1\"; } mvs_check_page (0, 4, 0); return \"LH %0,%1\"; } mvs_check_page (0, 4, 0); - return \"SLL %0,16\;SRA %0,16\;ST %1,%0\"; + return \"SLL %1,16\;SRA %1,16\;ST %1,%0\"; }") ; @@ -1779,7 +1780,7 @@ check_label_emit (); check_label_emit (); if (REG_P (operands[2])) { - mvs_check_page (0, 2, 0); + mvs_check_page (0, 8, 0); return \"STH %2,140(,13)\;AH %0,140(,13)\"; } if (GET_CODE (operands[2]) == CONST_INT) @@ -1790,8 +1791,8 @@ check_label_emit (); mvs_check_page (0, 2, 0); return \"BCTR %0,0\"; } - mvs_check_page (0, 4, 2); - return \"AH %0,=H'%h2'\"; + mvs_check_page (0, 4, 0); + return \"AH %0,%H2\"; } mvs_check_page (0, 4, 0); return \"AH %0,%2\"; @@ -1976,7 +1977,7 @@ check_label_emit (); check_label_emit (); if (REG_P (operands[2])) { - mvs_check_page (0, 2, 0); + mvs_check_page (0, 8, 0); return \"STH %2,140(,13)\;SH %0,140(,13)\"; } if (operands[2] == const1_rtx) @@ -1987,8 +1988,8 @@ check_label_emit (); } if (GET_CODE (operands[2]) == CONST_INT) { - mvs_check_page (0, 4, 2); - return \"SH %0,=H'%h2'\"; + mvs_check_page (0, 4, 0); + return \"SH %0,%H2\"; } mvs_check_page (0, 4, 0); return \"SH %0,%2\"; @@ -2000,7 +2001,7 @@ check_label_emit (); (define_expand "subqi3" [(set (match_operand:QI 0 "general_operand" "=d") - (minus:QI (match_operand:QI 1 "general_operand" "%0") + (minus:QI (match_operand:QI 1 "general_operand" "0") (match_operand:QI 2 "general_operand" "di")))] "" " @@ -2021,7 +2022,7 @@ check_label_emit (); (define_insn "" [(set (match_operand:QI 0 "register_operand" "=d") - (minus:QI (match_operand:QI 1 "register_operand" "%0") + (minus:QI (match_operand:QI 1 "register_operand" "0") (match_operand:QI 2 "register_operand" "d")))] "" "* @@ -2124,7 +2125,7 @@ check_label_emit (); { check_label_emit (); mvs_check_page (0, 4, 0); - return \"MH %0,%2\"; + return \"MH %0,%H2\"; }") (define_insn "" @@ -2550,13 +2551,13 @@ check_label_emit (); if (REG_P (operands[0])) { mvs_check_page (0, 4, 0); - return \"N %0,%H2\"; + return \"N %0,%2\"; } CC_STATUS_INIT; if (GET_CODE (operands[2]) == CONST_INT) { - mvs_check_page (0, 6, 2); - return \"NC %O0(2,%R0),=H'%h2'\"; + mvs_check_page (0, 6, 0); + return \"NC %O0(2,%R0),%H2\"; } mvs_check_page (0, 6, 0); return \"NC %O0(2,%R0),%2\"; @@ -2573,7 +2574,7 @@ check_label_emit (); if (GET_CODE (operands[2]) == CONST_INT) { mvs_check_page (0, 4, 0); - return \"N %0,%H2\"; + return \"N %0,%2\"; } mvs_check_page (0, 2, 0); return \"NR %0,%2\"; @@ -2719,13 +2720,13 @@ check_label_emit (); if (REG_P (operands[0])) { mvs_check_page (0, 4, 0); - return \"O %0,%H2\"; + return \"O %0,%2\"; } CC_STATUS_INIT; if (GET_CODE (operands[2]) == CONST_INT) { - mvs_check_page (0, 6, 2); - return \"OC %O0(2,%R0),=H'%h2'\"; + mvs_check_page (0, 6, 0); + return \"OC %O0(2,%R0),%H2\"; } mvs_check_page (0, 6, 0); return \"OC %O0(2,%R0),%2\"; @@ -2742,7 +2743,7 @@ check_label_emit (); if (GET_CODE (operands[2]) == CONST_INT) { mvs_check_page (0, 4, 0); - return \"O %0,%H2\"; + return \"O %0,%2\"; } mvs_check_page (0, 2, 0); return \"OR %0,%2\"; @@ -2889,13 +2890,13 @@ check_label_emit (); if (REG_P (operands[0])) { mvs_check_page (0, 4, 0); - return \"X %0,%H2\"; + return \"X %0,%2\"; } CC_STATUS_INIT; if (GET_CODE (operands[2]) == CONST_INT) { - mvs_check_page (0, 6, 2); - return \"XC %O0(2,%R0),=H'%h2'\"; + mvs_check_page (0, 6, 0); + return \"XC %O0(2,%R0),%H2\"; } mvs_check_page (0, 6, 0); return \"XC %O0(2,%R0),%2\"; @@ -3372,24 +3373,6 @@ check_label_emit (); ;; ; -; lshldi3 instruction pattern(s). -; - -(define_insn "lshldi3" - [(set (match_operand:DI 0 "general_operand" "=d") - (lshift:DI (match_operand:DI 1 "general_operand" "0") - (match_operand:SI 2 "general_operand" "Ja")))] - "" - "* -{ - check_label_emit (); - mvs_check_page (0, 4, 0); - if (REG_P (operands[2])) - return \"SLDL %0,0(%2)\"; - return \"SLDL %0,%c2\"; -}") - -; ; lshrdi3 instruction pattern(s). ; @@ -3407,23 +3390,6 @@ check_label_emit (); return \"SRDL %0,%c2\"; }") -; -; lshlsi3 instruction pattern(s). -; - -(define_insn "lshlsi3" - [(set (match_operand:SI 0 "general_operand" "=d") - (lshift:SI (match_operand:SI 1 "general_operand" "0") - (match_operand:SI 2 "general_operand" "Ja")))] - "" - "* -{ - check_label_emit (); - mvs_check_page (0, 4, 0); - if (REG_P (operands[2])) - return \"SLL %0,0(%2)\"; - return \"SLL %0,%c2\"; -}") ; ; lshrsi3 instruction pattern(s). @@ -3444,25 +3410,6 @@ check_label_emit (); }") ; -; lshlhi3 instruction pattern(s). -; - -(define_insn "lshlhi3" - [(set (match_operand:HI 0 "general_operand" "=d") - (lshift:HI (match_operand:HI 1 "general_operand" "0") - (match_operand:SI 2 "general_operand" "Ja")))] - "" - "* -{ - check_label_emit (); - CC_STATUS_INIT; - mvs_check_page (0, 4, 0); - if (REG_P (operands[2])) - return \"SLL %0,0(%2)\"; - return \"SLL %0,%c2\"; -}") - -; ; lshrhi3 instruction pattern(s). ; @@ -3485,24 +3432,6 @@ check_label_emit (); }") ; -; lshlqi3 instruction pattern(s). -; - -(define_insn "lshlqi3" - [(set (match_operand:QI 0 "general_operand" "=d") - (lshift:QI (match_operand:QI 1 "general_operand" "0") - (match_operand:SI 2 "general_operand" "Ja")))] - "" - "* -{ - check_label_emit (); - mvs_check_page (0, 4, 0); - if (REG_P (operands[2])) - return \"SLL %0,0(%2)\"; - return \"SLL %0,%c2\"; -}") - -; ; lshrqi3 instruction pattern(s). ;