aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-07-05 17:43:43 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-07-05 17:43:43 -0400
commit6dd0c6da729705dee361873dcc0f05bca888d2e8 (patch)
tree307aa710a9a72e9f81955579a1dcd8ebc9900d80 /gcc
parent2a73b0b200cd9da3076d46f4689d29e6361a2015 (diff)
downloadgcc-6dd0c6da729705dee361873dcc0f05bca888d2e8.zip
gcc-6dd0c6da729705dee361873dcc0f05bca888d2e8.tar.gz
gcc-6dd0c6da729705dee361873dcc0f05bca888d2e8.tar.bz2
(movhi): When storing a constant in an HImode register...
(movhi): When storing a constant in an HImode register, use cal16 instead of cal so that the high bits are clear (combine requires this). From-SVN: r4845
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/romp/romp.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/romp/romp.md b/gcc/config/romp/romp.md
index 4bdb503..968f700 100644
--- a/gcc/config/romp/romp.md
+++ b/gcc/config/romp/romp.md
@@ -1,5 +1,5 @@
;;- Machine description for ROMP chip for GNU C compiler
-;; Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1991, 1993 Free Software Foundation, Inc.
;; Contributed by Richard Kenner (kenner@nyu.edu)
;; This file is part of GNU CC.
@@ -335,6 +335,10 @@
"loadha %0,%1"
[(set_attr "type" "load")])
+
+;; use cal16 instead of cal for constant source because combine requires
+;; the high bits of the register to be 0 after a HImode load of a constant
+
(define_insn ""
[(set (match_operand:HI 0 "reg_or_nonsymb_mem_operand" "=r,r,r,r,r,b,Q")
(match_operand:HI 1 "romp_operand" "r,I,n,s,Q,m,r"))]
@@ -343,7 +347,7 @@
"@
cas %0,%1,r0
lis %0,%1
- cal %0,%L1(r0)
+ cal16 %0,%L1(r0)
get %0,$%1
lh%N1 %0,%1
loadh %0,%1