*** empty log message ***
authorJames Van Artsdalen <jrv@gnu.org>
Sun, 5 Apr 1992 08:24:37 +0000 (08:24 +0000)
committerJames Van Artsdalen <jrv@gnu.org>
Sun, 5 Apr 1992 08:24:37 +0000 (08:24 +0000)
From-SVN: r687

gcc/config/i386/i386.md
gcc/optabs.c

index 14a9428f2001039d81d2056fec67857cb3fe1028..0770422d1bd480e5e31c998133998236ed0c1fc3 100644 (file)
              (use (match_operand:SI 4 "immediate_operand" ""))
              (clobber (match_dup 1))
              (clobber (match_dup 2))
-             (clobber (match_dup 3))])]
+             (clobber (match_dup 3))
+             (clobber (match_scratch:SI 5 ""))])]
   ""
   "
 {
    (use (match_operand:SI 4 "immediate_operand" "i"))
    (clobber (match_dup 1))
    (clobber (match_dup 2))
-   (clobber (match_dup 3))]
+   (clobber (match_dup 3))
+   (clobber (match_scratch:SI 5 "=&r"))]
   ""
   "*
 {
-  rtx xops[3];
+  rtx xops[3], label;
+
+  label = gen_label_rtx ();
 
+  output_asm_insn (AS2 (xor%B0,%0,%0), operands);
   output_asm_insn (\"repz\;cmps%B2\", operands);
+  output_asm_insn (\"je %l0\", &label);
 
   xops[0] = operands[0];
   xops[1] = gen_rtx (MEM, QImode,
 
   output_asm_insn (AS2 (mov%B0,%1,%b0), xops);
   output_asm_insn (AS2 (sub%B0,%2,%b0), xops);
+  ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", CODE_LABEL_NUMBER (label));
   RET;
 }")
 
    (use (match_operand:SI 3 "immediate_operand" "i"))
    (clobber (match_dup 0))
    (clobber (match_dup 1))
-   (clobber (match_dup 2))]
+   (clobber (match_dup 2))
+   (clobber (match_scratch:SI 4 "=&r"))]
   ""
-  "repz\;cmps%B2")
+  "*
+{
+  output_asm_insn (AS2 (xor%L4,%4,%4), operands);
+  return \"repz\;cmps%B2\";
+}")
 
 (define_expand "ffssi2"
   [(set (match_dup 2)
index c345fc9d294fd8b2d9ae6033e17b39a37f4ffdd8..52e13eb4c725cfdc45b5e60552f4aceae45a5e03 100644 (file)
@@ -1428,6 +1428,7 @@ emit_cmp_insn (x, y, comparison, size, mode, unsignedp, align)
      rtx x, y;
      enum rtx_code comparison;
      rtx size;
+     enum machine_mode mode;
      int unsignedp;
      int align;
 {