EleonoreMizo / fmtconv

Format conversion tools for Vapoursynth and Avisynth+
Do What The F*ck You Want To Public License
67 stars 14 forks source link

Fails to build on non-x86 architectures #8

Closed jbeich closed 4 years ago

jbeich commented 7 years ago

Ignoring warnings about unused _sse2_flag or _avx2_flag for now building on aarch64 fails with the following.

../../src/fmtcl/MatrixProc.cpp:66:3: error: initializer '_coef_simd_arr' does not name a non-static
      data member or base class; did you mean the member '_coef_int_arr'?
,       _coef_simd_arr ()
        ^~~~~~~~~~~~~~
        _coef_int_arr
./../../src/fmtcl/MatrixProc.h:134:17: note: '_coef_int_arr' declared here
                       _coef_int_arr;
                       ^
../../src/fmtcl/MatrixProc.cpp:66:3: error: multiple initializations given for non-static member
      '_coef_int_arr'
,       _coef_simd_arr ()
        ^~~~~~~~~~~~~~~~~
../../src/fmtcl/MatrixProc.cpp:65:3: note: previous initialization is here
,       _coef_int_arr ()
        ^~~~~~~~~~~~~~~~
../../src/fmtcl/MatrixProc.cpp:362:18: error: out-of-line definition of 'setup_fnc_sse' does not
      match any declaration in 'fmtcl::MatrixProc'
void    MatrixProc::setup_fnc_sse (bool int_proc_flag, SplFmt src_fmt, int src_bits, SplFmt d...
                    ^~~~~~~~~~~~~
../../src/fmtcl/MatrixProc.cpp:368:17: error: no member named 'process_1_flt_sse' in
      'fmtcl::MatrixProc'; did you mean '::fmtcl::MatrixProc::process_1_flt_cpp'?
                        _proc_ptr = &ThisType::process_1_flt_sse;
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                     ::fmtcl::MatrixProc::process_1_flt_cpp
./../../src/fmtcl/MatrixProc.h:106:17: note: '::fmtcl::MatrixProc::process_1_flt_cpp' declared here
        void           process_1_flt_cpp (uint8_t * const dst_ptr_arr [NBR_PLANES], const in...
                       ^
../../src/fmtcl/MatrixProc.cpp:372:17: error: no member named 'process_3_flt_sse' in
      'fmtcl::MatrixProc'; did you mean '::fmtcl::MatrixProc::process_3_flt_cpp'?
                        _proc_ptr = &ThisType::process_3_flt_sse;
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                     ::fmtcl::MatrixProc::process_3_flt_cpp
./../../src/fmtcl/MatrixProc.h:105:17: note: '::fmtcl::MatrixProc::process_3_flt_cpp' declared here
        void           process_3_flt_cpp (uint8_t * const dst_ptr_arr [NBR_PLANES], const in...
                       ^
../../src/fmtcl/MatrixProc.cpp:379:18: error: out-of-line definition of 'setup_fnc_sse2' does not
      match any declaration in 'fmtcl::MatrixProc'
void    MatrixProc::setup_fnc_sse2 (bool int_proc_flag, SplFmt src_fmt, int src_bits, SplFmt ...
                    ^~~~~~~~~~~~~~
../../src/fmtcl/MatrixProc.cpp:408:28: error: use of undeclared identifier 'ProxyRwSse2'
                fmtcl_MatrixProc_SPAN_I (fmtcl_MatrixProc_CASE_INT)
                                         ^
../../src/fmtcl/MatrixProc.cpp:408:28: error: no member named 'process_n_int_sse2' in
      'fmtcl::MatrixProc'
                fmtcl_MatrixProc_SPAN_I (fmtcl_MatrixProc_CASE_INT)
                ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
./../../src/fmtcl/MatrixProc_macro.h:30:2: note: expanded from macro 'fmtcl_MatrixProc_SPAN_I'
        CI (INT8   ,  8, INT8   ,  8) \
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../src/fmtcl/MatrixProc.cpp:386:27: note: expanded from macro 'fmtcl_MatrixProc_CASE_INT'
                        _proc_ptr = &ThisType::process_n_int_sse2 < \
                                     ~~~~~~~~~~^
../../src/fmtcl/MatrixProc.cpp:408:28: error: expected expression
../../src/fmtcl/MatrixProc.cpp:408:28: error: use of undeclared identifier 'ProxyRwSse2'
../../src/fmtcl/MatrixProc.cpp:408:28: error: expected expression
../../src/fmtcl/MatrixProc.cpp:408:28: error: expected expression
../../src/fmtcl/MatrixProc.cpp:408:28: error: use of undeclared identifier 'ProxyRwSse2'
../../src/fmtcl/MatrixProc.cpp:408:28: error: no member named 'process_n_int_sse2' in
      'fmtcl::MatrixProc'
                fmtcl_MatrixProc_SPAN_I (fmtcl_MatrixProc_CASE_INT)
                ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
./../../src/fmtcl/MatrixProc_macro.h:30:2: note: expanded from macro 'fmtcl_MatrixProc_SPAN_I'
        CI (INT8   ,  8, INT8   ,  8) \
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../src/fmtcl/MatrixProc.cpp:393:27: note: expanded from macro 'fmtcl_MatrixProc_CASE_INT'
                        _proc_ptr = &ThisType::process_n_int_sse2 < \
                                     ~~~~~~~~~~^
../../src/fmtcl/MatrixProc.cpp:408:28: error: expected expression
../../src/fmtcl/MatrixProc.cpp:408:28: error: use of undeclared identifier 'ProxyRwSse2'
../../src/fmtcl/MatrixProc.cpp:408:28: error: expected expression
../../src/fmtcl/MatrixProc.cpp:408:28: error: expected expression
../../src/fmtcl/MatrixProc.cpp:408:28: error: use of undeclared identifier 'ProxyRwSse2'
fatal error: too many errors emitted, stopping now [-ferror-limit=]
In file included from ../../src/fstb/ToolsSse2.cpp:19:
In file included from ../../src/fstb/ToolsSse2.h:32:
In file included from /usr/bin/../lib/clang/3.8.0/include/emmintrin.h:27:
In file included from /usr/bin/../lib/clang/3.8.0/include/xmmintrin.h:27:
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:39:5: error: use of undeclared identifier
      '__builtin_ia32_emms'; did you mean '__builtin_isless'?
    __builtin_ia32_emms();
    ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:39:5: note: '__builtin_isless' declared here
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:39:25: error: too few arguments to function call,
      expected 2, have 0
    __builtin_ia32_emms();
                        ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:45:19: error: use of undeclared identifier
      '__builtin_ia32_vec_init_v2si'
    return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:51:12: error: use of undeclared identifier
      '__builtin_ia32_vec_ext_v2si'
    return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
           ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:69:19: error: use of undeclared identifier
      '__builtin_ia32_packsswb'
    return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:75:19: error: use of undeclared identifier
      '__builtin_ia32_packssdw'
    return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:81:19: error: use of undeclared identifier
      '__builtin_ia32_packuswb'
    return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:87:19: error: use of undeclared identifier
      '__builtin_ia32_punpckhbw'
    return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:93:19: error: use of undeclared identifier
      '__builtin_ia32_punpckhwd'
    return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:99:19: error: use of undeclared identifier
      '__builtin_ia32_punpckhdq'
    return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:105:19: error: use of undeclared identifier
      '__builtin_ia32_punpcklbw'
    return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:111:19: error: use of undeclared identifier
      '__builtin_ia32_punpcklwd'
    return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:117:19: error: use of undeclared identifier
      '__builtin_ia32_punpckldq'
    return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:123:19: error: use of undeclared identifier
      '__builtin_ia32_paddb'
    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:129:19: error: use of undeclared identifier
      '__builtin_ia32_paddw'
    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:135:19: error: use of undeclared identifier
      '__builtin_ia32_paddd'
    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:141:19: error: use of undeclared identifier
      '__builtin_ia32_paddsb'
    return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:147:19: error: use of undeclared identifier
      '__builtin_ia32_paddsw'
    return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2);
                  ^
/usr/bin/../lib/clang/3.8.0/include/mmintrin.h:153:19: error: use of undeclared identifier
      '__builtin_ia32_paddusb'
    return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2);
                  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]

http://thunderx1.nyi.freebsd.org/data/110arm64-default/445841/logs/errors/vapoursynth-fmtconv-r20.log

EleonoreMizo commented 4 years ago

I made a note. I will check this issue on ARM architectures soon.

EleonoreMizo commented 4 years ago

Fixed in 6d7453d8cc5aef0edefa700c7b890450b6cf2f31, release r22

jbeich commented 4 years ago

r22 still fails on aarch64 and armv6 e.g.,

In file included from ./../../src/conc/LockFreeStack.h:45,
                 from ./../../src/conc/CellPool.h:33,
                 from ./../../src/conc/ObjPool.h:44,
                 from ./../../src/fmtcl/FilterResize.h:31,
                 from ./../../src/fmtc/Resample.h:31,
                 from ../../src/fmtc/Convert.cpp:33:
./../../src/conc/AtomicPtrIntPair.h: In instantiation of 'class conc::AtomicPtrIntPair<conc::LockFreeCell<fmtcl::FilterResize::TaskRsz> >':
./../../src/fstb/SingleObj.hpp:65:13:   required from 'fstb::SingleObj<T, A>::~SingleObj() [with T = conc::AtomicPtrIntPair<conc::LockFreeCell<fmtcl::FilterResize::TaskRsz> >; A = fstb::AllocAlign<conc::AtomicPtrIntPair<conc::LockFreeCell<fmtcl::FilterResize::TaskRsz> >, 16>]'
./../../src/conc/LockFreeStack.h:68:17:   required from 'conc::CellPool<T>::~CellPool() [with T = fmtcl::FilterResize::TaskRsz]'
./../../src/fmtcl/FilterResize.h:73:34:   required from here
./../../src/conc/AtomicPtrIntPair.h:113:8: error: cannot resolve overloaded function 'is_lock_free' based on conversion to type 'bool'
  113 |  class RealContent
      |        ^~~~~~~~~~~
EleonoreMizo commented 4 years ago

I fixed a few things and checked on some ARM architectures (Raspberry Pi 4 / Raspbian and Odroid N2 / Ubuntu). It seems it works; is it better on your side?

jbeich commented 4 years ago

Builds fine after 3b64292dd274 + 5e0340d35e4d.