re PR middle-end/28753 (ICE in extract_insn, at recog.c:2075 on powerpc)
PR target/28753 * config/rs6000/rs6000.md (movcc_internal1): Change operand 1 predicate to general_operand. Add 0->y and I->r alternatives. From-SVN: r116400
This commit is contained in:
parent
86c33cd0fb
commit
4eb585a473
2 changed files with 18 additions and 10 deletions
|
@ -1,3 +1,9 @@
|
|||
2006-08-25 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
PR target/28753
|
||||
* config/rs6000/rs6000.md (movcc_internal1): Change operand 1
|
||||
predicate to general_operand. Add 0->y and I->r alternatives.
|
||||
|
||||
2006-08-25 Kazu Hirata <kazu@codesourcery.com>
|
||||
|
||||
* doc/tm.texi: Fix a typo.
|
||||
|
|
|
@ -7920,42 +7920,44 @@
|
|||
"")
|
||||
|
||||
(define_insn "*movcc_internal1"
|
||||
[(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,r,r,r,r,q,cl,r,m")
|
||||
(match_operand:CC 1 "nonimmediate_operand" "y,r,r,x,y,r,h,r,r,m,r"))]
|
||||
[(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,y,r,r,r,r,r,q,cl,r,m")
|
||||
(match_operand:CC 1 "general_operand" "y,r,r,O,x,y,r,I,h,r,r,m,r"))]
|
||||
"register_operand (operands[0], CCmode)
|
||||
|| register_operand (operands[1], CCmode)"
|
||||
"@
|
||||
mcrf %0,%1
|
||||
mtcrf 128,%1
|
||||
{rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm} %1,%1,%f0,0xffffffff
|
||||
crxor %0,%0,%0
|
||||
mfcr %0%Q1
|
||||
mfcr %0%Q1\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
|
||||
mr %0,%1
|
||||
{lil|li} %0,%1
|
||||
mf%1 %0
|
||||
mt%0 %1
|
||||
mt%0 %1
|
||||
{l%U1%X1|lwz%U1%X1} %0,%1
|
||||
{st%U0%U1|stw%U0%U1} %1,%0"
|
||||
[(set (attr "type")
|
||||
(cond [(eq_attr "alternative" "0")
|
||||
(cond [(eq_attr "alternative" "0,3")
|
||||
(const_string "cr_logical")
|
||||
(eq_attr "alternative" "1,2")
|
||||
(const_string "mtcr")
|
||||
(eq_attr "alternative" "5,7")
|
||||
(eq_attr "alternative" "6,7,9")
|
||||
(const_string "integer")
|
||||
(eq_attr "alternative" "6")
|
||||
(const_string "mfjmpr")
|
||||
(eq_attr "alternative" "8")
|
||||
(const_string "mtjmpr")
|
||||
(eq_attr "alternative" "9")
|
||||
(const_string "load")
|
||||
(const_string "mfjmpr")
|
||||
(eq_attr "alternative" "10")
|
||||
(const_string "mtjmpr")
|
||||
(eq_attr "alternative" "11")
|
||||
(const_string "load")
|
||||
(eq_attr "alternative" "12")
|
||||
(const_string "store")
|
||||
(ne (symbol_ref "TARGET_MFCRF") (const_int 0))
|
||||
(const_string "mfcrf")
|
||||
]
|
||||
(const_string "mfcr")))
|
||||
(set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
|
||||
(set_attr "length" "4,4,12,4,4,8,4,4,4,4,4,4,4")])
|
||||
|
||||
;; For floating-point, we normally deal with the floating-point registers
|
||||
;; unless -msoft-float is used. The sole exception is that parameter passing
|
||||
|
|
Loading…
Add table
Reference in a new issue