update movdf and movsf splits for 64-bits
authorDavid Edelsohn <edelsohn@gnu.org>
Mon, 19 Feb 1996 22:45:01 +0000 (22:45 +0000)
committerDavid Edelsohn <edelsohn@gnu.org>
Mon, 19 Feb 1996 22:45:01 +0000 (22:45 +0000)
From-SVN: r11310

gcc/config/rs6000/rs6000.md

index 3b41a78..76891ae 100644 (file)
   [(set (match_operand:SF 0 "gpc_reg_operand" "")
        (match_operand:SF 1 "easy_fp_constant" ""))]
   "reload_completed && REGNO (operands[0]) <= 31"
-  [(set (match_dup 2) (match_dup 3))]
-  "
-{ operands[2] = operand_subword (operands[0], 0, 0, SFmode);
-  operands[3] = operand_subword (operands[1], 0, 0, SFmode); }")
+  [(set (subreg:SI (match_dup 0) 0) (subreg:SI (match_dup 1) 0))]
+  ""
 
 (define_insn ""
   [(set (match_operand:SF 0 "fp_reg_or_mem_operand" "=f,f,m")
 (define_split
   [(set (match_operand:DF 0 "gpc_reg_operand" "")
        (match_operand:DF 1 "easy_fp_constant" ""))]
-  "reload_completed && REGNO (operands[0]) <= 31"
+  "TARGET_32BIT && reload_completed && REGNO (operands[0]) <= 31"
   [(set (match_dup 2) (match_dup 3))
    (set (match_dup 4) (match_dup 5))]
   "
   operands[4] = operand_subword (operands[0], 1, 0, DFmode);
   operands[5] = operand_subword (operands[1], 1, 0, DFmode); }")
 
+(define_split
+  [(set (match_operand:DF 0 "gpc_reg_operand" "")
+        (match_operand:DF 1 "easy_fp_constant" ""))]
+  "TARGET_64BIT && reload_completed && REGNO (operands[0]) <= 31"
+  [(set (subreg:DI (match_dup 0) 0) (subreg:DI (match_dup 1) 0))]
+  "")
+
 ;; Don't have reload use general registers to load a constant.  First,
 ;; it might not work if the output operand has is the equivalent of
 ;; a non-offsettable memref, but also it is less efficient than loading