have ss3 etc. tests not be run (and thus fail) if env vars disable them.

SVN revision: 79231
This commit is contained in:
Carsten Haitzler 2012-11-13 14:06:28 +00:00
parent 5b8f3bb276
commit 630d662a3b
2 changed files with 72 additions and 44 deletions

View File

@ -163,54 +163,75 @@ evas_common_cpu_init(void)
if (called) return;
called = 1;
#ifdef BUILD_MMX
cpu_feature_mask |= CPU_FEATURE_MMX *
evas_common_cpu_feature_test(evas_common_cpu_mmx_test);
evas_common_cpu_end_opt();
if (getenv("EVAS_CPU_NO_MMX"))
cpu_feature_mask &= ~CPU_FEATURE_MMX;
cpu_feature_mask |= CPU_FEATURE_MMX2 *
evas_common_cpu_feature_test(evas_common_cpu_mmx2_test);
evas_common_cpu_end_opt();
else
{
cpu_feature_mask |= CPU_FEATURE_MMX *
evas_common_cpu_feature_test(evas_common_cpu_mmx_test);
evas_common_cpu_end_opt();
}
if (getenv("EVAS_CPU_NO_MMX2"))
cpu_feature_mask &= ~CPU_FEATURE_MMX2;
cpu_feature_mask |= CPU_FEATURE_SSE *
evas_common_cpu_feature_test(evas_common_cpu_sse_test);
evas_common_cpu_end_opt();
else
{
cpu_feature_mask |= CPU_FEATURE_MMX2 *
evas_common_cpu_feature_test(evas_common_cpu_mmx2_test);
evas_common_cpu_end_opt();
}
if (getenv("EVAS_CPU_NO_SSE"))
cpu_feature_mask &= ~CPU_FEATURE_SSE;
else
{
cpu_feature_mask |= CPU_FEATURE_SSE *
evas_common_cpu_feature_test(evas_common_cpu_sse_test);
evas_common_cpu_end_opt();
}
# ifdef BUILD_SSE3
cpu_feature_mask |= CPU_FEATURE_SSE3 *
evas_common_cpu_feature_test(evas_common_cpu_sse3_test);
evas_common_cpu_end_opt();
if (getenv("EVAS_CPU_NO_SSE3"))
cpu_feature_mask &= ~CPU_FEATURE_SSE3;
else
{
cpu_feature_mask |= CPU_FEATURE_SSE3 *
evas_common_cpu_feature_test(evas_common_cpu_sse3_test);
evas_common_cpu_end_opt();
}
# endif /* BUILD_SSE3 */
#endif /* BUILD_MMX */
#ifdef BUILD_ALTIVEC
# ifdef __POWERPC__
# ifdef __VEC__
cpu_feature_mask |= CPU_FEATURE_ALTIVEC *
evas_common_cpu_feature_test(evas_common_cpu_altivec_test);
evas_common_cpu_end_opt();
if (getenv("EVAS_CPU_NO_ALTIVEC"))
cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC;
else
{
cpu_feature_mask |= CPU_FEATURE_ALTIVEC *
evas_common_cpu_feature_test(evas_common_cpu_altivec_test);
evas_common_cpu_end_opt();
}
# endif /* __VEC__ */
# endif /* __POWERPC__ */
#endif /* BUILD_ALTIVEC */
#ifdef __SPARC__
cpu_feature_mask |= CPU_FEATURE_VIS *
evas_common_cpu_feature_test(evas_common_cpu_vis_test);
evas_common_cpu_end_opt();
if (getenv("EVAS_CPU_NO_VIS"))
cpu_feature_mask &= ~CPU_FEATURE_VIS;
else
{
cpu_feature_mask |= CPU_FEATURE_VIS *
evas_common_cpu_feature_test(evas_common_cpu_vis_test);
evas_common_cpu_end_opt();
}
#endif /* __SPARC__ */
#if defined(__ARM_ARCH__)
# ifdef BUILD_NEON
cpu_feature_mask |= CPU_FEATURE_NEON *
evas_common_cpu_feature_test(evas_common_cpu_neon_test);
evas_common_cpu_end_opt();
if (getenv("EVAS_CPU_NO_NEON"))
cpu_feature_mask &= ~CPU_FEATURE_NEON;
else
{
cpu_feature_mask |= CPU_FEATURE_NEON *
evas_common_cpu_feature_test(evas_common_cpu_neon_test);
evas_common_cpu_end_opt();
}
# endif
#endif
}

View File

@ -101,33 +101,40 @@ op_blend_init(void)
memset(op_blend_span_funcs, 0, sizeof(op_blend_span_funcs));
memset(op_blend_pt_funcs, 0, sizeof(op_blend_pt_funcs));
#ifdef BUILD_SSE3
evas_common_op_blend_init_sse3();
if (evas_common_cpu_has_feature(CPU_FEATURE_SSE3))
evas_common_op_blend_init_sse3();
#endif
#ifdef BUILD_MMX
init_blend_pixel_span_funcs_mmx();
init_blend_pixel_color_span_funcs_mmx();
init_blend_pixel_mask_span_funcs_mmx();
init_blend_color_span_funcs_mmx();
init_blend_mask_color_span_funcs_mmx();
init_blend_pixel_pt_funcs_mmx();
init_blend_pixel_color_pt_funcs_mmx();
init_blend_pixel_mask_pt_funcs_mmx();
init_blend_color_pt_funcs_mmx();
init_blend_mask_color_pt_funcs_mmx();
if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
{
init_blend_pixel_span_funcs_mmx();
init_blend_pixel_color_span_funcs_mmx();
init_blend_pixel_mask_span_funcs_mmx();
init_blend_color_span_funcs_mmx();
init_blend_mask_color_span_funcs_mmx();
init_blend_pixel_pt_funcs_mmx();
init_blend_pixel_color_pt_funcs_mmx();
init_blend_pixel_mask_pt_funcs_mmx();
init_blend_color_pt_funcs_mmx();
init_blend_mask_color_pt_funcs_mmx();
}
#endif
#ifdef BUILD_NEON
init_blend_pixel_span_funcs_neon();
init_blend_pixel_color_span_funcs_neon();
init_blend_pixel_mask_span_funcs_neon();
init_blend_color_span_funcs_neon();
init_blend_mask_color_span_funcs_neon();
init_blend_pixel_pt_funcs_neon();
init_blend_pixel_color_pt_funcs_neon();
init_blend_pixel_mask_pt_funcs_neon();
init_blend_color_pt_funcs_neon();
init_blend_mask_color_pt_funcs_neon();
if (evas_common_cpu_has_feature(CPU_FEATURE_NEON))
{
init_blend_pixel_span_funcs_neon();
init_blend_pixel_color_span_funcs_neon();
init_blend_pixel_mask_span_funcs_neon();
init_blend_color_span_funcs_neon();
init_blend_mask_color_span_funcs_neon();
init_blend_pixel_pt_funcs_neon();
init_blend_pixel_color_pt_funcs_neon();
init_blend_pixel_mask_pt_funcs_neon();
init_blend_color_pt_funcs_neon();
init_blend_mask_color_pt_funcs_neon();
}
#endif
init_blend_pixel_span_funcs_c();
init_blend_pixel_color_span_funcs_c();