aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/vax/builtins.md12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/config/vax/builtins.md b/gcc/config/vax/builtins.md
index ac0e027..6bce7a8 100644
--- a/gcc/config/vax/builtins.md
+++ b/gcc/config/vax/builtins.md
@@ -31,8 +31,12 @@
"
{
rtx label = gen_label_rtx ();
+ rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, label);
+ rtx cond = gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx);
+ rtx target = gen_rtx_IF_THEN_ELSE (VOIDmode, cond, label_ref, pc_rtx);
+
emit_insn (gen_ffssi2_internal (operands[0], operands[1]));
- emit_jump_insn (gen_bne (label));
+ emit_jump_insn (gen_rtx_SET (pc_rtx, target));
emit_insn (gen_negsi2 (operands[0], const1_rtx));
emit_label (label);
emit_insn (gen_addsi3 (operands[0], operands[0], const1_rtx));
@@ -41,8 +45,10 @@
(define_insn "ffssi2_internal"
[(set (match_operand:SI 0 "nonimmediate_operand" "=rQ")
- (ffs:SI (match_operand:SI 1 "general_operand" "nrQt")))
- (set (cc0) (match_dup 0))]
+ (ffs:SI (match_operand:SI 1 "general_operand" "nrQT")))
+ (set (cc0)
+ (compare (match_dup 1)
+ (const_int 0)))]
""
"ffs $0,$32,%1,%0")