diff options
author | Stan Cox <coxs@gnu.org> | 1994-03-01 17:07:57 +0000 |
---|---|---|
committer | Stan Cox <coxs@gnu.org> | 1994-03-01 17:07:57 +0000 |
commit | 8cf85c4ba99de5a5c06a419bffb3cbfd1b683db9 (patch) | |
tree | 968e80864eabcd878707e1ed7f0919a641045750 /gcc | |
parent | 6825be948b122afd63c16fd6cc3a9438791be6ea (diff) | |
download | gcc-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.md | 23 |
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" |