aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>1996-02-19 22:45:01 +0000
committerDavid Edelsohn <edelsohn@gnu.org>1996-02-19 22:45:01 +0000
commitefc0837850ac9a7ad8b7b82857fda2766e4a6bda (patch)
treed9c7f3d2ffbd6b6419730aa6a30a18eeafccacf4 /gcc
parent042259f23ad6239cd33fc4989f4d0d1dc9d45e76 (diff)
downloadgcc-efc0837850ac9a7ad8b7b82857fda2766e4a6bda.zip
gcc-efc0837850ac9a7ad8b7b82857fda2766e4a6bda.tar.gz
gcc-efc0837850ac9a7ad8b7b82857fda2766e4a6bda.tar.bz2
update movdf and movsf splits for 64-bits
From-SVN: r11310
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md15
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 3b41a78..76891ae 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5102,10 +5102,8 @@
[(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")
@@ -5172,7 +5170,7 @@
(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))]
"
@@ -5181,6 +5179,13 @@
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