Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/orc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2011-10-03 06:44:45 +0400
committerDavid Schleef <ds@schleef.org>2011-10-03 06:44:45 +0400
commite8267baff425821ee6366abe1d6a1a7ba8a25c45 (patch)
tree3eb67740c33e58ccaf0c2ad75af755b571b0102e
parentee163ec79b8c8d83e2d182e579f5e6b570beff71 (diff)
mmx: update from sse
-rw-r--r--orc/orcprogram-mmx.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/orc/orcprogram-mmx.c b/orc/orcprogram-mmx.c
index 021b726..c921b60 100644
--- a/orc/orcprogram-mmx.c
+++ b/orc/orcprogram-mmx.c
@@ -768,6 +768,7 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler)
int set_mxcsr = FALSE;
#endif
int align_var;
+ int is_aligned;
if (0 && orc_x86_assemble_copy_check (compiler)) {
/* The rep movs implementation isn't faster most of the time */
@@ -776,8 +777,7 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler)
}
align_var = get_align_var (compiler);
-
- compiler->vars[align_var].is_aligned = FALSE;
+ is_aligned = compiler->vars[align_var].is_aligned;
{
orc_mmx_emit_loop (compiler, 0, 0);
@@ -830,11 +830,11 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler)
compiler->program->constant_n <= ORC_MMX_ALIGNED_DEST_CUTOFF) {
/* don't need to load n */
} else if (compiler->loop_shift > 0) {
- if (!compiler->has_iterator_opcode) {
+ if (compiler->has_iterator_opcode || is_aligned) {
+ orc_emit_split_2_regions (compiler);
+ } else {
/* split n into three regions, with center region being aligned */
orc_emit_split_3_regions (compiler);
- } else {
- orc_emit_split_2_regions (compiler);
}
} else {
/* loop shift is 0, no need to split */
@@ -879,7 +879,7 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler)
int emit_region1 = TRUE;
int emit_region3 = TRUE;
- if (compiler->has_iterator_opcode) {
+ if (compiler->has_iterator_opcode || is_aligned) {
emit_region1 = FALSE;
}
if (compiler->loop_shift == 0) {