Commit a442a050 by Alan Modra Committed by Alan Modra

[RS6000] Don't allow combine to form doloop pattern

	* config/rs6000/rs6000.md (UNSPEC_DOLOOP): New unspec.
	(ctr<mode>): Add unspec.
	(ctr<mode>_internal*): Likewise.

From-SVN: r238207
parent 7352723b
2016-07-11 Alan Modra <amodra@gmail.com>
* config/rs6000/rs6000.md (UNSPEC_DOLOOP): New unspec.
(ctr<mode>): Add unspec.
(ctr<mode>_internal*): Likewise.
2016-07-08 James Bowman <james.bowman@ftdichip.com> 2016-07-08 James Bowman <james.bowman@ftdichip.com>
* config/ft32/ft32.c (ft32_elf_encode_section_info): New function. * config/ft32/ft32.c (ft32_elf_encode_section_info): New function.
......
...@@ -148,6 +148,7 @@ ...@@ -148,6 +148,7 @@
UNSPEC_IEEE128_MOVE UNSPEC_IEEE128_MOVE
UNSPEC_IEEE128_CONVERT UNSPEC_IEEE128_CONVERT
UNSPEC_SIGNBIT UNSPEC_SIGNBIT
UNSPEC_DOLOOP
]) ])
;; ;;
...@@ -12185,6 +12186,7 @@ ...@@ -12185,6 +12186,7 @@
(set (match_dup 0) (set (match_dup 0)
(plus:P (match_dup 0) (plus:P (match_dup 0)
(const_int -1))) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 2 "")) (clobber (match_scratch:CC 2 ""))
(clobber (match_scratch:P 3 ""))])] (clobber (match_scratch:P 3 ""))])]
"" ""
...@@ -12195,6 +12197,7 @@ ...@@ -12195,6 +12197,7 @@
;; JUMP_INSNs. ;; JUMP_INSNs.
;; For the length attribute to be calculated correctly, the ;; For the length attribute to be calculated correctly, the
;; label MUST be operand 0. ;; label MUST be operand 0.
;; The UNSPEC is present to prevent combine creating this pattern.
(define_insn "*ctr<mode>_internal1" (define_insn "*ctr<mode>_internal1"
[(set (pc) [(set (pc)
...@@ -12205,6 +12208,7 @@ ...@@ -12205,6 +12208,7 @@
(set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
(plus:P (match_dup 1) (plus:P (match_dup 1)
(const_int -1))) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 3 "=X,&x,&x,&x")) (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
(clobber (match_scratch:P 4 "=X,X,&r,r"))] (clobber (match_scratch:P 4 "=X,X,&r,r"))]
"" ""
...@@ -12229,6 +12233,7 @@ ...@@ -12229,6 +12233,7 @@
(set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
(plus:P (match_dup 1) (plus:P (match_dup 1)
(const_int -1))) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 3 "=X,&x,&x,&x")) (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
(clobber (match_scratch:P 4 "=X,X,&r,r"))] (clobber (match_scratch:P 4 "=X,X,&r,r"))]
"" ""
...@@ -12255,6 +12260,7 @@ ...@@ -12255,6 +12260,7 @@
(set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
(plus:P (match_dup 1) (plus:P (match_dup 1)
(const_int -1))) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 3 "=X,&x,&x,&x")) (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
(clobber (match_scratch:P 4 "=X,X,&r,r"))] (clobber (match_scratch:P 4 "=X,X,&r,r"))]
"" ""
...@@ -12279,6 +12285,7 @@ ...@@ -12279,6 +12285,7 @@
(set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
(plus:P (match_dup 1) (plus:P (match_dup 1)
(const_int -1))) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 3 "=X,&x,&x,&x")) (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
(clobber (match_scratch:P 4 "=X,X,&r,r"))] (clobber (match_scratch:P 4 "=X,X,&r,r"))]
"" ""
...@@ -12305,6 +12312,7 @@ ...@@ -12305,6 +12312,7 @@
(match_operand 6 "" ""))) (match_operand 6 "" "")))
(set (match_operand:P 0 "int_reg_operand" "") (set (match_operand:P 0 "int_reg_operand" "")
(plus:P (match_dup 1) (const_int -1))) (plus:P (match_dup 1) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 3 "")) (clobber (match_scratch:CC 3 ""))
(clobber (match_scratch:P 4 ""))] (clobber (match_scratch:P 4 ""))]
"reload_completed" "reload_completed"
...@@ -12330,6 +12338,7 @@ ...@@ -12330,6 +12338,7 @@
(match_operand 6 "" ""))) (match_operand 6 "" "")))
(set (match_operand:P 0 "nonimmediate_operand" "") (set (match_operand:P 0 "nonimmediate_operand" "")
(plus:P (match_dup 1) (const_int -1))) (plus:P (match_dup 1) (const_int -1)))
(unspec [(const_int 0)] UNSPEC_DOLOOP)
(clobber (match_scratch:CC 3 "")) (clobber (match_scratch:CC 3 ""))
(clobber (match_scratch:P 4 ""))] (clobber (match_scratch:P 4 ""))]
"reload_completed && ! gpc_reg_operand (operands[0], SImode)" "reload_completed && ! gpc_reg_operand (operands[0], SImode)"
......
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