Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support aarch64? #592

Open
yinjiayi opened this issue Sep 7, 2021 · 8 comments
Open

Support aarch64? #592

yinjiayi opened this issue Sep 7, 2021 · 8 comments

Comments

@yinjiayi
Copy link

yinjiayi commented Sep 7, 2021

It seems caused by emmintrin.h that depend on Intel AVX

Architecture:        aarch64
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           0x48
Model:               0
Stepping:            0x1
BogoMIPS:            200.00
L1d cache:           64K
L1i cache:           64K
L2 cache:            512K
L3 cache:            32768K
NUMA node0 CPU(s):   0-3
Flags:               fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp
root@a40abf0d7090:~# git clone https://github.com/imazen/imageflow
Cloning into 'imageflow'...
remote: Enumerating objects: 17804, done.
remote: Counting objects: 100% (179/179), done.
remote: Compressing objects: 100% (112/112), done.
remote: Total 17804 (delta 77), reused 115 (delta 60), pack-reused 17625
Receiving objects: 100% (17804/17804), 7.08 MiB | 3.87 MiB/s, done.
Resolving deltas: 100% (12478/12478), done.
root@a40abf0d7090:~# cd imageflow/
root@a40abf0d7090:~/imageflow# ls
CODE_OF_CONDUCT.md  Cargo.lock  LICENSE    bindings  build_via_docker.sh  ci      development.md  docs       imageflow.iml  imageflow_core     imageflow_http_helpers  imageflow_server  imageflow_types  rustfmt.toml          valgrind_suppressions.txt
CONTRIBUTING.md     Cargo.toml  README.md  build.sh  c_components         cov.sh  docker          imageflow  imageflow_abi  imageflow_helpers  imageflow_riapi         imageflow_tool    magick.md        valgrind_existing.sh  win_enter_env.bat
root@a40abf0d7090:~/imageflow# grep -r -i mfpmath=sse ./*
./c_components/CMakeLists.txt:    set(IMAGEFLOW_C_OPTIMIZE "-O3 ${NON_MSVC_OPTIMIZE} -funroll-loops -ffast-math -mfpmath=sse  -msse2 ${ENABLE_INSTRUCTIONS}")
./c_components/CMakeLists.txt:    set(SHARED_FLAGS "-pipe -iquotelib -fPIC -mfpmath=sse")
./c_components/build.rs:            cc.flag("-mfpmath=sse");
root@a40abf0d7090:~/imageflow# vi ./c_components/CMakeLists.txt
root@a40abf0d7090:~/imageflow# grep -r -i mfpmath=sse ./*
./c_components/build.rs:            cc.flag("-mfpmath=sse");
root@a40abf0d7090:~/imageflow# vi ./c_components/build.rs
root@a40abf0d7090:~/imageflow# grep -r -i mfpmath=sse ./*
root@a40abf0d7090:~/imageflow# grep -r -i msse2 ./*
root@a40abf0d7090:~/imageflow# ls
CODE_OF_CONDUCT.md  Cargo.lock  LICENSE    bindings  build_via_docker.sh  ci      development.md  docs       imageflow.iml  imageflow_core     imageflow_http_helpers  imageflow_server  imageflow_types  rustfmt.toml          valgrind_suppressions.txt
CONTRIBUTING.md     Cargo.toml  README.md  build.sh  c_components         cov.sh  docker          imageflow  imageflow_abi  imageflow_helpers  imageflow_riapi         imageflow_tool    magick.md        valgrind_existing.sh  win_enter_env.bat
root@a40abf0d7090:~/imageflow# grep -r -i emmintrin ./*
./c_components/lib/graphics.c:#include <emmintrin.h>
./c_components/lib/fastapprox.h:#include <emmintrin.h>
root@a40abf0d7090:~/imageflow# vi ./c_components/lib/graphics.c
root@a40abf0d7090:~/imageflow# vi ./c_components/lib/fastapprox.h
root@a40abf0d7090:~/imageflow# ./build.sh release
Applying IMAGEFLOW_BUILD_OVERRIDE release
TARGET_CPU=native  RUST_FLAGS= CFLAGS= -march=native -O3 TARGET_DIR=target/
rustc 1.51.0
TARGET_CPU=native  RUST_FLAGS= -C target-cpu=native CFLAGS= -march=native -O3 TARGET_DIR=target/ CARGO_ARGS=
Running release mode tests
warning: Cargo does not read `RUST_FLAGS` environment variable. Did you mean `RUSTFLAGS`?
   Compiling libc v0.2.91
   Compiling autocfg v1.0.1
   Compiling cfg-if v0.1.10
   Compiling proc-macro2 v1.0.24
   Compiling unicode-xid v0.2.1
   Compiling syn v1.0.48
   Compiling version_check v0.9.2
   Compiling lazy_static v1.4.0
   Compiling const_fn v0.4.2
   Compiling byteorder v1.3.4
   Compiling log v0.4.11
   Compiling pkg-config v0.3.19
   Compiling memchr v2.3.4
   Compiling serde_derive v1.0.117
   Compiling serde v1.0.117
   Compiling cfg-if v1.0.0
   Compiling itoa v0.4.6
   Compiling getrandom v0.1.15
   Compiling rayon-core v1.9.0
   Compiling tinyvec v0.3.4
   Compiling fnv v1.0.7
   Compiling matches v0.1.8
   Compiling ryu v1.0.5
   Compiling typenum v1.12.0
   Compiling crc32fast v1.2.1
   Compiling serde_json v1.0.59
   Compiling dunce v1.0.1
   Compiling either v1.6.1
   Compiling scopeguard v1.1.0
   Compiling proc-macro-hack v0.5.19
   Compiling maybe-uninit v2.0.0
   Compiling arrayvec v0.4.12
   Compiling adler v0.2.3
   Compiling bytemuck v1.4.1
   Compiling rustc-serialize v0.3.24
   Compiling semver-parser v0.7.0
   Compiling regex-syntax v0.6.20
   Compiling percent-encoding v1.0.1
   Compiling arrayvec v0.5.2
   Compiling httparse v1.3.4
   Compiling ppv-lite86 v0.2.9
   Compiling gimli v0.22.0
   Compiling bitflags v1.2.1
   Compiling ahash v0.4.7
   Compiling rustc-demangle v0.1.18
   Compiling futures v0.1.30
   Compiling object v0.21.1
   Compiling autocfg v0.1.7
   Compiling rand_core v0.4.2
   Compiling slab v0.4.2
   Compiling percent-encoding v2.1.0
   Compiling nodrop v0.1.14
   Compiling opaque-debug v0.3.0
   Compiling static_assertions v1.1.0
   Compiling sha1 v0.6.0
   Compiling glob v0.3.0
   Compiling constant_time_eq v0.1.5
   Compiling traitobject v0.1.0
   Compiling base64 v0.13.0
   Compiling smallvec v1.4.2
   Compiling version_check v0.1.5
   Compiling imgref v1.7.0
   Compiling typeable v0.1.2
   Compiling safemem v0.3.3
   Compiling quick-error v2.0.0
   Compiling language-tags v0.2.2
   Compiling pin-project-lite v0.1.11
   Compiling futures-core v0.3.7
   Compiling bytes v0.5.6
   Compiling foreign-types-shared v0.1.1
   Compiling openssl v0.10.30
   Compiling foreign-types-shared v0.3.0
   Compiling pin-project-internal v0.4.27
   Compiling unicode-width v0.1.8
   Compiling try-lock v0.2.3
   Compiling dtoa v0.4.6
   Compiling failure_derive v0.1.8
   Compiling option-filter v1.0.2
   Compiling native-tls v0.2.4
   Compiling ieee754 v0.2.6
   Compiling stable_deref_trait v1.2.0
   Compiling macro-attr v0.2.1 (https://github.com/DanielKeep/rust-custom-derive.git#1252f258)
   Compiling enum_derive v0.1.7 (https://github.com/DanielKeep/rust-custom-derive.git#1252f258)
   Compiling futures-task v0.3.7
   Compiling ordermap v0.3.5
   Compiling openssl-probe v0.1.2
   Compiling futures-sink v0.3.7
   Compiling pin-utils v0.1.0
   Compiling fixedbitset v0.1.9
   Compiling encoding_rs v0.8.24
   Compiling lzw v0.10.0
   Compiling color_quant v1.1.0
   Compiling linked-hash-map v0.5.3
   Compiling tower-service v0.3.0
   Compiling hex v0.4.2
   Compiling mime v0.3.16
   Compiling antidote v1.0.0
   Compiling slotmap v0.4.0
   Compiling hyper-openssl v0.8.1
   Compiling httpdate v0.3.2
   Compiling tower-layer v0.3.0
   Compiling once_cell v1.4.1
   Compiling ansi_term v0.11.0
   Compiling vec_map v0.8.2
   Compiling strsim v0.8.0
   Compiling modifier v0.1.0
   Compiling lazy_static v0.2.11
   Compiling sequence_trie v0.2.1
   Compiling quick-error v1.2.3
   Compiling half v1.6.0
   Compiling termcolor v1.1.0
   Compiling route-recognizer v0.1.13
   Compiling same-file v1.0.6
   Compiling oorandom v11.1.2
   Compiling cbindgen v0.15.0
   Compiling remove_dir_all v0.5.3
   Compiling unicode-segmentation v1.6.0
   Compiling difference v2.0.0
   Compiling try_from v0.3.2
   Compiling thread_local v1.0.1
   Compiling tracing-core v0.1.17
   Compiling memoffset v0.5.6
   Compiling num-traits v0.2.14
   Compiling crossbeam-utils v0.8.0
   Compiling num-integer v0.1.44
   Compiling miniz_oxide v0.4.3
   Compiling rayon v1.5.0
   Compiling crossbeam-utils v0.7.2
   Compiling indexmap v1.6.0
   Compiling num-iter v0.1.42
   Compiling crossbeam-epoch v0.8.2
   Compiling num-bigint v0.3.0
   Compiling num-rational v0.3.1
   Compiling num-bigint v0.2.6
   Compiling num-complex v0.2.4
   Compiling num-rational v0.2.4
   Compiling generic-array v0.14.4
   Compiling standback v0.2.11
   Compiling unicase v2.6.0
   Compiling time v0.2.22
   Compiling error-chain v0.12.4
   Compiling proc-macro-error-attr v1.0.4
   Compiling proc-macro-error v1.0.4
   Compiling unicode-bidi v0.3.4
   Compiling unicode-normalization v0.1.13
   Compiling lock_api v0.3.4
   Compiling itertools v0.9.0
   Compiling rgb v0.8.25
   Compiling semver v0.9.0
   Compiling conduit-mime-types v0.7.3
   Compiling hashbrown v0.9.1
   Compiling addr2line v0.13.0
   Compiling tokio-sync v0.1.8
   Compiling rand_core v0.3.1
   Compiling rand_jitter v0.1.4
   Compiling rand_chacha v0.1.1
   Compiling rand_pcg v0.1.2
   Compiling rand v0.6.5
   Compiling unsafe-any v0.4.2
   Compiling error v0.1.9
   Compiling unicase v1.4.2
   Compiling futures-channel v0.3.7
   Compiling http v0.2.1
   Compiling foreign-types v0.3.2
   Compiling getopts v0.2.21
   Compiling textwrap v0.11.0
   Compiling owning_ref v0.3.3
   Compiling petgraph v0.4.13
   Compiling gif v0.10.3
   Compiling linked_hash_set v0.1.4
   Compiling lru-cache v0.1.2
   Compiling humantime v1.3.0
   Compiling walkdir v2.3.1
   Compiling heck v0.3.1
   Compiling idna v0.1.5
   Compiling idna v0.2.0
   Compiling evalchroma v0.1.1
   Compiling rustc_version v0.2.3
   Compiling fallible_collections v0.4.0
   Compiling rand_isaac v0.1.1
   Compiling rand_hc v0.1.0
   Compiling rand_xorshift v0.1.1
   Compiling typemap v0.3.3
   Compiling daggy v0.5.0
   Compiling http-body v0.3.1
   Compiling quote v1.0.7
   Compiling num_cpus v1.13.0
   Compiling time v0.1.44
   Compiling iovec v0.1.4
   Compiling net2 v0.2.35
   Compiling rand_os v0.1.3
   Compiling rand v0.4.6
   Compiling atty v0.2.14
   Compiling socket2 v0.3.15
   Compiling wait-timeout v0.2.0
   Compiling jobserver v0.1.21
   Compiling log v0.3.9
   Compiling tracing v0.1.21
   Compiling want v0.2.0
   Compiling want v0.3.0
   Compiling base64 v0.9.3
   Compiling base64 v0.10.1
   Compiling regex-automata v0.1.9
   Compiling aho-corasick v0.7.14
   Compiling csv-core v0.1.10
   Compiling smallvec v0.6.13
   Compiling url v1.7.2
   Compiling blake2-rfc v0.2.18
   Compiling url v2.1.1
   Compiling parking_lot_core v0.6.2
   Compiling parking_lot v0.9.0
   Compiling hyper v0.12.35
   Compiling cast v0.2.3
   Compiling plugin v0.2.6
   Compiling futures-cpupool v0.1.8
   Compiling threadpool v1.8.1
   Compiling bytes v0.4.12
   Compiling rand_core v0.5.1
   Compiling mio v0.6.22
   Compiling clap v2.33.3
   Compiling colored v1.9.3
   Compiling num-complex v0.3.1
   Compiling plotters v0.2.15
   Compiling backtrace v0.3.53
   Compiling cc v1.0.67
   Compiling tokio-executor v0.1.10
   Compiling crossbeam-queue v0.2.3
   Compiling mime v0.2.6
   Compiling mime_guess v2.0.3
   Compiling regex v1.4.1
   Compiling crossbeam-epoch v0.9.0
   Compiling crossbeam-channel v0.5.0
   Compiling parking_lot_core v0.2.14
   Compiling block-buffer v0.9.0
   Compiling digest v0.9.0
   Compiling cookie v0.12.0
   Compiling tokio-io v0.1.13
   Compiling http v0.1.21
   Compiling tokio-buf v0.1.1
   Compiling string v0.2.1
   Compiling rand_chacha v0.2.2
   Compiling tokio v0.2.22
   Compiling chrono v0.4.19
   Compiling synstructure v0.12.4
   Compiling thiserror-impl v1.0.21
   Compiling time-macros-impl v0.1.1
   Compiling foreign-types-macros v0.2.1
   Compiling pin-project-internal v1.0.1
   Compiling tokio-timer v0.2.13
   Compiling tokio-current-thread v0.1.7
   Compiling crossbeam-deque v0.7.3
   Compiling libz-sys v1.1.2
   Compiling lcms2-sys v3.1.5
   Compiling libpng-sys v1.1.8
   Compiling imageflow_c_components v0.1.0 (/root/imageflow/c_components)
   Compiling openssl-sys v0.9.58
   Compiling imagequant-sys v2.13.0
   Compiling libwebp-sys v0.3.0
   Compiling c_components_tests v0.1.0 (/root/imageflow/c_components/tests)
   Compiling hyper v0.10.16
   Compiling publicsuffix v1.5.4
   Compiling env_logger v0.7.1
   Compiling crossbeam-deque v0.8.0
   Compiling parking_lot v0.4.8
   Compiling sha2 v0.9.1
   Compiling uuid v0.7.4
   Compiling rand v0.7.3
   Compiling http-body v0.1.0
   Compiling h2 v0.1.26
   Compiling tokio-util v0.3.1
   Compiling extend v0.1.2
   Compiling imageflow_types v0.1.0 (/root/imageflow/imageflow_types)
   Compiling time-macros v0.1.1
   Compiling foreign-types v0.5.0
   Compiling thiserror v1.0.21
   Compiling pin-project v1.0.1
   Compiling pin-project v0.4.27
   Compiling tokio-threadpool v0.1.18
   Compiling chashmap v2.2.2
   Compiling iron v0.5.1
   Compiling criterion-plot v0.4.3
   Compiling twox-hash v1.6.0
   Compiling uuid v0.8.1
   Compiling num v0.3.0
   Compiling num v0.2.1
   Compiling zip v0.5.8
   Compiling failure v0.1.8
   Compiling futures-util v0.3.7
   Compiling tracing-futures v0.2.4
   Compiling tempfile v3.1.0
   Compiling serde_urlencoded v0.5.5
   Compiling bstr v0.2.14
   Compiling bincode v1.3.1
   Compiling serde_cbor v0.11.1
   Compiling serde_urlencoded v0.6.1
   Compiling toml v0.5.7
   Compiling mount v0.3.0
   Compiling mount v0.3.0 (https://github.com/iron/mount.git?rev=2c3d719be4c158d4ddbd8cdb402fafccdefec58c#2c3d719b)
   Compiling persistent v0.4.0
   Compiling logger v0.3.0 (https://github.com/iron/logger.git?rev=0daead5fe10c3cd0c4738767c162dc63a59c3fb3#0daead5f)
   Compiling router v0.5.1
   Compiling tokio-reactor v0.1.12
   Compiling rexif v0.5.0
   Compiling imageflow_helpers v0.1.0 (/root/imageflow/imageflow_helpers)
   Compiling cookie_store v0.7.0
   Compiling tinytemplate v1.1.0
   Compiling assert-json-diff v1.1.0
   Compiling h2 v0.2.7
   Compiling csv v1.1.3
   Compiling staticfile v0.3.1 (https://github.com/onur/staticfile?rev=9f2ff7201eda648128c92e3f5597c587f0629f51#9f2ff720)
   Compiling nasm-rs v0.2.0
   Compiling rustface v0.1.5 (https://github.com/atomashpolskiy/rustface#d7f5a544)
   Compiling jpeg-decoder v0.1.20
   Compiling dssim-core v2.11.4
   Compiling tokio-tcp v0.1.4
   Compiling mockito v0.27.0
   Compiling criterion v0.3.3
   Compiling hyper v0.13.8
   Compiling tokio-openssl v0.4.0
   Compiling mozjpeg-sys v0.10.13
   Compiling imageflow_abi v0.1.0 (/root/imageflow/imageflow_abi)
   Compiling tokio v0.1.22
   Compiling imageflow_riapi v0.1.0 (/root/imageflow/imageflow_riapi)
   Compiling hyper-native-tls v0.3.0
   Compiling hyper-tls v0.3.2
   Compiling flate2 v1.0.18
   Compiling imagequant v2.13.0
   Compiling lodepng v3.2.2
   Compiling reqwest v0.9.24
   Compiling imageflow_http_helpers v0.1.0 (/root/imageflow/imageflow_http_helpers)
   Compiling lcms2 v5.3.0-alpha (https://github.com/imazen/rust-lcms2#da58dd32)
   Compiling lcms2 v5.4.0
   Compiling mozjpeg v0.8.24
   Compiling load_image v2.12.1
   Compiling dssim v2.11.4
The following warnings were emitted during compilation:

warning: In file included from lib/graphics.c:27:
warning: /usr/include/immintrin.h:34:22: error: redefinition of '_mm_sha256rnds2_epu32'
warning:    34 | FORCE_INLINE __m128i _mm_sha256rnds2_epu32(__m128i a, __m128i b, __m128i k)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~~
warning: In file included from /usr/include/avx2neon.h:29,
warning:                  from lib/graphics.c:25:
warning: /usr/include/immintrin.h:34:22: note: previous definition of '_mm_sha256rnds2_epu32' was here
warning:    34 | FORCE_INLINE __m128i _mm_sha256rnds2_epu32(__m128i a, __m128i b, __m128i k)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~~
warning: In file included from lib/graphics.c:27:
warning: /usr/include/immintrin.h:82:22: error: redefinition of '_mm_sha256msg1_epu32'
warning:    82 | FORCE_INLINE __m128i _mm_sha256msg1_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: In file included from /usr/include/avx2neon.h:29,
warning:                  from lib/graphics.c:25:
warning: /usr/include/immintrin.h:82:22: note: previous definition of '_mm_sha256msg1_epu32' was here
warning:    82 | FORCE_INLINE __m128i _mm_sha256msg1_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: In file included from lib/graphics.c:27:
warning: /usr/include/immintrin.h:92:22: error: redefinition of '_mm_sha256msg2_epu32'
warning:    92 | FORCE_INLINE __m128i _mm_sha256msg2_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: In file included from /usr/include/avx2neon.h:29,
warning:                  from lib/graphics.c:25:
warning: /usr/include/immintrin.h:92:22: note: previous definition of '_mm_sha256msg2_epu32' was here
warning:    92 | FORCE_INLINE __m128i _mm_sha256msg2_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: lib/graphics.c:43: warning: "likely" redefined
warning:    43 | #define likely(x) (__builtin_expect(!!(x), 1))
warning:       |
warning: In file included from /usr/include/emmintrin.h:31,
warning:                  from /usr/include/avx2neon.h:26,
warning:                  from lib/graphics.c:25:
warning: /usr/include/typedefs.h:46: note: this is the location of the previous definition
warning:    46 | #define likely(x)     __builtin_expect(!!(x), 1)
warning:       |
warning: lib/graphics.c:44: warning: "unlikely" redefined
warning:    44 | #define unlikely(x) (__builtin_expect(!!(x), 0))
warning:       |
warning: In file included from /usr/include/emmintrin.h:31,
warning:                  from /usr/include/avx2neon.h:26,
warning:                  from lib/graphics.c:25:
warning: /usr/include/typedefs.h:47: note: this is the location of the previous definition
warning:    47 | #define unlikely(x)   __builtin_expect(!!(x), 0)
warning:       |
warning: lib/graphics.c: In function 'flow_bitmap_float_scale_rows':
warning: lib/graphics.c:548:34: warning: implicit declaration of function '_mm_mul_ps'; did you mean '_mm512_mul_ps'? [-Wimplicit-function-declaration]
warning:   548 |                     __m128 mid = _mm_mul_ps(factor, source_buffer[i]);
warning:       |                                  ^~~~~~~~~~
warning:       |                                  _mm512_mul_ps
warning: lib/graphics.c:548:34: error: incompatible types when initializing type '__m128' using type 'int'
warning: lib/graphics.c:549:28: warning: implicit declaration of function '_mm_add_ps'; did you mean '_mm512_add_ps'? [-Wimplicit-function-declaration]
warning:   549 |                     sums = _mm_add_ps(sums, mid);
warning:       |                            ^~~~~~~~~~
warning:       |                            _mm512_add_ps
warning: lib/graphics.c:549:28: error: incompatible types when assigning to type '__m128' from type 'int'
warning: lib/graphics.c: In function 'transpose4x4_SSE':
warning: lib/graphics.c:1217:19: warning: implicit declaration of function '_mm_loadu_ps'; did you mean '_mm_load_ps'? [-Wimplicit-function-declaration]
warning:  1217 |     __m128 row1 = _mm_loadu_ps(&A[0 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning:       |                   _mm_load_ps
warning: lib/graphics.c:1217:19: error: incompatible types when initializing type '__m128' using type 'int'
warning: lib/graphics.c:1218:19: error: incompatible types when initializing type '__m128' using type 'int'
warning:  1218 |     __m128 row2 = _mm_loadu_ps(&A[1 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning: lib/graphics.c:1219:19: error: incompatible types when initializing type '__m128' using type 'int'
warning:  1219 |     __m128 row3 = _mm_loadu_ps(&A[2 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning: lib/graphics.c:1220:19: error: incompatible types when initializing type '__m128' using type 'int'
warning:  1220 |     __m128 row4 = _mm_loadu_ps(&A[3 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning: lib/graphics.c:1221:5: warning: implicit declaration of function '_MM_TRANSPOSE4_PS' [-Wimplicit-function-declaration]
warning:  1221 |     _MM_TRANSPOSE4_PS(row1, row2, row3, row4);
warning:       |     ^~~~~~~~~~~~~~~~~
warning: lib/graphics.c:1222:5: warning: implicit declaration of function '_mm_storeu_ps'; did you mean '_mm_store_ps'? [-Wimplicit-function-declaration]
warning:  1222 |     _mm_storeu_ps(&B[0 * ldb], row1);
warning:       |     ^~~~~~~~~~~~~
warning:       |     _mm_store_ps

error: failed to run custom build command for `imageflow_c_components v0.1.0 (/root/imageflow/c_components)`

Caused by:
  process didn't exit successfully: `/root/imageflow/target/release/build/imageflow_c_components-ba28a84143b939b2/build-script-build` (exit code: 1)
  --- stdout
  OPT_LEVEL = Some("3")
  TARGET = Some("aarch64-unknown-linux-gnu")
  HOST = Some("aarch64-unknown-linux-gnu")
  CC_aarch64-unknown-linux-gnu = None
  CC_aarch64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-unknown-linux-gnu = None
  CFLAGS_aarch64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = None
  CC_aarch64-unknown-linux-gnu = None
  CC_aarch64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-unknown-linux-gnu = None
  CFLAGS_aarch64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  CARGO_CFG_TARGET_FEATURE = None
  CC_aarch64-unknown-linux-gnu = None
  CC_aarch64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-unknown-linux-gnu = None
  CFLAGS_aarch64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  CARGO_CFG_TARGET_FEATURE = None
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/bitmap_formats.o" "-c" "lib/bitmap_formats.c"
  exit code: 0
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/codec_jpeg_wrapper.o" "-c" "lib/codec_jpeg_wrapper.c"
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/codec_png_wrapper.o" "-c" "lib/codec_png_wrapper.c"
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/codecs_jpeg_idct_fast.o" "-c" "lib/codecs_jpeg_idct_fast.c"
  exit code: 0
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/context.o" "-c" "lib/context.c"
  exit code: 0
  exit code: 0
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/context_heap.o" "-c" "lib/context_heap.c"
  exit code: 0
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/graphics.o" "-c" "lib/graphics.c"
  cargo:warning=In file included from lib/graphics.c:27:
  cargo:warning=/usr/include/immintrin.h:34:22: error: redefinition of '_mm_sha256rnds2_epu32'
  cargo:warning=   34 | FORCE_INLINE __m128i _mm_sha256rnds2_epu32(__m128i a, __m128i b, __m128i k)
  cargo:warning=      |                      ^~~~~~~~~~~~~~~~~~~~~
  cargo:warning=In file included from /usr/include/avx2neon.h:29,
  cargo:warning=                 from lib/graphics.c:25:
  cargo:warning=/usr/include/immintrin.h:34:22: note: previous definition of '_mm_sha256rnds2_epu32' was here
  cargo:warning=   34 | FORCE_INLINE __m128i _mm_sha256rnds2_epu32(__m128i a, __m128i b, __m128i k)
  cargo:warning=      |                      ^~~~~~~~~~~~~~~~~~~~~
  cargo:warning=In file included from lib/graphics.c:27:
  cargo:warning=/usr/include/immintrin.h:82:22: error: redefinition of '_mm_sha256msg1_epu32'
  cargo:warning=   82 | FORCE_INLINE __m128i _mm_sha256msg1_epu32(__m128i a, __m128i b)
  cargo:warning=      |                      ^~~~~~~~~~~~~~~~~~~~
  cargo:warning=In file included from /usr/include/avx2neon.h:29,
  cargo:warning=                 from lib/graphics.c:25:
  cargo:warning=/usr/include/immintrin.h:82:22: note: previous definition of '_mm_sha256msg1_epu32' was here
  cargo:warning=   82 | FORCE_INLINE __m128i _mm_sha256msg1_epu32(__m128i a, __m128i b)
  cargo:warning=      |                      ^~~~~~~~~~~~~~~~~~~~
  cargo:warning=In file included from lib/graphics.c:27:
  cargo:warning=/usr/include/immintrin.h:92:22: error: redefinition of '_mm_sha256msg2_epu32'
  cargo:warning=   92 | FORCE_INLINE __m128i _mm_sha256msg2_epu32(__m128i a, __m128i b)
  cargo:warning=      |                      ^~~~~~~~~~~~~~~~~~~~
  cargo:warning=In file included from /usr/include/avx2neon.h:29,
  cargo:warning=                 from lib/graphics.c:25:
  cargo:warning=/usr/include/immintrin.h:92:22: note: previous definition of '_mm_sha256msg2_epu32' was here
  cargo:warning=   92 | FORCE_INLINE __m128i _mm_sha256msg2_epu32(__m128i a, __m128i b)
  cargo:warning=      |                      ^~~~~~~~~~~~~~~~~~~~
  cargo:warning=lib/graphics.c:43: warning: "likely" redefined
  cargo:warning=   43 | #define likely(x) (__builtin_expect(!!(x), 1))
  cargo:warning=      |
  cargo:warning=In file included from /usr/include/emmintrin.h:31,
  cargo:warning=                 from /usr/include/avx2neon.h:26,
  cargo:warning=                 from lib/graphics.c:25:
  cargo:warning=/usr/include/typedefs.h:46: note: this is the location of the previous definition
  cargo:warning=   46 | #define likely(x)     __builtin_expect(!!(x), 1)
  cargo:warning=      |
  cargo:warning=lib/graphics.c:44: warning: "unlikely" redefined
  cargo:warning=   44 | #define unlikely(x) (__builtin_expect(!!(x), 0))
  cargo:warning=      |
  cargo:warning=In file included from /usr/include/emmintrin.h:31,
  cargo:warning=                 from /usr/include/avx2neon.h:26,
  cargo:warning=                 from lib/graphics.c:25:
  cargo:warning=/usr/include/typedefs.h:47: note: this is the location of the previous definition
  cargo:warning=   47 | #define unlikely(x)   __builtin_expect(!!(x), 0)
  cargo:warning=      |
  cargo:warning=lib/graphics.c: In function 'flow_bitmap_float_scale_rows':
  cargo:warning=lib/graphics.c:548:34: warning: implicit declaration of function '_mm_mul_ps'; did you mean '_mm512_mul_ps'? [-Wimplicit-function-declaration]
  cargo:warning=  548 |                     __m128 mid = _mm_mul_ps(factor, source_buffer[i]);
  cargo:warning=      |                                  ^~~~~~~~~~
  cargo:warning=      |                                  _mm512_mul_ps
  cargo:warning=lib/graphics.c:548:34: error: incompatible types when initializing type '__m128' using type 'int'
  cargo:warning=lib/graphics.c:549:28: warning: implicit declaration of function '_mm_add_ps'; did you mean '_mm512_add_ps'? [-Wimplicit-function-declaration]
  cargo:warning=  549 |                     sums = _mm_add_ps(sums, mid);
  cargo:warning=      |                            ^~~~~~~~~~
  cargo:warning=      |                            _mm512_add_ps
  cargo:warning=lib/graphics.c:549:28: error: incompatible types when assigning to type '__m128' from type 'int'
  cargo:warning=lib/graphics.c: In function 'transpose4x4_SSE':
  cargo:warning=lib/graphics.c:1217:19: warning: implicit declaration of function '_mm_loadu_ps'; did you mean '_mm_load_ps'? [-Wimplicit-function-declaration]
  cargo:warning= 1217 |     __m128 row1 = _mm_loadu_ps(&A[0 * lda]);
  cargo:warning=      |                   ^~~~~~~~~~~~
  cargo:warning=      |                   _mm_load_ps
  cargo:warning=lib/graphics.c:1217:19: error: incompatible types when initializing type '__m128' using type 'int'
  cargo:warning=lib/graphics.c:1218:19: error: incompatible types when initializing type '__m128' using type 'int'
  cargo:warning= 1218 |     __m128 row2 = _mm_loadu_ps(&A[1 * lda]);
  cargo:warning=      |                   ^~~~~~~~~~~~
  cargo:warning=lib/graphics.c:1219:19: error: incompatible types when initializing type '__m128' using type 'int'
  cargo:warning= 1219 |     __m128 row3 = _mm_loadu_ps(&A[2 * lda]);
  cargo:warning=      |                   ^~~~~~~~~~~~
  cargo:warning=lib/graphics.c:1220:19: error: incompatible types when initializing type '__m128' using type 'int'
  cargo:warning= 1220 |     __m128 row4 = _mm_loadu_ps(&A[3 * lda]);
  cargo:warning=      |                   ^~~~~~~~~~~~
  cargo:warning=lib/graphics.c:1221:5: warning: implicit declaration of function '_MM_TRANSPOSE4_PS' [-Wimplicit-function-declaration]
  cargo:warning= 1221 |     _MM_TRANSPOSE4_PS(row1, row2, row3, row4);
  cargo:warning=      |     ^~~~~~~~~~~~~~~~~
  cargo:warning=lib/graphics.c:1222:5: warning: implicit declaration of function '_mm_storeu_ps'; did you mean '_mm_store_ps'? [-Wimplicit-function-declaration]
  cargo:warning= 1222 |     _mm_storeu_ps(&B[0 * ldb], row1);
  cargo:warning=      |     ^~~~~~~~~~~~~
  cargo:warning=      |     _mm_store_ps
  exit code: 1
  exit code: 0

  --- stderr


  error occurred: Command "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-march=native" "-O3" "-I" "/root/imageflow/c_components/lib" "-I" "/root/imageflow/c_components" "-I" "/root/imageflow/target/release/build/mozjpeg-sys-e6c91b72671fb9d3/out/include" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/libpng-sys-1.1.8/vendor" "-I" "/root/imageflow/target/release/build/libz-sys-c3852f0c114a02cf/out/include" "-I" "/root/imageflow/target/release/build/libpng-sys-b1776008b8069efb/out" "-I" "/root/.cargo/registry/src/github.com-1ecc6299db9ec823/lcms2-sys-3.1.5/vendor/include" "-funroll-loops" "-ffast-math" "-std=gnu11" "-Wpointer-arith" "-Wcast-qual" "-Wno-unused-parameter" "-Wuninitialized" "-Wredundant-decls" "-Wno-error=unused-function" "-Wno-parentheses" "-Wstrict-prototypes" "-Wmissing-prototypes" "-Wshadow" "-Wc++-compat" "-march=native" "-pipe" "-Dimageflow_c_BUILD_STATIC=1" "-o" "/root/imageflow/target/release/build/imageflow_c_components-98f6a34cfb419c2d/out/lib/graphics.o" "-c" "lib/graphics.c" with args "cc" did not execute successfully (status code exit code: 1).


warning: build failed, waiting for other jobs to finish...
The following warnings were emitted during compilation:

warning: In file included from lib/graphics.c:27:
warning: /usr/include/immintrin.h:34:22: error: redefinition of '_mm_sha256rnds2_epu32'
warning:    34 | FORCE_INLINE __m128i _mm_sha256rnds2_epu32(__m128i a, __m128i b, __m128i k)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~~
warning: In file included from /usr/include/avx2neon.h:29,
warning:                  from lib/graphics.c:25:
warning: /usr/include/immintrin.h:34:22: note: previous definition of '_mm_sha256rnds2_epu32' was here
warning:    34 | FORCE_INLINE __m128i _mm_sha256rnds2_epu32(__m128i a, __m128i b, __m128i k)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~~
warning: In file included from lib/graphics.c:27:
warning: /usr/include/immintrin.h:82:22: error: redefinition of '_mm_sha256msg1_epu32'
warning:    82 | FORCE_INLINE __m128i _mm_sha256msg1_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: In file included from /usr/include/avx2neon.h:29,
warning:                  from lib/graphics.c:25:
warning: /usr/include/immintrin.h:82:22: note: previous definition of '_mm_sha256msg1_epu32' was here
warning:    82 | FORCE_INLINE __m128i _mm_sha256msg1_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: In file included from lib/graphics.c:27:
warning: /usr/include/immintrin.h:92:22: error: redefinition of '_mm_sha256msg2_epu32'
warning:    92 | FORCE_INLINE __m128i _mm_sha256msg2_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: In file included from /usr/include/avx2neon.h:29,
warning:                  from lib/graphics.c:25:
warning: /usr/include/immintrin.h:92:22: note: previous definition of '_mm_sha256msg2_epu32' was here
warning:    92 | FORCE_INLINE __m128i _mm_sha256msg2_epu32(__m128i a, __m128i b)
warning:       |                      ^~~~~~~~~~~~~~~~~~~~
warning: lib/graphics.c:43: warning: "likely" redefined
warning:    43 | #define likely(x) (__builtin_expect(!!(x), 1))
warning:       |
warning: In file included from /usr/include/emmintrin.h:31,
warning:                  from /usr/include/avx2neon.h:26,
warning:                  from lib/graphics.c:25:
warning: /usr/include/typedefs.h:46: note: this is the location of the previous definition
warning:    46 | #define likely(x)     __builtin_expect(!!(x), 1)
warning:       |
warning: lib/graphics.c:44: warning: "unlikely" redefined
warning:    44 | #define unlikely(x) (__builtin_expect(!!(x), 0))
warning:       |
warning: In file included from /usr/include/emmintrin.h:31,
warning:                  from /usr/include/avx2neon.h:26,
warning:                  from lib/graphics.c:25:
warning: /usr/include/typedefs.h:47: note: this is the location of the previous definition
warning:    47 | #define unlikely(x)   __builtin_expect(!!(x), 0)
warning:       |
warning: lib/graphics.c: In function 'flow_bitmap_float_scale_rows':
warning: lib/graphics.c:548:34: warning: implicit declaration of function '_mm_mul_ps'; did you mean '_mm512_mul_ps'? [-Wimplicit-function-declaration]
warning:   548 |                     __m128 mid = _mm_mul_ps(factor, source_buffer[i]);
warning:       |                                  ^~~~~~~~~~
warning:       |                                  _mm512_mul_ps
warning: lib/graphics.c:548:34: error: incompatible types when initializing type '__m128' using type 'int'
warning: lib/graphics.c:549:28: warning: implicit declaration of function '_mm_add_ps'; did you mean '_mm512_add_ps'? [-Wimplicit-function-declaration]
warning:   549 |                     sums = _mm_add_ps(sums, mid);
warning:       |                            ^~~~~~~~~~
warning:       |                            _mm512_add_ps
warning: lib/graphics.c:549:28: error: incompatible types when assigning to type '__m128' from type 'int'
warning: lib/graphics.c: In function 'transpose4x4_SSE':
warning: lib/graphics.c:1217:19: warning: implicit declaration of function '_mm_loadu_ps'; did you mean '_mm_load_ps'? [-Wimplicit-function-declaration]
warning:  1217 |     __m128 row1 = _mm_loadu_ps(&A[0 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning:       |                   _mm_load_ps
warning: lib/graphics.c:1217:19: error: incompatible types when initializing type '__m128' using type 'int'
warning: lib/graphics.c:1218:19: error: incompatible types when initializing type '__m128' using type 'int'
warning:  1218 |     __m128 row2 = _mm_loadu_ps(&A[1 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning: lib/graphics.c:1219:19: error: incompatible types when initializing type '__m128' using type 'int'
warning:  1219 |     __m128 row3 = _mm_loadu_ps(&A[2 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning: lib/graphics.c:1220:19: error: incompatible types when initializing type '__m128' using type 'int'
warning:  1220 |     __m128 row4 = _mm_loadu_ps(&A[3 * lda]);
warning:       |                   ^~~~~~~~~~~~
warning: lib/graphics.c:1221:5: warning: implicit declaration of function '_MM_TRANSPOSE4_PS' [-Wimplicit-function-declaration]
warning:  1221 |     _MM_TRANSPOSE4_PS(row1, row2, row3, row4);
warning:       |     ^~~~~~~~~~~~~~~~~
warning: lib/graphics.c:1222:5: warning: implicit declaration of function '_mm_storeu_ps'; did you mean '_mm_store_ps'? [-Wimplicit-function-declaration]
warning:  1222 |     _mm_storeu_ps(&B[0 * ldb], row1);
warning:       |     ^~~~~~~~~~~~~
warning:       |     _mm_store_ps

error: build failed
@lilith
Copy link
Member

lilith commented Sep 7, 2021 via email

@darklow
Copy link

darklow commented Nov 14, 2021

Now with the new generation of m1 silicon macs support would be great.

For me it fails with following error on m1 mac (Monterey 12.0.1):

   Compiling imageflow_helpers v0.1.0 (/Users/darklow/www/contribute/imageflow/imageflow_helpers)
   Compiling cookie_store v0.7.0
   Compiling tinytemplate v1.1.0
   Compiling assert-json-diff v1.1.0
   Compiling csv v1.1.3
The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

error: failed to run custom build command for `mozjpeg-sys v0.10.13`

Caused by:
  process didn't exit successfully: `/Users/darklow/www/contribute/imageflow/target/release/build/mozjpeg-sys-c9b5cd8de7e1d3e5/build-script-build` (exit status: 1)
  --- stdout
  cargo:include=/Users/darklow/www/contribute/imageflow/target/release/build/mozjpeg-sys-02bbc66f2e7fdd0c/out/include:/Users/darklow/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor
  cargo:lib_version=62
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("3")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp,fp16,frintts,jsconv,lor,lse,neon,pan,pauth,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,v8.1a,v8.2a,v8.3a,v8.4a,vh")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp,fp16,frintts,jsconv,lor,lse,neon,pan,pauth,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,v8.1a,v8.2a,v8.3a,v8.4a,vh")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp,fp16,frintts,jsconv,lor,lse,neon,pan,pauth,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,v8.1a,v8.2a,v8.3a,v8.4a,vh")
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "/Users/darklow/www/contribute/imageflow/target/release/build/mozjpeg-sys-02bbc66f2e7fdd0c/out/include" "-I" "/Users/darklow/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-xassembler-with-cpp" "-o" "/Users/darklow/www/contribute/imageflow/target/release/build/mozjpeg-sys-02bbc66f2e7fdd0c/out/vendor/simd/arm64/jsimd_neon.o" "-c" "vendor/simd/arm64/jsimd_neon.S"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1

  --- stderr


  error occurred: Command "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "/Users/darklow/www/contribute/imageflow/target/release/build/mozjpeg-sys-02bbc66f2e7fdd0c/out/include" "-I" "/Users/darklow/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjpeg-sys-0.10.13/vendor" "-xassembler-with-cpp" "-o" "/Users/darklow/www/contribute/imageflow/target/release/build/mozjpeg-sys-02bbc66f2e7fdd0c/out/vendor/simd/arm64/jsimd_neon.o" "-c" "vendor/simd/arm64/jsimd_neon.S" with args "cc" did not execute successfully (status code exit status: 1).


warning: build failed, waiting for other jobs to finish...
The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

error: build failed

@lilith
Copy link
Member

lilith commented Nov 14, 2021 via email

@darklow
Copy link

darklow commented Nov 16, 2021

For those who need to work with imageflow_tool for dev purposes on m1/silicon mac it is actually possible using docker:

docker run --platform linux/x86_64 -it imazen/imageflow_tool --help

For more flexible and reusable setups I prefer docker-compose.yml:

version: "3.7"

services:
  imageflow:
    image: imazen/imageflow_tool:latest
    container_name: imageflow
    platform: linux/x86_64
    entrypoint: tail -f /dev/null
    restart: unless-stopped
    volumes:
      - /local-dir/:/data

To run: docker-compose up -d
And now anytime I need to resize I just call

docker exec -it imageflow ./imageflow_tool

@machew
Copy link

machew commented Jul 8, 2022

Azure and AWS both have compelling ARM compute, and I was hoping to test out imageflow with these systems. Sems like support for aarch64 is becoming more commonplace and it would be great if this was revisited.

@chrux
Copy link

chrux commented Jul 26, 2022

I tried installing it using the repo and the build.sh bash and I got this error

Compiling tokio-native-tls v0.3.0
The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

error: failed to run custom build command for `libwebp-sys v0.6.0`

Caused by:
  process didn't exit successfully: `/Users/christian/Developer/cmnh/imageflow/target/release/build/libwebp-sys-647a8e6d13b44bda/build-script-build` (exit status: 1)
  --- stdout
  OPT_LEVEL = Some("3")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp16,frintts,jsconv,lor,lse,neon,paca,pacg,pan,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,vh")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp16,frintts,jsconv,lor,lse,neon,paca,pacg,pan,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,vh")
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "/Users/christian/.cargo/registry/src/github.com-1ecc6299db9ec823/libwebp-sys-0.6.0/vendor" "-fvisibility=hidden" "-DNDEBUG=1" "-D_THREAD_SAFE=1" "-DWEBP_HAVE_NEON=1" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/libwebp-sys-0c4a95c8caa884c9/out/alpha_dec.o" "-c" "/Users/christian/.cargo/registry/src/github.com-1ecc6299db9ec823/libwebp-sys-0.6.0/vendor/src/dec/alpha_dec.c"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "/Users/christian/.cargo/registry/src/github.com-1ecc6299db9ec823/libwebp-sys-0.6.0/vendor" "-fvisibility=hidden" "-DNDEBUG=1" "-D_THREAD_SAFE=1" "-DWEBP_HAVE_NEON=1" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/libwebp-sys-0c4a95c8caa884c9/out/buffer_dec.o" "-c" "/Users/christian/.cargo/registry/src/github.com-1ecc6299db9ec823/libwebp-sys-0.6.0/vendor/src/dec/buffer_dec.c"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1

  --- stderr


  error occurred: Command "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "/Users/christian/.cargo/registry/src/github.com-1ecc6299db9ec823/libwebp-sys-0.6.0/vendor" "-fvisibility=hidden" "-DNDEBUG=1" "-D_THREAD_SAFE=1" "-DWEBP_HAVE_NEON=1" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/libwebp-sys-0c4a95c8caa884c9/out/alpha_dec.o" "-c" "/Users/christian/.cargo/registry/src/github.com-1ecc6299db9ec823/libwebp-sys-0.6.0/vendor/src/dec/alpha_dec.c" with args "cc" did not execute successfully (status code exit status: 1).


warning: build failed, waiting for other jobs to finish...
The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

error: failed to run custom build command for `lcms2-sys v3.1.9`

Caused by:
  process didn't exit successfully: `/Users/christian/Developer/cmnh/imageflow/target/release/build/lcms2-sys-7030ed9f6261030a/build-script-build` (exit status: 1)
  --- stdout
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("3")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp16,frintts,jsconv,lor,lse,neon,paca,pacg,pan,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,vh")
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "vendor/include" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/lcms2-sys-37a82551878918a0/out/vendor/src/cmsalpha.o" "-c" "vendor/src/cmsalpha.c"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "vendor/include" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/lcms2-sys-37a82551878918a0/out/vendor/src/cmscam02.o" "-c" "vendor/src/cmscam02.c"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1

  --- stderr


  error occurred: Command "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "vendor/include" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/lcms2-sys-37a82551878918a0/out/vendor/src/cmsalpha.o" "-c" "vendor/src/cmsalpha.c" with args "cc" did not execute successfully (status code exit status: 1).


The following warnings were emitted during compilation:

warning: clang: error: the clang compiler does not support '-march=native'
warning: clang: error: the clang compiler does not support '-march=native'

error: failed to run custom build command for `libz-sys v1.1.8`

Caused by:
  process didn't exit successfully: `/Users/christian/Developer/cmnh/imageflow/target/release/build/libz-sys-62954c4d81376155/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=LIBZ_SYS_STATIC
  cargo:rerun-if-changed=build.rs
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("3")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = Some(" -march=native -O3")
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp16,frintts,jsconv,lor,lse,neon,paca,pacg,pan,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,vh")
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "src/zlib" "-fvisibility=hidden" "-DSTDC" "-D_LARGEFILE64_SOURCE" "-D_POSIX_SOURCE" "-D_C99_SOURCE" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/libz-sys-0c3bbc00c62653fa/out/lib/src/zlib/adler32.o" "-c" "src/zlib/adler32.c"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "src/zlib" "-fvisibility=hidden" "-DSTDC" "-D_LARGEFILE64_SOURCE" "-D_POSIX_SOURCE" "-D_C99_SOURCE" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/libz-sys-0c3bbc00c62653fa/out/lib/src/zlib/compress.o" "-c" "src/zlib/compress.c"
  cargo:warning=clang: error: the clang compiler does not support '-march=native'
  exit status: 1

  --- stderr


  error occurred: Command "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-march=native" "-O3" "-I" "src/zlib" "-fvisibility=hidden" "-DSTDC" "-D_LARGEFILE64_SOURCE" "-D_POSIX_SOURCE" "-D_C99_SOURCE" "-o" "/Users/christian/Developer/cmnh/imageflow/target/release/build/libz-sys-0c3bbc00c62653fa/out/lib/src/zlib/adler32.o" "-c" "src/zlib/adler32.c" with args "cc" did not execute successfully (status code exit status: 1).

@lilith
Copy link
Member

lilith commented Sep 7, 2022

I wouldn't suggest using build.sh, it's not going to be helpful.

One issue is that Imageflow uses x86_84 SIMD intrinsics: https://github.com/imazen/imageflow/blob/main/imageflow_core/src/graphics/scaling.rs#L233

@lilith
Copy link
Member

lilith commented Sep 7, 2022

I don't have an M1/M2 device, so this is pretty impossible for me to work on.

In May 2020 I purchased a $1550 MacBook Air just for imageflow, to debug it and ensure it ran well. A few months later the M1 came out.

If anyone wants to trade their M1 laptop for an 13" Intel MacBook Air Retina let me know....

Retina display with True Tone
1.2GHz quad-core 10th-generation Intel Core i7 processor, Turbo Boost up to 3.8GHz
16GB 3733MHz LPDDR4X memory
512GB SSD storage
Intel Iris Plus Graphics

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants