summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386-opts.h
diff options
context:
space:
mode:
authorZolotukhin Michael <michael.v.zolotukhin@gmail.com>2011-11-14 17:28:11 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2011-11-14 17:28:11 +0000
commit38877e985111f3a7434aa9583f0789bc157b2993 (patch)
treea056d217a6b6535a0003656585756c9e14fbf24c /gcc/config/i386/i386-opts.h
parentf8acdd3c52e497e7139cc19bfa99ca7ac3331850 (diff)
downloadgcc-38877e985111f3a7434aa9583f0789bc157b2993.tar.gz
sw-1.c: Force rep;movsb.
* gcc.target/i386/sw-1.c: Force rep;movsb. * config/i386/i386.h (processor_costs): Add second dimension to stringop_algs array. * config/i386/i386.c (cost models): Initialize second dimension of stringop_algs arrays. (core_cost): New costs based on generic64 costs with updated stringop values. (promote_duplicated_reg): Add support for vector modes, add declaration. (promote_duplicated_reg_to_size): Likewise. (processor_target): Set core costs for core variants. (expand_set_or_movmem_via_loop_with_iter): New function. (expand_set_or_movmem_via_loop): Enable reuse of the same iters in different loops, produced by this function. (emit_strset): New function. (expand_movmem_epilogue): Add epilogue generation for bigger sizes, use SSE-moves where possible. (expand_setmem_epilogue): Likewise. (expand_movmem_prologue): Likewise for prologue. (expand_setmem_prologue): Likewise. (expand_constant_movmem_prologue): Likewise. (expand_constant_setmem_prologue): Likewise. (decide_alg): Add new argument align_unknown. Fix algorithm of strategy selection if TARGET_INLINE_ALL_STRINGOPS is set; Skip sse_loop (decide_alignment): Update desired alignment according to chosen move mode. (ix86_expand_movmem): Change unrolled_loop strategy to use SSE-moves. (ix86_expand_setmem): Likewise. (ix86_slow_unaligned_access): Implementation of new hook slow_unaligned_access. * config/i386/i386.md (strset): Enable half-SSE moves. * config/i386/sse.md (vec_dupv4si): Add expand for vec_dupv4si. (vec_dupv2di): Add expand for vec_dupv2di. Co-Authored-By: Jan Hubicka <jh@suse.cz> From-SVN: r181357
Diffstat (limited to 'gcc/config/i386/i386-opts.h')
-rw-r--r--gcc/config/i386/i386-opts.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/i386/i386-opts.h b/gcc/config/i386/i386-opts.h
index 3cc2253c3c2..07f58b99e35 100644
--- a/gcc/config/i386/i386-opts.h
+++ b/gcc/config/i386/i386-opts.h
@@ -37,7 +37,8 @@ enum stringop_alg
rep_prefix_8_byte,
loop_1_byte,
loop,
- unrolled_loop
+ unrolled_loop,
+ sse_loop
};
/* Available call abi. */