From 8cf85c4ba99de5a5c06a419bffb3cbfd1b683db9 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Tue, 1 Mar 1994 17:07:57 +0000 Subject: [PATCH] Two new patterns, to match (HIGH (UNSPEC (..))) From-SVN: r6680 --- gcc/config/m88k/m88k.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gcc/config/m88k/m88k.md b/gcc/config/m88k/m88k.md index 44d95a0cb9f..70897cbda70 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" -- 2.30.2