diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-20 22:02:06 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-20 22:02:06 +0000 |
commit | c00688b9e07aa999a2f456bc20c1aa85095b511b (patch) | |
tree | 35f5c03d04379479108b5696b185dcc1b2472a12 /gcc/config/arc | |
parent | c1caaef5bfee57cf7100fc6360ee1f3be5020f14 (diff) | |
download | gcc-c00688b9e07aa999a2f456bc20c1aa85095b511b.tar.gz |
PR target/4792
* config/arc/arc.md (movsicc, movdicc, movsfcc, movdfcc): Add mode
to if_then_else.
(movsicc_insn, movdicc_insn, movsfcc_insn, movdfcc_insn): Likewise.
* config/arc/arc.c (arc_final_prescan_insn): Use extract_insn_cached
instead of insn_extract.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51090 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arc')
-rw-r--r-- | gcc/config/arc/arc.c | 7 | ||||
-rw-r--r-- | gcc/config/arc/arc.md | 50 |
2 files changed, 28 insertions, 29 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index d3adb744e15..663f50b6e84 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -2190,7 +2190,7 @@ arc_final_prescan_insn (insn, opvec, noperands) if (!this_insn) { /* Oh dear! we ran off the end, give up. */ - insn_extract (insn); + extract_insn_cached (insn); arc_ccfsm_state = 0; arc_ccfsm_target_insn = NULL; return; @@ -2212,9 +2212,8 @@ arc_final_prescan_insn (insn, opvec, noperands) /* Restore recog_data. Getting the attributes of other insns can destroy this array, but final.c assumes that it remains intact - across this call; since the insn has been recognized already we - call insn_extract direct. */ - insn_extract (insn); + across this call. */ + extract_insn_cached (insn); } } diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md index d10abe698a7..4df42cc91b5 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -583,9 +583,9 @@ (define_expand "movsicc" [(set (match_operand:SI 0 "register_operand" "") - (if_then_else (match_operand 1 "comparison_operator" "") - (match_operand:SI 2 "nonmemory_operand" "") - (match_operand:SI 3 "register_operand" "")))] + (if_then_else:SI (match_operand 1 "comparison_operator" "") + (match_operand:SI 2 "nonmemory_operand" "") + (match_operand:SI 3 "register_operand" "")))] "" " { @@ -599,9 +599,9 @@ ;(define_expand "movdicc" ; [(set (match_operand:DI 0 "register_operand" "") -; (if_then_else (match_operand 1 "comparison_operator" "") -; (match_operand:DI 2 "nonmemory_operand" "") -; (match_operand:DI 3 "register_operand" "")))] +; (if_then_else:DI (match_operand 1 "comparison_operator" "") +; (match_operand:DI 2 "nonmemory_operand" "") +; (match_operand:DI 3 "register_operand" "")))] ; "0 /* ??? this would work better if we had cmpdi */" ; " ;{ @@ -612,12 +612,12 @@ ; ; operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx); ;}") -(define_expand "movsfcc" +(define_expand "movsfcc" [(set (match_operand:SF 0 "register_operand" "") - (if_then_else (match_operand 1 "comparison_operator" "") - (match_operand:SF 2 "nonmemory_operand" "") - (match_operand:SF 3 "register_operand" "")))] + (if_then_else:SF (match_operand 1 "comparison_operator" "") + (match_operand:SF 2 "nonmemory_operand" "") + (match_operand:SF 3 "register_operand" "")))] "" " { @@ -631,9 +631,9 @@ ;(define_expand "movdfcc" ; [(set (match_operand:DF 0 "register_operand" "") -; (if_then_else (match_operand 1 "comparison_operator" "") -; (match_operand:DF 2 "nonmemory_operand" "") -; (match_operand:DF 3 "register_operand" "")))] +; (if_then_else:DF (match_operand 1 "comparison_operator" "") +; (match_operand:DF 2 "nonmemory_operand" "") +; (match_operand:DF 3 "register_operand" "")))] ; "0 /* ??? can generate less efficient code if constants involved */" ; " ;{ @@ -647,9 +647,9 @@ (define_insn "*movsicc_insn" [(set (match_operand:SI 0 "register_operand" "=r") - (if_then_else (match_operand 1 "comparison_operator" "") - (match_operand:SI 2 "nonmemory_operand" "rJi") - (match_operand:SI 3 "register_operand" "0")))] + (if_then_else:SI (match_operand 1 "comparison_operator" "") + (match_operand:SI 2 "nonmemory_operand" "rJi") + (match_operand:SI 3 "register_operand" "0")))] "" "mov.%d1 %0,%S2" [(set_attr "type" "cmove")]) @@ -657,9 +657,9 @@ ; ??? This doesn't properly handle constants. ;(define_insn "*movdicc_insn" ; [(set (match_operand:DI 0 "register_operand" "=r,r") -; (if_then_else (match_operand 1 "comparison_operator" "") -; (match_operand:DI 2 "nonmemory_operand" "r,Ji") -; (match_operand:DI 3 "register_operand" "0,0")))] +; (if_then_else:DI (match_operand 1 "comparison_operator" "") +; (match_operand:DI 2 "nonmemory_operand" "r,Ji") +; (match_operand:DI 3 "register_operand" "0,0")))] ; "0" ; "* ;{ @@ -682,9 +682,9 @@ (define_insn "*movsfcc_insn" [(set (match_operand:SF 0 "register_operand" "=r,r") - (if_then_else (match_operand 1 "comparison_operator" "") - (match_operand:SF 2 "nonmemory_operand" "r,E") - (match_operand:SF 3 "register_operand" "0,0")))] + (if_then_else:SF (match_operand 1 "comparison_operator" "") + (match_operand:SF 2 "nonmemory_operand" "r,E") + (match_operand:SF 3 "register_operand" "0,0")))] "" "@ mov.%d1 %0,%2 @@ -693,9 +693,9 @@ ;(define_insn "*movdfcc_insn" ; [(set (match_operand:DF 0 "register_operand" "=r,r") -; (if_then_else (match_operand 1 "comparison_operator" "") -; (match_operand:DF 2 "nonmemory_operand" "r,E") -; (match_operand:DF 3 "register_operand" "0,0")))] +; (if_then_else:DF (match_operand 1 "comparison_operator" "") +; (match_operand:DF 2 "nonmemory_operand" "r,E") +; (match_operand:DF 3 "register_operand" "0,0")))] ; "0" ; "* ;{ |