Commit 6fc19dc9 by Alan Modra Committed by Alan Modra

* config/rs6000/rs6000.md: Add TI constant splitter.

From-SVN: r63498
parent f50e2df2
2003-02-27 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.md: Add TI constant splitter.
2003-02-26 Alexandre Oliva <aoliva@redhat.com> 2003-02-26 Alexandre Oliva <aoliva@redhat.com>
* builtins.c (purge_builtin_constant_p): Handle subreg of * builtins.c (purge_builtin_constant_p): Handle subreg of
...@@ -333,6 +337,7 @@ Mon Feb 24 22:08:22 CET 2003 Jan Hubicka <jh@suse.cz> ...@@ -333,6 +337,7 @@ Mon Feb 24 22:08:22 CET 2003 Jan Hubicka <jh@suse.cz>
2003-02-24 Alan Modra <amodra@bigpond.net.au> 2003-02-24 Alan Modra <amodra@bigpond.net.au>
PR 9297, PR 9722
* calls.c (store_one_arg): Revert 1999-02-16 change. Revert * calls.c (store_one_arg): Revert 1999-02-16 change. Revert
2000-12-17 change. Pass EXPAND_STACK_PARM to expand_expr. 2000-12-17 change. Pass EXPAND_STACK_PARM to expand_expr.
* expr.h (enum expand_modifier): Define EXPAND_STACK_PARM. * expr.h (enum expand_modifier): Define EXPAND_STACK_PARM.
......
...@@ -8420,6 +8420,32 @@ ...@@ -8420,6 +8420,32 @@
operands[5] = GEN_INT (CONST_DOUBLE_LOW (operands[1])); operands[5] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
}") }")
(define_split
[(set (match_operand:TI 0 "gpc_reg_operand" "")
(match_operand:TI 1 "const_double_operand" ""))]
"TARGET_POWERPC64"
[(set (match_dup 2) (match_dup 4))
(set (match_dup 3) (match_dup 5))]
"
{
operands[2] = operand_subword_force (operands[0], WORDS_BIG_ENDIAN == 0,
TImode);
operands[3] = operand_subword_force (operands[0], WORDS_BIG_ENDIAN != 0,
TImode);
if (GET_CODE (operands[1]) == CONST_DOUBLE)
{
operands[4] = GEN_INT (CONST_DOUBLE_HIGH (operands[1]));
operands[5] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
}
else if (GET_CODE (operands[1]) == CONST_INT)
{
operands[4] = GEN_INT (- (INTVAL (operands[1]) < 0));
operands[5] = operands[1];
}
else
FAIL;
}")
(define_insn "*movdi_internal64" (define_insn "*movdi_internal64"
[(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,r,?f,f,m,r,*h,*h") [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,r,?f,f,m,r,*h,*h")
(match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,f,m,f,*h,r,0"))] (match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,f,m,f,*h,r,0"))]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment