diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-01-01 10:19:41 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-01-01 10:19:41 -0700 |
commit | c228001d20d13f429c9e485df25f3dcb29897078 (patch) | |
tree | 6c6288ccbfef7229a137734a49a27f4f464bb299 /gcc | |
parent | 7c522d5919c1941499fc2077f2d0cf5b069db67e (diff) | |
download | gcc-c228001d20d13f429c9e485df25f3dcb29897078.zip gcc-c228001d20d13f429c9e485df25f3dcb29897078.tar.gz gcc-c228001d20d13f429c9e485df25f3dcb29897078.tar.bz2 |
pa.md (movdf const_double): Fix lengths.
* pa.md (movdf const_double): Fix lengths.
(floatsisf patterns): Likewise.
(floatsidf patterns): Likewise.
From-SVN: r3042
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.md | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index c844850..bd629d5 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -1091,6 +1091,8 @@ ;; This pattern forces (set (reg:DF ...) (const_double ...)) ;; to be reloaded by putting the constant into memory. ;; It must come before the more general movdf pattern. +;; In the 3rd alternative case -- we know we will not be using a +;; general register, so we can be sure length is just 1. (define_insn "" [(set (match_operand:DF 0 "general_operand" "=?r,r,fx") (match_operand:DF 1 "" "?E,G,m"))] @@ -1108,7 +1110,7 @@ } }" [(set_attr "type" "load,move,fpload") - (set_attr "length" "3,2,3")]) + (set_attr "length" "3,2,1")]) (define_expand "movdf" [(set (match_operand:DF 0 "general_operand" "") @@ -1443,40 +1445,48 @@ ;; This pattern forces (set (reg:SF ...) (float:SF (const_int ...))) ;; to be reloaded by putting the constant into memory. ;; It must come before the more general floatsisf2 pattern. +;; Note length will always be 2 since we know we are loading +;; operand 1 from memory and the target is a FP register. (define_insn "" [(set (match_operand:SF 0 "general_operand" "=fx") (float:SF (match_operand:SI 1 "const_int_operand" "m")))] "" "* return output_floatsisf2 (operands);" [(set_attr "type" "fpalu") - (set_attr "length" "3")]) + (set_attr "length" "2")]) +;; Note length will always be 1 since we only allow FP registers +;; for the source and target. (define_insn "floatsisf2" [(set (match_operand:SF 0 "general_operand" "=fx") (float:SF (match_operand:SI 1 "register_operand" "fx")))] "" "* return output_floatsisf2 (operands);" [(set_attr "type" "fpalu") - (set_attr "length" "3")]) + (set_attr "length" "1")]) ;; This pattern forces (set (reg:DF ...) (float:DF (const_int ...))) ;; to be reloaded by putting the constant into memory. ;; It must come before the more general floatsidf2 pattern. +;; Note length will always be 2 since we know we are loading +;; operand 1 from memory and the target is a FP register. (define_insn "" [(set (match_operand:DF 0 "general_operand" "=fx") (float:DF (match_operand:SI 1 "const_int_operand" "m")))] "" "* return output_floatsidf2 (operands);" [(set_attr "type" "fpalu") - (set_attr "length" "3")]) + (set_attr "length" "2")]) +;; Note length will always be 1 since we only allow FP registers +;; for the source and target. (define_insn "floatsidf2" [(set (match_operand:DF 0 "general_operand" "=fx") (float:DF (match_operand:SI 1 "register_operand" "fx")))] "" "* return output_floatsidf2 (operands);" [(set_attr "type" "fpalu") - (set_attr "length" "3")]) + (set_attr "length" "1")]) ;; Convert a float to an actual integer. ;; Truncation is performed as part of the conversion. |