gemm
gemm copied to clipboard
gemm_f16: Build fails in debug mode for AArch64
Hi,
I created a small Rust example:
use gemm_f16::f16;
fn main() {
println!("Hello, fp16!");
let a = f16::from_f32(3.1f32);
let b = f16::from_f32(2.2f32);
let c = a * b;
if c.is_normal() {
println!("Is normal!");
}
println!("Result {c}")
}
Building in release mode for target AArch64/Linux works, but it fails when building in debug mode.
error: instruction requires: fullfp16
But I am not sure in which context fillfp16 is not supported, maybe the llvm toolchain?
microdoc@microdoc-tools-builder:~/proj/f16tests$ cargo build --release --target aarch64-unknown-linux-gnu
Finished `release` profile [optimized] target(s) in 0.02s
microdoc@microdoc-tools-builder:~/proj/f16tests$ cargo build --target aarch64-unknown-linux-gnu
Compiling reborrow v0.5.5
Compiling cfg-if v1.0.0
Compiling libm v0.2.8
Compiling crossbeam-utils v0.8.20
Compiling rayon-core v1.12.1
Compiling either v1.12.0
Compiling bitflags v1.3.2
Compiling once_cell v1.19.0
Compiling num-traits v0.2.19
Compiling bytemuck v1.16.1
Compiling raw-cpuid v10.7.0
Compiling dyn-stack v0.10.0
Compiling crossbeam-epoch v0.9.18
Compiling crossbeam-deque v0.8.5
Compiling rayon v1.10.0
Compiling num-complex v0.4.6
Compiling half v2.4.1
Compiling pulp v0.18.21
Compiling gemm-common v0.18.0
Compiling gemm-f32 v0.18.0
Compiling gemm-f16 v0.18.0
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:2000:18
|
2000 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[3]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[3]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:2018:18
|
2018 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[6]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[6]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:2006:18
|
2006 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[4]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[4]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:1988:18
|
1988 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[1]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[1]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:2024:18
|
2024 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[7]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[7]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:2012:18
|
2012 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[5]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[5]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:1982:18
|
1982 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[0]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[0]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:1994:18
|
1994 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.h[2]",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.h[2]
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:1954:18
|
1954 | "fadd {0:v}.8h, {1:v}.8h, {2:v}.8h",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fadd v0.8h, v1.8h, v2.8h
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:1966:18
|
1966 | "fmla {0:v}.8h, {1:v}.8h, {2:v}.8h",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmla v0.8h, v1.8h, v2.8h
| ^
error: instruction requires: fullfp16
--> /home/microdoc/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gemm-common-0.18.0/src/simd.rs:1940:18
|
1940 | "fmul {0:v}.8h, {1:v}.8h, {2:v}.8h",
| ^
|
note: instantiated into assembly here
--> <inline asm>:1:2
|
1 | fmul v0.8h, v1.8h, v2.8h
| ^
error: could not compile `gemm-f16` (lib) due to 11 previous errors