aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStan Cox <coxs@gnu.org>1994-03-01 17:07:57 +0000
committerStan Cox <coxs@gnu.org>1994-03-01 17:07:57 +0000
commit8cf85c4ba99de5a5c06a419bffb3cbfd1b683db9 (patch)
tree968e80864eabcd878707e1ed7f0919a641045750 /gcc
parent6825be948b122afd63c16fd6cc3a9438791be6ea (diff)
downloadgcc-8cf85c4ba99de5a5c06a419bffb3cbfd1b683db9.zip
gcc-8cf85c4ba99de5a5c06a419bffb3cbfd1b683db9.tar.gz
gcc-8cf85c4ba99de5a5c06a419bffb3cbfd1b683db9.tar.bz2
Two new patterns, to match (HIGH (UNSPEC (..)))
From-SVN: r6680
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m88k/m88k.md23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/config/m88k/m88k.md b/gcc/config/m88k/m88k.md
index 44d95a0..70897cb 100644
--- a/gcc/config/m88k/m88k.md
+++ b/gcc/config/m88k/m88k.md
@@ -1838,12 +1838,35 @@
""
"or %0,%1,%#lo16(%g2)")
+;; For PIC, symbol_refs are put inside unspec so that the optimizer won't
+;; confuse them with real addresses.
+(define_insn ""
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
+ (unspec:SI [(match_operand:SI 2 "immediate_operand" "in")] 0)))]
+ ""
+ "or %0,%1,%#lo16(%g2)"
+ ;; Need to set length for this arith insn because operand2
+ ;; is not an "arith_operand".
+ [(set_attr "length" "1")])
+
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(high:SI (match_operand 1 "" "")))]
""
"or.u %0,%#r0,%#hi16(%g1)")
+;; For PIC, symbol_refs are put inside unspec so that the optimizer won't
+;; confuse them with real addresses.
+(define_insn ""
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (high:SI (unspec:SI [(match_operand 1 "" "")] 0)))]
+ ""
+ "or.u %0,%#r0,%#hi16(%g1)"
+ ;; Need to set length for this arith insn because operand2
+ ;; is not an arith_operand.
+ [(set_attr "length" "1")])
+
;; HImode move instructions
(define_expand "movhi"