示例#1
0
文件: testimm-3.c 项目: 0day-ci/gcc
void
test8bit (void)
{
  i1 = _mm_cmpistrm (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  k1 = _mm_cmpistri (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  k1 = _mm_cmpistra (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  k1 = _mm_cmpistrc (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  k1 = _mm_cmpistro (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  k1 = _mm_cmpistrs (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  k1 = _mm_cmpistrz (i2, i3, k4);	  /* { dg-error "the third argument must be an 8-bit immediate" } */
  i1 = _mm_cmpestrm (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  k1 = _mm_cmpestri (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  k1 = _mm_cmpestra (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  k1 = _mm_cmpestrc (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  k1 = _mm_cmpestro (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  k1 = _mm_cmpestrs (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  k1 = _mm_cmpestrz (i2, k2, i3, k3, k4); /* { dg-error "the fifth argument must be an 8-bit immediate" } */
  b1 = _mm256_blend_ps (b2, b3, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  k1 = _cvtss_sh (f1, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm256_cvtps_ph (b2, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  b1 = _mm256_dp_ps (b2, b3, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  e1 = _mm256_permute2f128_pd (e2, e3, k4);/* { dg-error "the last argument must be an 8-bit immediate" } */
  b1 = _mm256_permute2f128_ps (b2, b3, k4);/* { dg-error "the last argument must be an 8-bit immediate" } */
  l1 = _mm256_permute2f128_si256 (l2, l3, k4);/* { dg-error "the last argument must be an 8-bit immediate" } */
  b1 = _mm256_permute_ps (b2, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_aeskeygenassist_si128 (i2, k4);/* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_blend_epi16 (i2, i3, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_clmulepi64_si128 (i2, i3, k4); /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_cvtps_ph (a1, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
  d1 = _mm_dp_pd (d2, d3, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
  a1 = _mm_dp_ps (a2, a3, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
  a1 = _mm_insert_ps (a2, a3, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_mpsadbw_epu8 (i2, i3, k4);	  /* { dg-error "the last argument must be an 8-bit immediate" } */
  a1 = _mm_permute_ps (a2, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_slli_si128 (i2, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
  i1 = _mm_srli_si128 (i2, k4);		  /* { dg-error "the last argument must be an 8-bit immediate" } */
}
示例#2
0
static void
sse4_2_test (void)
{
    union
    {
        __m128i x[NUM];
        char c[NUM *16];
    } src1, src2;
    __m128i res, correct;
    int correct_flags, l1, l2;
    int flags, cf, zf, sf, of, af;
    int i;

    for (i = 0; i < NUM *16; i++)
    {
        src1.c[i] = rand ();
        src2.c[i] = rand ();
    }

    for (i = 0; i < NUM; i++)
    {
        l1 = rand () % 18;
        l2 = rand () % 18;

        switch ((rand () % 4))
        {
        case 0:
            res = _mm_cmpestrm (src1.x[i], l1, src2.x[i], l2, IMM_VAL0);
            cf = _mm_cmpestrc (src1.x[i], l1, src2.x[i], l2, IMM_VAL0);
            zf = _mm_cmpestrz (src1.x[i], l1, src2.x[i], l2, IMM_VAL0);
            sf = _mm_cmpestrs (src1.x[i], l1, src2.x[i], l2, IMM_VAL0);
            of = _mm_cmpestro (src1.x[i], l1, src2.x[i], l2, IMM_VAL0);
            af = _mm_cmpestra (src1.x[i], l1, src2.x[i], l2, IMM_VAL0);
            correct = cmp_em (&src1.x[i], l1, &src2.x[i], l2, IMM_VAL0,
                              &correct_flags);
            break;

        case 1:
            res = _mm_cmpestrm (src1.x[i], l1, src2.x[i], l2, IMM_VAL1);
            cf = _mm_cmpestrc (src1.x[i], l1, src2.x[i], l2, IMM_VAL1);
            zf = _mm_cmpestrz (src1.x[i], l1, src2.x[i], l2, IMM_VAL1);
            sf = _mm_cmpestrs (src1.x[i], l1, src2.x[i], l2, IMM_VAL1);
            of = _mm_cmpestro (src1.x[i], l1, src2.x[i], l2, IMM_VAL1);
            af = _mm_cmpestra (src1.x[i], l1, src2.x[i], l2, IMM_VAL1);
            correct = cmp_em (&src1.x[i], l1, &src2.x[i], l2, IMM_VAL1,
                              &correct_flags);
            break;

        case 2:
            res = _mm_cmpestrm (src1.x[i], l1, src2.x[i], l2, IMM_VAL2);
            cf = _mm_cmpestrc (src1.x[i], l1, src2.x[i], l2, IMM_VAL2);
            zf = _mm_cmpestrz (src1.x[i], l1, src2.x[i], l2, IMM_VAL2);
            sf = _mm_cmpestrs (src1.x[i], l1, src2.x[i], l2, IMM_VAL2);
            of = _mm_cmpestro (src1.x[i], l1, src2.x[i], l2, IMM_VAL2);
            af = _mm_cmpestra (src1.x[i], l1, src2.x[i], l2, IMM_VAL2);
            correct = cmp_em (&src1.x[i], l1, &src2.x[i], l2, IMM_VAL2,
                              &correct_flags);
            break;

        default:
            res = _mm_cmpestrm (src1.x[i], l1, src2.x[i], l2, IMM_VAL3);
            cf = _mm_cmpestrc (src1.x[i], l1, src2.x[i], l2, IMM_VAL3);
            zf = _mm_cmpestrz (src1.x[i], l1, src2.x[i], l2, IMM_VAL3);
            sf = _mm_cmpestrs (src1.x[i], l1, src2.x[i], l2, IMM_VAL3);
            of = _mm_cmpestro (src1.x[i], l1, src2.x[i], l2, IMM_VAL3);
            af = _mm_cmpestra (src1.x[i], l1, src2.x[i], l2, IMM_VAL3);
            correct = cmp_em (&src1.x[i], l1, &src2.x[i], l2, IMM_VAL3,
                              &correct_flags);
            break;
        }

        if (memcmp (&correct, &res, sizeof (res)))
            abort ();

        flags = 0;
        if (cf)
            flags |= CFLAG;
        if (zf)
            flags |= ZFLAG;
        if (sf)
            flags |= SFLAG;
        if (of)
            flags |= OFLAG;

        if (flags != correct_flags
                || (af && (cf || zf))
                || (!af && !(cf || zf)))
            abort ();
    }
}
示例#3
0
int test_mm_cmpestrs(__m128i A, int LA, __m128i B, int LB) {
  // CHECK-LABEL: test_mm_cmpestrs
  // CHECK: call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
  return _mm_cmpestrs(A, LA, B, LB, 7);
}
示例#4
0
int test_mm_cmpestrs(__m128i A, int LA, __m128i B, int LB) {
  // CHECK-LABEL: test_mm_cmpestrs
  // CHECK: @llvm.x86.sse42.pcmpestris128
  return _mm_cmpestrs(A, LA, B, LB, 7);
}