void load_model(const std::string &model_json){ #ifndef USE_DFT_ALGORITHM if(test_fma()){ if(test_avx2()){ // FMA + AVX2 m_impl.reset(new waifu2x::AVXImpl<true, true>()); }else{ // FMA + AVX m_impl.reset(new waifu2x::AVXImpl<true, false>()); } }else if(test_avx()){ // AVX m_impl.reset(new waifu2x::AVXImpl<false, false>()); }else{ assert(!"Unsupported CPU"); } #else if(test_fma()){ m_impl.reset(new waifu2x::DFTAVXImpl<true>()); }else if(test_avx()){ m_impl.reset(new waifu2x::DFTAVXImpl<false>()); }else{ assert(!"Unsupported CPU"); } #endif const waifu2x::Model model(model_json); m_num_steps = static_cast<int>(model.num_steps()); m_impl->prepare(model); m_impl->set_num_threads(m_num_threads); m_impl->set_block_size(m_block_width, m_block_height); }
int fp_test(int, char**) { test_mad(); #ifdef __ARM_NEON__ test_fma(); #endif return 0; }
int main() { test_acos(); test_asin(); test_atan(); test_atan2(); test_ceil(); test_cos(); test_cosh(); test_exp(); test_fabs(); test_floor(); test_fmod(); test_frexp(); test_ldexp(); test_log(); test_log10(); test_modf(); test_pow(); test_sin(); test_sinh(); test_sqrt(); test_tan(); test_tanh(); test_signbit(); test_fpclassify(); test_isfinite(); test_isinf(); test_isnan(); test_isnormal(); test_isgreater(); test_isgreaterequal(); test_isless(); test_islessequal(); test_islessgreater(); test_isunordered(); test_acosh(); test_asinh(); test_atanh(); test_cbrt(); test_copysign(); test_erf(); test_erfc(); test_exp2(); test_expm1(); test_fdim(); test_fma(); test_fmax(); test_fmin(); test_hypot(); test_ilogb(); test_lgamma(); test_llrint(); test_llround(); test_log1p(); test_log2(); test_logb(); test_lrint(); test_lround(); test_nan(); test_nearbyint(); test_nextafter(); test_nexttoward(); test_remainder(); test_remquo(); test_rint(); test_round(); test_scalbln(); test_scalbn(); test_tgamma(); test_trunc(); }