OSDN Git Service

*** empty log message ***
authorjrv <jrv@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Apr 1992 08:24:37 +0000 (08:24 +0000)
committerjrv <jrv@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Apr 1992 08:24:37 +0000 (08:24 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@687 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 14a9428..0770422 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 c345fc9..52e13eb 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;
 {