]> git.pld-linux.org Git - packages/gcc.git/commitdiff
- merged into 4.3.1-rc1.
authorPaweł Sikora <pluto@pld-linux.org>
Mon, 26 May 2008 12:26:03 +0000 (12:26 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gcc-explicit_cld.patch -> 1.2

gcc-explicit_cld.patch [deleted file]

diff --git a/gcc-explicit_cld.patch b/gcc-explicit_cld.patch
deleted file mode 100644 (file)
index 7d3a25c..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-This patch adds back generation of cld instructions when stringops are
-used in the function. cld insn is emitted as unspec volatile at the
-end of function prologue. Currently, patched gcc emits cld when
-"-mcld" is added to compile flags.
-
-2008-03-06  Uros Bizjak  <ubizjak@gmail.com>
-
-       * config/i386/i386.h (TARGET_CLD): New define.
-       (struct machine_function): Add needs_cld field.
-       (ix86_current_function_needs_cld): New define.
-       * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
-       ("cld"): New isns pattern.
-       ("strmov_singleop"): Set ix86_current_function_needs_cld flag.
-       ("rep_mov"): Ditto.
-       ("strset_singleop"): Ditto.
-       ("rep_stos"): Ditto.
-       ("cmpstrnqi_nz_1"): Ditto.
-       ("cmpstrnqi_1"): Ditto.
-       ("strlenqi_1"): Ditto.
-       * config/i386/i386.opt (mcld): New option.
-       * config/i386/i386.c (ix86_expand_prologue): Emit cld insn for
-       TARGET_CLD when ix86_current_function_needs_cld is set.
-
-Index: gcc/config/i386/i386.h
-===================================================================
---- gcc/config/i386/i386.h     (revision 132966)
-+++ gcc/config/i386/i386.h     (working copy)
-@@ -388,6 +388,7 @@ extern unsigned int ix86_arch_features[X
- extern int x86_prefetch_sse;
-+#define TARGET_CLD            x86_cld
- #define TARGET_ABM            x86_abm
- #define TARGET_CMPXCHG16B     x86_cmpxchg16b
- #define TARGET_POPCNT         x86_popcnt
-@@ -2446,8 +2447,9 @@ struct machine_function GTY(())
-   int save_varrargs_registers;
-   int accesses_prev_frame;
-   int optimize_mode_switching[MAX_386_ENTITIES];
--  /* Set by ix86_compute_frame_layout and used by prologue/epilogue expander to
--     determine the style used.  */
-+  int needs_cld;
-+  /* Set by ix86_compute_frame_layout and used by prologue/epilogue
-+     expander to determine the style used.  */
-   int use_fast_prologue_epilogue;
-   /* Number of saved registers USE_FAST_PROLOGUE_EPILOGUE has been computed
-      for.  */
-@@ -2467,6 +2469,7 @@ struct machine_function GTY(())
- #define ix86_stack_locals (cfun->machine->stack_locals)
- #define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers)
- #define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching)
-+#define ix86_current_function_needs_cld (cfun->machine->needs_cld)
- #define ix86_tls_descriptor_calls_expanded_in_cfun \
-   (cfun->machine->tls_descriptor_call_expanded_p)
- /* Since tls_descriptor_call_expanded is not cleared, even if all TLS
-Index: gcc/config/i386/i386.md
-===================================================================
---- gcc/config/i386/i386.md    (revision 132966)
-+++ gcc/config/i386/i386.md    (working copy)
-@@ -205,6 +205,7 @@
-    (UNSPECV_XCHG              12)
-    (UNSPECV_LOCK              13)
-    (UNSPECV_PROLOGUE_USE      14)
-+   (UNSPECV_CLD                       15)
-   ])
- ;; Constants to represent pcomtrue/pcomfalse variants
-@@ -18519,6 +18520,14 @@
\f
- ;; Block operation instructions
-+(define_insn "cld"
-+  [(unspec_volatile [(const_int 0)] UNSPECV_CLD)]
-+  ""
-+  "cld"
-+  [(set_attr "length" "1")
-+   (set_attr "length_immediate" "0")
-+   (set_attr "modrm" "0")])
-+
- (define_expand "movmemsi"
-   [(use (match_operand:BLK 0 "memory_operand" ""))
-    (use (match_operand:BLK 1 "memory_operand" ""))
-@@ -18591,7 +18600,7 @@
-             (set (match_operand 2 "register_operand" "")
-                  (match_operand 5 "" ""))])]
-   "TARGET_SINGLE_STRINGOP || optimize_size"
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*strmovdi_rex_1"
-   [(set (mem:DI (match_operand:DI 2 "register_operand" "0"))
-@@ -18708,7 +18717,7 @@
-                  (match_operand 3 "memory_operand" ""))
-             (use (match_dup 4))])]
-   ""
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*rep_movdi_rex64"
-   [(set (match_operand:DI 2 "register_operand" "=c") (const_int 0))
-@@ -18868,7 +18877,7 @@
-             (set (match_operand 0 "register_operand" "")
-                  (match_operand 3 "" ""))])]
-   "TARGET_SINGLE_STRINGOP || optimize_size"
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*strsetdi_rex_1"
-   [(set (mem:DI (match_operand:DI 1 "register_operand" "0"))
-@@ -18962,7 +18971,7 @@
-             (use (match_operand 3 "register_operand" ""))
-             (use (match_dup 1))])]
-   ""
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*rep_stosdi_rex64"
-   [(set (match_operand:DI 1 "register_operand" "=c") (const_int 0))
-@@ -19138,7 +19147,7 @@
-             (clobber (match_operand 1 "register_operand" ""))
-             (clobber (match_dup 2))])]
-   ""
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*cmpstrnqi_nz_1"
-   [(set (reg:CC FLAGS_REG)
-@@ -19185,7 +19194,7 @@
-             (clobber (match_operand 1 "register_operand" ""))
-             (clobber (match_dup 2))])]
-   ""
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*cmpstrnqi_1"
-   [(set (reg:CC FLAGS_REG)
-@@ -19254,7 +19263,7 @@
-             (clobber (match_operand 1 "register_operand" ""))
-             (clobber (reg:CC FLAGS_REG))])]
-   ""
--  "")
-+  "ix86_current_function_needs_cld = 1;")
- (define_insn "*strlenqi_1"
-   [(set (match_operand:SI 0 "register_operand" "=&c")
-Index: gcc/config/i386/i386.opt
-===================================================================
---- gcc/config/i386/i386.opt   (revision 132966)
-+++ gcc/config/i386/i386.opt   (working copy)
-@@ -250,6 +250,10 @@ Support SSE5 built-in functions and code
- ;; Instruction support
-+mcld
-+Target Report RejectNegative Var(x86_cld)
-+Generate cld instruction in the function prologue.
-+
- mabm
- Target Report RejectNegative Var(x86_abm)
- Support code generation of Advanced Bit Manipulation (ABM) instructions.
-Index: gcc/config/i386/i386.c
-===================================================================
---- gcc/config/i386/i386.c     (revision 132966)
-+++ gcc/config/i386/i386.c     (working copy)
-@@ -6498,6 +6498,10 @@ ix86_expand_prologue (void)
-       emit_insn (gen_prologue_use (pic_offset_table_rtx));
-       emit_insn (gen_blockage ());
-     }
-+
-+  /* Emit cld instruction if stringops are used in the function.  */
-+  if (TARGET_CLD && ix86_current_function_needs_cld)
-+    emit_insn (gen_cld ());
- }
- /* Emit code to restore saved registers using MOV insns.  First register
This page took 0.230072 seconds and 4 git commands to generate.