//@ only-x86_64
//@ ignore-sgx Tests incompatible with LVI mitigations
//@ assembly-output: emit-asm
// make sure the feature is not enabled at compile-time
//@ compile-flags: -C opt-level=3 -C target-feature=-sse4.1 -C llvm-args=-x86-asm-syntax=intel

#![feature(target_feature_11)]
#![crate_type = "rlib"]

use std::arch::x86_64::{__m128, _mm_blend_ps};

#[no_mangle]
pub unsafe fn sse41_blend_nofeature(x: __m128, y: __m128) -> __m128 {
    let f = {
        // check that _mm_blend_ps is not being inlined into the closure
        // CHECK-LABEL: {{sse41_blend_nofeature.*closure.*:}}
        // CHECK-NOT: blendps
        // CHECK: {{call .*_mm_blend_ps.*}}
        // CHECK-NOT: blendps
        // CHECK: ret
        #[inline(never)]
        |x, y| _mm_blend_ps(x, y, 0b0101)
    };
    f(x, y)
}

#[no_mangle]
#[target_feature(enable = "sse4.1")]
pub fn sse41_blend_noinline(x: __m128, y: __m128) -> __m128 {
    let f = {
        // check that _mm_blend_ps is being inlined into the closure
        // CHECK-LABEL: {{sse41_blend_noinline.*closure.*:}}
        // CHECK-NOT: _mm_blend_ps
        // CHECK: blendps
        // CHECK-NOT: _mm_blend_ps
        // CHECK: ret
        #[inline(never)]
        |x, y| unsafe { _mm_blend_ps(x, y, 0b0101) }
    };
    f(x, y)
}

#[no_mangle]
#[target_feature(enable = "sse4.1")]
pub fn sse41_blend_doinline(x: __m128, y: __m128) -> __m128 {
    // check that the closure and _mm_blend_ps are being inlined into the function
    // CHECK-LABEL: sse41_blend_doinline:
    // CHECK-NOT: {{sse41_blend_doinline.*closure.*}}
    // CHECK-NOT: _mm_blend_ps
    // CHECK: blendps
    // CHECK-NOT: {{sse41_blend_doinline.*closure.*}}
    // CHECK-NOT: _mm_blend_ps
    // CHECK: ret
    let f = {
        #[inline]
        |x, y| unsafe { _mm_blend_ps(x, y, 0b0101) }
    };
    f(x, y)
}
