예제 #1
0
__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);
}
예제 #2
0
                        );

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
{
예제 #3
0
__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);
}