Skip to content

'fma' is missing in target-feature  #40406

Closed
@fsasm

Description

@fsasm

When setting target-feature=+fma and printing the features via --print cfg only avx and sse* are listed as target features. Also queries like #[cfg(target_feature = "fma")] do not detect fma. FMA instructions like x86_mm256_fmadd_ps are only usable when fma is enable via target-feature as expected.

The output of rustc -C target-feature=+fma --print cfg is

debug_assertions
target_arch="x86_64"
target_endian="little"
target_env="gnu"
target_family="unix"
target_feature="avx"
target_feature="sse"
target_feature="sse2"
target_feature="sse3"
target_feature="sse4.1"
target_feature="sse4.2"
target_feature="ssse3"
target_has_atomic="16"
target_has_atomic="32"
target_has_atomic="64"
target_has_atomic="8"
target_has_atomic="ptr"
target_os="linux"
target_pointer_width="64"
target_thread_local
target_vendor="unknown"
unix

and the expected output is

[...]
target_feature="fma"
target_feature="avx"
target_feature="sse"
target_feature="sse2"
target_feature="sse3"
target_feature="sse4.1"
target_feature="sse4.2"
target_feature="ssse3"
[...]

Also this example

#![feature(cfg_target_feature)]

fn main() {
    #[cfg(target_feature = "fma")]
    println!("FMA is supported");

    #[cfg(not(target_feature = "fma"))]
    println!("FMA is not supported");
}

outputs FMA is not supported even if it was enabled.

Meta

rustc --version --verbose:
rustc 1.17.0-nightly (b1e3176 2017-03-03)
binary: rustc
commit-hash: b1e3176
commit-date: 2017-03-03
host: x86_64-unknown-linux-gnu
release: 1.17.0-nightly
LLVM version: 3.9

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions