| //@ only-x86_64 |
| // Set the base cpu explicitly, in case the default has been changed. |
| //@ compile-flags: -Copt-level=3 -Ctarget-cpu=x86-64 |
| |
| #![crate_type = "lib"] |
| #![feature(target_feature_11)] |
| |
| #[cfg(target_arch = "x86_64")] |
| use std::arch::x86_64::*; |
| |
| // CHECK-LABEL: @with_avx |
| #[no_mangle] |
| #[cfg(target_arch = "x86_64")] |
| #[target_feature(enable = "avx")] |
| fn with_avx(x: __m256) -> __m256 { |
| // CHECK: fadd |
| let add = { |
| #[inline(always)] |
| |x, y| unsafe { _mm256_add_ps(x, y) } |
| }; |
| add(x, x) |
| } |
| |
| // CHECK-LABEL: @without_avx |
| #[no_mangle] |
| #[cfg(target_arch = "x86_64")] |
| unsafe fn without_avx(x: __m256) -> __m256 { |
| // CHECK-NOT: fadd |
| let add = { |
| #[inline(always)] |
| |x, y| unsafe { _mm256_add_ps(x, y) } |
| }; |
| add(x, x) |
| } |
| |
| // Don't allow the above CHECK-NOT to accidentally match a commit hash in the |
| // compiler version. |
| // CHECK-LABEL: rustc version |