Commit d87a85c6 by Segher Boessenkool Committed by Segher Boessenkool

rs6000: Use LR_REGNO directly in the save/restore patterns

Various patterns use "register_operand" "l" (or "=l") although those
patterns are only created refering to LR_REGNO directly.  This patch
changes those patterns to use the hard regs as well.


	* config/rs6000/rs6000.md (*restore_gpregs_<mode>_r11,
	*restore_gpregs_<mode>_r12, *restore_gpregs_<mode>_r1,
	*return_and_restore_gpregs_<mode>_r11,
	*return_and_restore_gpregs_<mode>_r12,
	*return_and_restore_gpregs_<mode>_r1,
	*return_and_restore_fpregs_<mode>_r11,
	*return_and_restore_fpregs_<mode>_r12,
	*return_and_restore_fpregs_<mode>_r1): Use the hard register LR_REGNO
	directly instead of via the "l" constraint.  Renumber operands.
	Fix whitespace.

From-SVN: r239942
parent 893fc0a0
2016-09-01 Segher Boessenkool <segher@kernel.crashing.org> 2016-09-01 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (*restore_gpregs_<mode>_r11,
*restore_gpregs_<mode>_r12, *restore_gpregs_<mode>_r1,
*return_and_restore_gpregs_<mode>_r11,
*return_and_restore_gpregs_<mode>_r12,
*return_and_restore_gpregs_<mode>_r1,
*return_and_restore_fpregs_<mode>_r11,
*return_and_restore_fpregs_<mode>_r12,
*return_and_restore_fpregs_<mode>_r1): Use the hard register LR_REGNO
directly instead of via the "l" constraint. Renumber operands.
Fix whitespace.
2016-09-01 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/altivec.md (*save_world, *save_vregs_<mode>_r11, * config/rs6000/altivec.md (*save_world, *save_vregs_<mode>_r11,
save_vregs_<mode>_r12, *restore_vregs_<mode>_r11, save_vregs_<mode>_r12, *restore_vregs_<mode>_r11,
*restore_vregs_<mode>_r12): Use LR_REGNO instead of 65. *restore_vregs_<mode>_r12): Use LR_REGNO instead of 65.
......
...@@ -12620,115 +12620,115 @@ ...@@ -12620,115 +12620,115 @@
(define_insn "*restore_gpregs_<mode>_r11" (define_insn "*restore_gpregs_<mode>_r11"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(clobber (match_operand:P 1 "register_operand" "=l")) [(clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 11)) (use (reg:P 11))
(set (match_operand:P 3 "gpc_reg_operand" "=r") (set (match_operand:P 2 "gpc_reg_operand" "=r")
(match_operand:P 4 "memory_operand" "m"))])] (match_operand:P 3 "memory_operand" "m"))])]
"" ""
"bl %2" "bl %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*restore_gpregs_<mode>_r12" (define_insn "*restore_gpregs_<mode>_r12"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(clobber (match_operand:P 1 "register_operand" "=l")) [(clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 12)) (use (reg:P 12))
(set (match_operand:P 3 "gpc_reg_operand" "=r") (set (match_operand:P 2 "gpc_reg_operand" "=r")
(match_operand:P 4 "memory_operand" "m"))])] (match_operand:P 3 "memory_operand" "m"))])]
"" ""
"bl %2" "bl %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*restore_gpregs_<mode>_r1" (define_insn "*restore_gpregs_<mode>_r1"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(clobber (match_operand:P 1 "register_operand" "=l")) [(clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 1)) (use (reg:P 1))
(set (match_operand:P 3 "gpc_reg_operand" "=r") (set (match_operand:P 2 "gpc_reg_operand" "=r")
(match_operand:P 4 "memory_operand" "m"))])] (match_operand:P 3 "memory_operand" "m"))])]
"" ""
"bl %2" "bl %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*return_and_restore_gpregs_<mode>_r11" (define_insn "*return_and_restore_gpregs_<mode>_r11"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(return) [(return)
(clobber (match_operand:P 1 "register_operand" "=l")) (clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 11)) (use (reg:P 11))
(set (match_operand:P 3 "gpc_reg_operand" "=r") (set (match_operand:P 2 "gpc_reg_operand" "=r")
(match_operand:P 4 "memory_operand" "m"))])] (match_operand:P 3 "memory_operand" "m"))])]
"" ""
"b %2" "b %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*return_and_restore_gpregs_<mode>_r12" (define_insn "*return_and_restore_gpregs_<mode>_r12"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(return) [(return)
(clobber (match_operand:P 1 "register_operand" "=l")) (clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 12)) (use (reg:P 12))
(set (match_operand:P 3 "gpc_reg_operand" "=r") (set (match_operand:P 2 "gpc_reg_operand" "=r")
(match_operand:P 4 "memory_operand" "m"))])] (match_operand:P 3 "memory_operand" "m"))])]
"" ""
"b %2" "b %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*return_and_restore_gpregs_<mode>_r1" (define_insn "*return_and_restore_gpregs_<mode>_r1"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(return) [(return)
(clobber (match_operand:P 1 "register_operand" "=l")) (clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 1)) (use (reg:P 1))
(set (match_operand:P 3 "gpc_reg_operand" "=r") (set (match_operand:P 2 "gpc_reg_operand" "=r")
(match_operand:P 4 "memory_operand" "m"))])] (match_operand:P 3 "memory_operand" "m"))])]
"" ""
"b %2" "b %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*return_and_restore_fpregs_<mode>_r11" (define_insn "*return_and_restore_fpregs_<mode>_r11"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(return) [(return)
(clobber (match_operand:P 1 "register_operand" "=l")) (clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 11)) (use (reg:P 11))
(set (match_operand:DF 3 "gpc_reg_operand" "=d") (set (match_operand:DF 2 "gpc_reg_operand" "=d")
(match_operand:DF 4 "memory_operand" "m"))])] (match_operand:DF 3 "memory_operand" "m"))])]
"" ""
"b %2" "b %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*return_and_restore_fpregs_<mode>_r12" (define_insn "*return_and_restore_fpregs_<mode>_r12"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(return) [(return)
(clobber (match_operand:P 1 "register_operand" "=l")) (clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 12)) (use (reg:P 12))
(set (match_operand:DF 3 "gpc_reg_operand" "=d") (set (match_operand:DF 2 "gpc_reg_operand" "=d")
(match_operand:DF 4 "memory_operand" "m"))])] (match_operand:DF 3 "memory_operand" "m"))])]
"" ""
"b %2" "b %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
(define_insn "*return_and_restore_fpregs_<mode>_r1" (define_insn "*return_and_restore_fpregs_<mode>_r1"
[(match_parallel 0 "any_parallel_operand" [(match_parallel 0 "any_parallel_operand"
[(return) [(return)
(clobber (match_operand:P 1 "register_operand" "=l")) (clobber (reg:P LR_REGNO))
(use (match_operand:P 2 "symbol_ref_operand" "s")) (use (match_operand:P 1 "symbol_ref_operand" "s"))
(use (reg:P 1)) (use (reg:P 1))
(set (match_operand:DF 3 "gpc_reg_operand" "=d") (set (match_operand:DF 2 "gpc_reg_operand" "=d")
(match_operand:DF 4 "memory_operand" "m"))])] (match_operand:DF 3 "memory_operand" "m"))])]
"" ""
"b %2" "b %1"
[(set_attr "type" "branch") [(set_attr "type" "branch")
(set_attr "length" "4")]) (set_attr "length" "4")])
......
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