Two new patterns, to match (HIGH (UNSPEC (..)))
authorStan Cox <coxs@gnu.org>
Tue, 1 Mar 1994 17:07:57 +0000 (17:07 +0000)
committerStan Cox <coxs@gnu.org>
Tue, 1 Mar 1994 17:07:57 +0000 (17:07 +0000)
From-SVN: r6680

gcc/config/m88k/m88k.md

index 44d95a0cb9f2c3fdada63980d70579f87ca6afde..70897cbda70748c912aa336501218bd3abdc49aa 100644 (file)
   ""
   "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"