Commit 79f05c19 by Jan Hubicka Committed by Jan Hubicka

i386.md (movstrsi, clrstrsi): Support variable sized copies, align destination when needed.

	* i386.md (movstrsi, clrstrsi): Support variable sized copies, align
	destination when needed.
	(strmovsi, strsetsi): New expander.
	(strmovsi_1, strsetsi_1): New pattern.
	* i386.h (MASK_NO_ALIGN_STROP, MASK_INLINE_ALL_STROP,
	TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS): New macros.
	(TARGET_SWITCHES) Add align-stringops and inline-all-stringops.
	* invoke.texi (align-stringops, inline-all-stringops): Document.

From-SVN: r31773
parent 31a72d3f
Thu Feb 3 15:08:13 MET 2000 Jan Hubicka <jh@suse.cz>
* i386.md (movstrsi, clrstrsi): Support variable sized copies, align
destination when needed.
(strmovsi, strsetsi): New expander.
(strmovsi_1, strsetsi_1): New pattern.
* i386.h (MASK_NO_ALIGN_STROP, MASK_INLINE_ALL_STROP,
TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS): New macros.
(TARGET_SWITCHES) Add align-stringops and inline-all-stringops.
* invoke.texi (align-stringops, inline-all-stringops): Document.
Wed Feb 2 23:04:47 2000 Krister Walfridsson <cato@df.lth.se>
* i386/netbsd.h (INT_ASM_OP): Define.
......
......@@ -101,6 +101,8 @@ extern int target_flags;
#define MASK_NO_FANCY_MATH_387 0x00000040 /* Disable sin, cos, sqrt */
#define MASK_OMIT_LEAF_FRAME_POINTER 0x080 /* omit leaf frame pointers */
#define MASK_STACK_PROBE 0x00000100 /* Enable stack probing */
#define MASK_NO_ALIGN_STROPS 0x00001000 /* Enable aligning of string ops. */
#define MASK_INLINE_ALL_STROPS 0x00002000 /* Inline stringops in all cases */
/* Temporary codegen switches */
#define MASK_INTEL_SYNTAX 0x00000200
......@@ -190,6 +192,9 @@ extern const int x86_promote_QImode, x86_single_stringop;
#define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)
#define TARGET_ALIGN_STRINGOPS (!(target_flags & MASK_NO_ALIGN_STROPS))
#define TARGET_INLINE_ALL_STRINGOPS (target_flags & MASK_INLINE_ALL_STROPS)
#define ASSEMBLER_DIALECT ((target_flags & MASK_INTEL_SYNTAX) != 0)
#define TARGET_SWITCHES \
......@@ -238,6 +243,14 @@ extern const int x86_promote_QImode, x86_single_stringop;
{ "intel-syntax", MASK_INTEL_SYNTAX, \
"Emit Intel syntax assembler opcodes" }, \
{ "no-intel-syntax", -MASK_INTEL_SYNTAX, "" }, \
{ "align-stringops", -MASK_NO_ALIGN_STROPS, \
"Align destination of the string operations" }, \
{ "no-align-stringops", MASK_NO_ALIGN_STROPS, \
"Do not align destination of the string operations" }, \
{ "inline-all-strinops", MASK_INLINE_ALL_STROPS, \
"Inline all known string operations" }, \
{ "no-inline-all-stringops", -MASK_INLINE_ALL_STROPS, \
"Do not inline all known string operations" }, \
SUBTARGET_SWITCHES \
{ "", TARGET_DEFAULT, 0 }}
......
......@@ -360,7 +360,7 @@ in the following sections.
-mreg-alloc=@var{list} -mregparm=@var{num}
-malign-jumps=@var{num} -malign-loops=@var{num}
-malign-functions=@var{num} -mpreferred-stack-boundary=@var{num}
-mthreads
-mthreads -mno-align-stringops -minline-all-stringops
@emph{HPPA Options}
-march=@var{architecture type}
......@@ -5954,6 +5954,19 @@ on thread-safe exception handling must compile and link all code with the
@samp{-mthreads} option. When compiling, @samp{-mthreads} defines
@samp{-D_MT}; when linking, it links in a special thread helper library
@samp{-lmingwthrd} which cleans up per thread exception handling data.
@item -mno-align-stringops
@kindex -mno-align-stringops
Do not align destination of inlined string operations. This switch reduces
code size and improves performance in case the destination is already aligned,
but gcc don't know about it.
@item -minline-all-stringops
@kindex -minline-all-stringops
By default GCC inlines string operations only when destination is known to be
aligned at least to 4 byte boundary. This enables more inlining, increase code
size, but may improve performance of code that depends on fast memcpy, strlen
and memset for short lengths.
@end table
@node HPPA Options
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment