aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1992-10-01 11:06:29 -0600
committerJeff Law <law@gcc.gnu.org>1992-10-01 11:06:29 -0600
commit9c36061e487695a08080999ba6761c4a58cc41a0 (patch)
tree8e638d247fb066eabd4e84fec121f1a63e9fd014 /gcc
parentcaba9473d7381b3ba3f5c9415027f115ac4f2779 (diff)
downloadgcc-9c36061e487695a08080999ba6761c4a58cc41a0.zip
gcc-9c36061e487695a08080999ba6761c4a58cc41a0.tar.gz
gcc-9c36061e487695a08080999ba6761c4a58cc41a0.tar.bz2
pa.md (add high part and dp register): Split into two patterns, one for normal code, one for kernels.
* pa.md (add high part and dp register): Split into two patterns, one for normal code, one for kernels. Kernel version only allows "r1" as the destination register. From-SVN: r2298
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.md12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index f2651c5..6e72606 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -751,13 +751,23 @@
[(set (match_operand:SI 0 "register_operand" "=a,&?*r")
(plus:SI (match_operand:SI 1 "register_operand" "r,r")
(high:SI (match_operand 2 "" ""))))]
- ""
+ "!TARGET_KERNEL"
"@
addil L'%G2,%1
ldil L'%G2,%0\;add %0,%1,%0"
[(set_attr "type" "binary,binary")
(set_attr "length" "1,2")])
+(define_insn ""
+ [(set (match_operand:SI 0 "register_operand" "=a")
+ (plus:SI (match_operand:SI 1 "register_operand" "r")
+ (high:SI (match_operand 2 "" ""))))]
+ "TARGET_KERNEL"
+ "@
+ addil L'%G2,%1"
+ [(set_attr "type" "binary")
+ (set_attr "length" "1")])
+
(define_split
[(set (match_operand:SI 0 "register_operand" "")
(plus:SI (match_operand:SI 1 "register_operand" "")