* config/mips/mips.md (UNSPEC_MOVE_TF_PS): New.
* config/mips/mips-ps-3d.md (mips_cond_move_tf_ps): Express as an
UNSPEC rather than an IF_THEN_ELSE.
* config/mips/mips.c (mips_expand_ps_cond_move_builtin): Emit
mips_cond_move_tf_ps by name.
From-SVN: r86714
+2004-08-29 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.md (UNSPEC_MOVE_TF_PS): New.
+ * config/mips/mips-ps-3d.md (mips_cond_move_tf_ps): Express as an
+ UNSPEC rather than an IF_THEN_ELSE.
+ * config/mips/mips.c (mips_expand_ps_cond_move_builtin): Emit
+ mips_cond_move_tf_ps by name.
+
2004-08-29 Chao-ying Fu <fu@mips.com>
James E Wilson <wilson@specifixinc.com>
(define_insn "mips_cond_move_tf_ps"
[(set (match_operand:V2SF 0 "register_operand" "=f,f")
- (if_then_else:V2SF
- (eq:CCV2 (match_operand:CCV2 3 "register_operand" "z,z") (const_int 0))
- (match_operand:V2SF 1 "register_operand" "f,0")
- (match_operand:V2SF 2 "register_operand" "0,f")))]
+ (unspec:V2SF [(match_operand:V2SF 1 "register_operand" "f,0")
+ (match_operand:V2SF 2 "register_operand" "0,f")
+ (match_operand:CCV2 3 "register_operand" "z,z")]
+ UNSPEC_MOVE_TF_PS))]
"TARGET_PAIRED_SINGLE_FLOAT"
"@
movt.ps\t%0,%1,%y3
enum machine_mode mode0;
enum machine_mode mode1;
rtx temp_target;
- rtx if_then_else;
+ rtx src1;
+ rtx src2;
enum rtx_code test_code;
int compare_value;
switch (cmp_choice)
{
case MIPS_CMP_MOVT:
- if_then_else
- = gen_rtx_IF_THEN_ELSE (tmode,
- gen_rtx_fmt_ee (test_code, CCV2mode,
- temp_target,
- GEN_INT (compare_value)),
- op3, target);
+ src1 = op3;
+ src2 = target;
break;
case MIPS_CMP_MOVF:
- if_then_else
- = gen_rtx_IF_THEN_ELSE (tmode,
- gen_rtx_fmt_ee (test_code, CCV2mode,
- temp_target,
- GEN_INT (compare_value)),
- target, op3);
+ src1 = target;
+ src2 = op3;
break;
default:
return 0;
}
- emit_insn (gen_rtx_SET (VOIDmode, target, if_then_else));
+ emit_insn (gen_mips_cond_move_tf_ps (target, src1, src2, temp_target));
return target;
}
(UNSPEC_RSQRT2_D 248)
(UNSPEC_RSQRT2_PS 249)
+ (UNSPEC_MOVE_TF_PS 250)
]
)