__m128d test_mm_cmpnlt_pd(__m128d A, __m128d B) { // DAG-LABEL: test_mm_cmpnlt_pd // DAG: call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) // // ASM-LABEL: test_mm_cmpnlt_pd // ASM: cmpnltpd return _mm_cmpnlt_pd(A, B); }
); namespace nt2 { namespace ext { template<class Dummy> struct call<tag::is_not_less_(tag::simd_<tag::double_, tag::sse_> , tag::simd_<tag::double_, tag::sse_> ), tag::cpu_, Dummy> : callable { template<class Sig> struct result; template<class This,class A0> struct result<This(A0, A0)> : meta::strip<A0>{};// NT2_FUNCTOR_CALL(2) { A0 that = { _mm_cmpnlt_pd(a0,a1)}; return that; } }; } } ///////////////////////////////////////////////////////////////////////////// // Implementation when type A0 is float ///////////////////////////////////////////////////////////////////////////// NT2_REGISTER_DISPATCH(tag::is_not_less_, tag::cpu_, (A0), ((simd_<float_<A0>,tag::sse_>)) ((simd_<float_<A0>,tag::sse_>)) ); namespace nt2 { namespace ext {
__m128d test_mm_cmpnlt_pd(__m128d __a, __m128d __b) { // CHECK-LABEL: @test_mm_cmpnlt_pd // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) return _mm_cmpnlt_pd(__a, __b); }