i386.md (movdicc+3, movdicc+4): Rewrite using split_di.
* i386.md (movdicc+3, movdicc+4): Rewrite using split_di. * i386.c (output_int_conditional_move): Delete unused code. From-SVN: r26026
This commit is contained in:
parent
b9ae34718a
commit
94b596a711
@ -1,3 +1,8 @@
|
||||
Sat Mar 27 23:37:40 EST 1999 John Wehle (john@feith.com)
|
||||
|
||||
* i386.md (movdicc+3, movdicc+4): Rewrite using split_di.
|
||||
* i386.c (output_int_conditional_move): Delete unused code.
|
||||
|
||||
Sat Mar 27 21:17:36 1999 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* rs6000/{aix41.h,aix43.h} (ASM_CPU_SPEC): Add 604e.
|
||||
|
@ -5517,8 +5517,6 @@ output_int_conditional_move (which_alternative, operands)
|
||||
rtx operands[];
|
||||
{
|
||||
int code = GET_CODE (operands[1]);
|
||||
enum machine_mode mode;
|
||||
rtx xops[4];
|
||||
|
||||
/* This is very tricky. We have to do it right. For a code segement
|
||||
like:
|
||||
@ -5538,29 +5536,16 @@ output_int_conditional_move (which_alternative, operands)
|
||||
&& (cc_prev_status.flags & CC_NO_OVERFLOW))
|
||||
return NULL_PTR;
|
||||
|
||||
mode = GET_MODE (operands [0]);
|
||||
if (mode == DImode)
|
||||
{
|
||||
xops [0] = gen_rtx_SUBREG (SImode, operands [0], 1);
|
||||
xops [1] = operands [1];
|
||||
xops [2] = gen_rtx_SUBREG (SImode, operands [2], 1);
|
||||
xops [3] = gen_rtx_SUBREG (SImode, operands [3], 1);
|
||||
}
|
||||
|
||||
switch (which_alternative)
|
||||
{
|
||||
case 0:
|
||||
/* r <- cond ? arg : r */
|
||||
output_asm_insn (AS2 (cmov%C1,%2,%0), operands);
|
||||
if (mode == DImode)
|
||||
output_asm_insn (AS2 (cmov%C1,%2,%0), xops);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
/* r <- cond ? r : arg */
|
||||
output_asm_insn (AS2 (cmov%c1,%3,%0), operands);
|
||||
if (mode == DImode)
|
||||
output_asm_insn (AS2 (cmov%c1,%3,%0), xops);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -7840,10 +7840,15 @@ byte_xor_operation:
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
(set (match_dup 0)
|
||||
(if_then_else:DI (match_op_dup 1 [(cc0) (const_int 0)])
|
||||
(match_dup 3) (match_dup 4)))]
|
||||
"")
|
||||
(set (match_dup 5)
|
||||
(if_then_else:SI (match_op_dup 1 [(cc0) (const_int 0)])
|
||||
(match_dup 7) (match_dup 9)))
|
||||
(set (match_dup 6)
|
||||
(if_then_else:SI (match_op_dup 1 [(cc0) (const_int 0)])
|
||||
(match_dup 8) (match_dup 10)))]
|
||||
"split_di (&operands[0], 1, &operands[5], &operands[6]);
|
||||
split_di (&operands[3], 1, &operands[7], &operands[8]);
|
||||
split_di (&operands[4], 1, &operands[9], &operands[10]);")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r")
|
||||
@ -7854,19 +7859,15 @@ byte_xor_operation:
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,ro")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0) (compare (match_dup 2) (match_dup 3)))
|
||||
(set (match_dup 0)
|
||||
(if_then_else:DI (match_op_dup 1 [(cc0) (const_int 0)])
|
||||
(match_dup 4) (match_dup 5)))]
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r")
|
||||
(if_then_else:DI (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:DI 2 "nonimmediate_operand" "ro,0")
|
||||
(match_operand:DI 3 "nonimmediate_operand" "0,ro")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_int_conditional_move (which_alternative, operands);")
|
||||
(set (match_dup 6)
|
||||
(if_then_else:SI (match_op_dup 1 [(cc0) (const_int 0)])
|
||||
(match_dup 8) (match_dup 10)))
|
||||
(set (match_dup 7)
|
||||
(if_then_else:SI (match_op_dup 1 [(cc0) (const_int 0)])
|
||||
(match_dup 9) (match_dup 11)))]
|
||||
"split_di (&operands[0], 1, &operands[6], &operands[7]);
|
||||
split_di (&operands[4], 1, &operands[8], &operands[9]);
|
||||
split_di (&operands[5], 1, &operands[10], &operands[11]);")
|
||||
|
||||
(define_insn "strlensi_unroll"
|
||||
[(set (match_operand:SI 0 "register_operand" "=&r,&r")
|
||||
|
Loading…
Reference in New Issue
Block a user