Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 31 additions & 36 deletions crates/intrinsic-test/missing_aarch64.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
# Not supported by qemu (will throw illegal instruction)
vamax_f16
vamaxq_f16
vamin_f16
vaminq_f16
vamin_f32
vaminq_f32
vaminq_f64
vamax_f16
vamaxq_f16
vamax_f32
vamaxq_f32
vamaxq_f64
vscale_f16
vscale_f32
vscaleq_f16
Expand Down Expand Up @@ -37,39 +43,6 @@ vluti2q_laneq_s8
vluti2q_laneq_u16
vluti2q_laneq_u8
vluti2q_lane_u8

# Not implemented in stdarch yet
vbfdot_f32
vbfdot_lane_f32
vbfdot_laneq_f32
vbfdotq_f32
vbfdotq_lane_f32
vbfdotq_laneq_f32
vbfmlalbq_f32
vbfmlalbq_lane_f32
vbfmlalbq_laneq_f32
vbfmlaltq_f32
vbfmlaltq_lane_f32
vbfmlaltq_laneq_f32
vbfmmlaq_f32


# Implemented in stdarch, but missing in Clang.
vrnd32xq_f64
vrnd32zq_f64
vrnd64xq_f64
vrnd64zq_f64
vamin_f32
vaminq_f32
vaminq_f64
vamax_f32
vamaxq_f32
vamaxq_f64
# LLVM select error, and missing in Clang.
vrnd32x_f64
vrnd32z_f64
vrnd64x_f64
vrnd64z_f64
vluti4q_lane_f16_x2
vluti4q_lane_p16_x2
vluti4q_lane_p8
Expand All @@ -85,5 +58,27 @@ vluti4q_laneq_s8
vluti4q_laneq_u16_x2
vluti4q_laneq_u8

# Broken in Clang
# Not implemented in stdarch yet
vcvtad_s32_f64
vcvtad_u32_f64
vcvtd_s32_f64
vcvtd_u32_f64
vcvtmd_s32_f64
vcvtmd_u32_f64
vcvtnd_s32_f64
vcvtnd_u32_f64
vcvtpd_s32_f64
vcvtpd_u32_f64
vcvts_s64_f32
vcvts_u64_f32
vcvtas_s64_f32
vcvtas_u64_f32
vcvtms_s64_f32
vcvtms_u64_f32
vcvtns_s64_f32
vcvtns_u64_f32
vcvtps_s64_f32
vcvtps_u64_f32

# Broken in Clang (fixed in https://github.com/llvm/llvm-project/pull/156029)
vcvth_s16_f16
65 changes: 30 additions & 35 deletions crates/intrinsic-test/missing_aarch64_be.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,16 @@ vusdotq_laneq_s32

# Below are in common to missing_aarch64.txt
# Not supported by qemu (will throw illegal instruction)
vamax_f16
vamaxq_f16
vamin_f16
vaminq_f16
vamin_f32
vaminq_f32
vaminq_f64
vamax_f16
vamaxq_f16
vamax_f32
vamaxq_f32
vamaxq_f64
vscale_f16
vscale_f32
vscaleq_f16
Expand Down Expand Up @@ -77,39 +83,6 @@ vluti2q_laneq_s8
vluti2q_laneq_u16
vluti2q_laneq_u8
vluti2q_lane_u8

# Not implemented in stdarch yet
vbfdot_f32
vbfdot_lane_f32
vbfdot_laneq_f32
vbfdotq_f32
vbfdotq_lane_f32
vbfdotq_laneq_f32
vbfmlalbq_f32
vbfmlalbq_lane_f32
vbfmlalbq_laneq_f32
vbfmlaltq_f32
vbfmlaltq_lane_f32
vbfmlaltq_laneq_f32
vbfmmlaq_f32


# Implemented in stdarch, but missing in Clang.
vrnd32xq_f64
vrnd32zq_f64
vrnd64xq_f64
vrnd64zq_f64
vamin_f32
vaminq_f32
vaminq_f64
vamax_f32
vamaxq_f32
vamaxq_f64
# LLVM select error, and missing in Clang.
vrnd32x_f64
vrnd32z_f64
vrnd64x_f64
vrnd64z_f64
vluti4q_lane_f16_x2
vluti4q_lane_p16_x2
vluti4q_lane_p8
Expand All @@ -125,5 +98,27 @@ vluti4q_laneq_s8
vluti4q_laneq_u16_x2
vluti4q_laneq_u8

# Not implemented in stdarch yet
vcvtad_s32_f64
vcvtad_u32_f64
vcvtd_s32_f64
vcvtd_u32_f64
vcvtmd_s32_f64
vcvtmd_u32_f64
vcvtnd_s32_f64
vcvtnd_u32_f64
vcvtpd_s32_f64
vcvtpd_u32_f64
vcvts_s64_f32
vcvts_u64_f32
vcvtas_s64_f32
vcvtas_u64_f32
vcvtms_s64_f32
vcvtms_u64_f32
vcvtns_s64_f32
vcvtns_u64_f32
vcvtps_s64_f32
vcvtps_u64_f32

# Broken in Clang
vcvth_s16_f16
49 changes: 22 additions & 27 deletions crates/intrinsic-test/missing_arm.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
# Not implemented in stdarch yet
vbfdot_f32
vbfdot_lane_f32
vbfdot_laneq_f32
vbfdotq_f32
vbfdotq_lane_f32
vbfdotq_laneq_f32
vbfmlalbq_f32
vbfmlalbq_lane_f32
vbfmlalbq_laneq_f32
vbfmlaltq_f32
vbfmlaltq_lane_f32
vbfmlaltq_laneq_f32
vbfmmlaq_f32

# Implemented in Clang and stdarch for A64 only even though CSV claims A32 support
vaddq_p64
vbsl_p64
Expand Down Expand Up @@ -134,18 +119,6 @@ vcvth_f16_u32
vcvth_u32_f16
vcvth_n_f16_u32
vcvth_n_u32_f16
vcvtah_s32_f16
vcvtah_u32_f16
vcvtmh_s32_f16
vcvtmh_u32_f16
vcvtpq_s16_f16
vcvtpq_u16_f16
vcvtp_s16_f16
vcvtp_u16_f16
vcvtph_s32_f16
vcvtph_u32_f16
vcvtnh_u32_f16
vcvtnh_s32_f16
vfmlsl_low_f16
vfmlslq_low_f16
vfmlsl_high_f16
Expand Down Expand Up @@ -318,3 +291,25 @@ vcvta_s16_f16
vcvta_u16_f16
vceqz_f16
vceqzq_f16
vcvtah_s32_f16
vcvtah_u32_f16
vcvtmh_s32_f16
vcvtmh_u32_f16
vcvtpq_s16_f16
vcvtpq_u16_f16
vcvtp_s16_f16
vcvtp_u16_f16
vcvtph_s32_f16
vcvtph_u32_f16
vcvtnh_u32_f16
vcvtnh_s32_f16

# Missing in Clang
vusdot_laneq_s32
vsudot_laneq_s32
vusdotq_laneq_s32
vsudotq_laneq_s32
vdot_laneq_s32
vdot_laneq_u32
vdotq_laneq_s32
vdotq_laneq_u32
2 changes: 1 addition & 1 deletion crates/intrinsic-test/src/arm/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ pub fn build_cpp_compilation(config: &ProcessedCli) -> Option<CppCompilation> {
.add_extra_flags(["-ffp-contract=off", "-Wno-narrowing"]);

if !config.target.contains("v7") {
command = command.add_arch_flags(["faminmax", "lut", "sha3"]);
command = command.add_arch_flags(["faminmax", "lut", "sha3", "fp8"]);
}

if !cpp_compiler.contains("clang") {
Expand Down
4 changes: 3 additions & 1 deletion crates/intrinsic-test/src/arm/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ pub const PLATFORM_RUST_CFGS: &str = r#"
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_i8mm))]
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_sm4))]
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_ftts))]
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_aarch64_jscvt))]
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_feat_lut))]
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_fp8))]
#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(faminmax))]
#![feature(fmt_helpers_for_derive)]
#![feature(stdarch_neon_f16)]

Expand Down
Loading