Commit b22b9b3e by Jeffrey A Law Committed by Jeff Law

rs6000.md (*movsi_got_internal_mem): New pattern.

        * rs6000.md (*movsi_got_internal_mem): New pattern.
        (*movsi_got_internal_mem splitter): New define_split.
Fixes some egcs bugs.

From-SVN: r16146
parent 70cfa7ad
Wed Oct 22 00:34:12 1997 Jeffrey A Law (law@cygnus.com)
* rs6000.md (*movsi_got_internal_mem): New pattern.
(*movsi_got_internal_mem splitter): New define_split.
Tue Oct 21 18:14:03 1997 Jim Wilson <wilson@cygnus.com> Tue Oct 21 18:14:03 1997 Jim Wilson <wilson@cygnus.com>
* obstack.h (obstack_empty_p): Fix spurious space after backslash. * obstack.h (obstack_empty_p): Fix spurious space after backslash.
......
...@@ -5156,6 +5156,34 @@ ...@@ -5156,6 +5156,34 @@
"{l|lwz} %0,%a1@got(%2)" "{l|lwz} %0,%a1@got(%2)"
[(set_attr "type" "load")]) [(set_attr "type" "load")])
;; Sometimes, though, the GOT `register' will be on the stack. Deal with
;; this case specially.
;; Force final to split this insn (if it hasn't been split already) to
;; avoid having to create a suitable output template.
(define_insn "*movsi_got_internal_mem"
[(set (match_operand:SI 0 "register_operand" "=r")
(unspec [(match_operand:SI 1 "got_no_const_operand" "")
(match_operand:SI 2 "memory_operand" "m")] 8))]
"(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1
&& (reload_in_progress || reload_completed)"
"#"
[(set_attr "type" "load")
(set_attr "length" "8")])
;; Used by sched, shorten_branches and final when the GOT pseudo reg
;; didn't get allocated to a hard register.
(define_split
[(set (match_operand:SI 0 "register_operand" "=r")
(unspec [(match_operand:SI 1 "got_no_const_operand" "")
(match_operand:SI 2 "memory_operand" "m")] 8))]
"(DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS)
&& flag_pic == 1
&& (reload_in_progress || reload_completed)"
[(set (match_dup 0) (match_dup 2))
(set (match_dup 0) (unspec [(match_dup 1)(match_dup 0)] 8))]
"")
;; For SI, we special-case integers that can't be loaded in one insn. We ;; For SI, we special-case integers that can't be loaded in one insn. We
;; do the load 16-bits at a time. We could do this by loading from memory, ;; do the load 16-bits at a time. We could do this by loading from memory,
;; and this is even supposed to be faster, but it is simpler not to get ;; and this is even supposed to be faster, but it is simpler not to get
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment