diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-03-01 04:16:10 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-03-01 04:16:10 -0700 |
commit | 26915fa9bcd03bec9a39835b075a605309e1e9d6 (patch) | |
tree | d62d60ff41490f4736d77d4071e6f095adc5c79e | |
parent | c1d1b3f05fe1f7fe5027581becc3bd8ad1b25045 (diff) | |
download | gcc-26915fa9bcd03bec9a39835b075a605309e1e9d6.zip gcc-26915fa9bcd03bec9a39835b075a605309e1e9d6.tar.gz gcc-26915fa9bcd03bec9a39835b075a605309e1e9d6.tar.bz2 |
pa.md (split for symbol_ref+int): New define_split for hte combiner.
* pa.md (split for symbol_ref+int): New define_split for hte
combiner.
From-SVN: r3572
-rw-r--r-- | gcc/config/pa/pa.md | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 39d7834..bcb1a0d 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -994,6 +994,20 @@ "ldo R'%G2(%1),%0" [(set_attr "length" "1")]) +;; Now that a symbolic_address plus a constant is broken up early +;; in the compilation phase (for better CSE) we need a special +;; combiner pattern to load the symbolic address plus the constant +;; in only 2 instructions. (For cases where the symbolic address +;; was not a common subexpression.) +(define_split + [(set (match_operand:SI 0 "register_operand" "") + (match_operand 1 "symbolic_operand" "")) + (clobber (match_operand:SI 2 "register_operand" ""))] + "" + [(set (match_dup 2) (high:SI (match_dup 1))) + (set (match_dup 0) (lo_sum:SI (match_dup 2) (match_dup 1)))] + "") + (define_expand "movhi" [(set (match_operand:HI 0 "general_operand" "") (match_operand:HI 1 "general_operand" ""))] |