Beispiel #1
0
int
main (void)
{
  vector int a = { 0x11111111, 0x22222222 };
  vector int b = { 0x33333333, 0x44444444 };
  vector int c;

  /* c[hi] = a[hi], c[lo] = b[hi]  */
  c = __ev_mergehi (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x11111111 : 0x44444444))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x33333333 : 0x22222222))
    abort ();
  /* c[hi] = a[lo], c[lo] = b[lo]  */
  c = __ev_mergelo (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x22222222 : 0x33333333))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x44444444 : 0x11111111))
    abort ();
  /* c[hi] = a[lo], c[lo] = b[hi]  */
  c = __ev_mergelohi (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x22222222 : 0x44444444))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x33333333 : 0x11111111))
    abort ();
  /* c[hi] = a[hi], c[lo] = b[lo]  */
  c = __ev_mergehilo (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x11111111 : 0x33333333))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x44444444 : 0x22222222))
    abort ();

  /* c[hi] = a[hi], c[lo] = b[hi]  */
  c = __builtin_spe_evmergehi (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x11111111 : 0x44444444))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x33333333 : 0x22222222))
    abort ();
  /* c[hi] = a[lo], c[lo] = b[lo]  */
  c = __builtin_spe_evmergelo (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x22222222 : 0x33333333))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x44444444 : 0x11111111))
    abort ();
  /* c[hi] = a[lo], c[lo] = b[hi]  */
  c = __builtin_spe_evmergelohi (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x22222222 : 0x44444444))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x33333333 : 0x11111111))
    abort ();
  /* c[hi] = a[hi], c[lo] = b[lo]  */
  c = __builtin_spe_evmergehilo (a, b);
  if (c[0] != (BIG_ENDIAN ? 0x11111111 : 0x33333333))
    abort ();
  if (c[1] != (BIG_ENDIAN ? 0x44444444 : 0x22222222))
    abort ();

  return 0;
}
Beispiel #2
0
int
main (void)
{
    /* Generic binary operations.  */
    c = __builtin_spe_evaddw (a, b);
    c = __builtin_spe_evand (a, b);
    c = __builtin_spe_evandc (a, b);
    c = __builtin_spe_evdivws (a, b);
    c = __builtin_spe_evdivwu (a, b);
    c = __builtin_spe_eveqv (a, b);
    h = __builtin_spe_evfsadd (f, g);
    h = __builtin_spe_evfsdiv (f, g);
    h = __builtin_spe_evfsmul (f, g);
    h = __builtin_spe_evfssub (f, g);
    c = __builtin_spe_evlddx (ap, j);
    c = __builtin_spe_evldhx (ap, j);
    c = __builtin_spe_evldwx (ap, j);
    c = __builtin_spe_evlhhesplatx (usp, j);
    c = __builtin_spe_evlhhossplatx (usp, j);
    c = __builtin_spe_evlhhousplatx (usp, j);
    c = __builtin_spe_evlwhex (uip, j);
    c = __builtin_spe_evlwhosx (uip, j);
    c = __builtin_spe_evlwhoux (uip, j);
    c = __builtin_spe_evlwhsplatx (uip, j);
    c = __builtin_spe_evlwwsplatx (uip, j);
    c = __builtin_spe_evmergehi (a, b);
    c = __builtin_spe_evmergehilo (a, b);
    c = __builtin_spe_evmergelo (a, b);
    c = __builtin_spe_evmergelohi (a, b);
    c = __builtin_spe_evmhegsmfaa (a, b);
    c = __builtin_spe_evmhegsmfan (a, b);
    c = __builtin_spe_evmhegsmiaa (a, b);
    c = __builtin_spe_evmhegsmian (a, b);
    c = __builtin_spe_evmhegumiaa (a, b);
    c = __builtin_spe_evmhegumian (a, b);
    c = __builtin_spe_evmhesmf (a, b);
    c = __builtin_spe_evmhesmfa (a, b);
    c = __builtin_spe_evmhesmfaaw (a, b);
    c = __builtin_spe_evmhesmfanw (a, b);
    c = __builtin_spe_evmhesmi (a, b);
    c = __builtin_spe_evmhesmia (a, b);
    c = __builtin_spe_evmhesmiaaw (a, b);
    c = __builtin_spe_evmhesmianw (a, b);
    c = __builtin_spe_evmhessf (a, b);
    c = __builtin_spe_evmhessfa (a, b);
    c = __builtin_spe_evmhessfaaw (a, b);
    c = __builtin_spe_evmhessfanw (a, b);
    c = __builtin_spe_evmhessiaaw (a, b);
    c = __builtin_spe_evmhessianw (a, b);
    c = __builtin_spe_evmheumi (a, b);
    c = __builtin_spe_evmheumia (a, b);
    c = __builtin_spe_evmheumiaaw (a, b);
    c = __builtin_spe_evmheumianw (a, b);
    c = __builtin_spe_evmheusiaaw (a, b);
    c = __builtin_spe_evmheusianw (a, b);
    c = __builtin_spe_evmhogsmfaa (a, b);
    c = __builtin_spe_evmhogsmfan (a, b);
    c = __builtin_spe_evmhogsmiaa (a, b);
    c = __builtin_spe_evmhogsmian (a, b);
    c = __builtin_spe_evmhogumiaa (a, b);
    c = __builtin_spe_evmhogumian (a, b);
    c = __builtin_spe_evmhosmf (a, b);
    c = __builtin_spe_evmhosmfa (a, b);
    c = __builtin_spe_evmhosmfaaw (a, b);
    c = __builtin_spe_evmhosmfanw (a, b);
    c = __builtin_spe_evmhosmi (a, b);
    c = __builtin_spe_evmhosmia (a, b);
    c = __builtin_spe_evmhosmiaaw (a, b);
    c = __builtin_spe_evmhosmianw (a, b);
    c = __builtin_spe_evmhossf (a, b);
    c = __builtin_spe_evmhossfa (a, b);
    c = __builtin_spe_evmhossfaaw (a, b);
    c = __builtin_spe_evmhossfanw (a, b);
    c = __builtin_spe_evmhossiaaw (a, b);
    c = __builtin_spe_evmhossianw (a, b);
    c = __builtin_spe_evmhoumi (a, b);
    c = __builtin_spe_evmhoumia (a, b);
    c = __builtin_spe_evmhoumiaaw (a, b);
    c = __builtin_spe_evmhoumianw (a, b);
    c = __builtin_spe_evmhousiaaw (a, b);
    c = __builtin_spe_evmhousianw (a, b);
    c = __builtin_spe_evmwhsmf (a, b);
    c = __builtin_spe_evmwhsmfa (a, b);
    c = __builtin_spe_evmwhsmi (a, b);
    c = __builtin_spe_evmwhsmia (a, b);
    c = __builtin_spe_evmwhssf (a, b);
    c = __builtin_spe_evmwhssfa (a, b);
    c = __builtin_spe_evmwhumi (a, b);
    c = __builtin_spe_evmwhumia (a, b);
    c = __builtin_spe_evmwlsmf (a, b);
    c = __builtin_spe_evmwlsmfa (a, b);
    c = __builtin_spe_evmwlsmfaaw (a, b);
    c = __builtin_spe_evmwlsmfanw (a, b);
    c = __builtin_spe_evmwlsmiaaw (a, b);
    c = __builtin_spe_evmwlsmianw (a, b);
    c = __builtin_spe_evmwlssf (a, b);
    c = __builtin_spe_evmwlssfa (a, b);
    c = __builtin_spe_evmwlssfaaw (a, b);
    c = __builtin_spe_evmwlssfanw (a, b);
    c = __builtin_spe_evmwlssiaaw (a, b);
    c = __builtin_spe_evmwlssianw (a, b);
    c = __builtin_spe_evmwlumi (a, b);
    c = __builtin_spe_evmwlumia (a, b);
    c = __builtin_spe_evmwlumiaaw (a, b);
    c = __builtin_spe_evmwlumianw (a, b);
    c = __builtin_spe_evmwlusiaaw (a, b);
    c = __builtin_spe_evmwlusianw (a, b);
    c = __builtin_spe_evmwsmf (a, b);
    c = __builtin_spe_evmwsmfa (a, b);
    c = __builtin_spe_evmwsmfaa (a, b);
    c = __builtin_spe_evmwsmfan (a, b);
    c = __builtin_spe_evmwsmi (a, b);
    c = __builtin_spe_evmwsmia (a, b);
    c = __builtin_spe_evmwsmiaa (a, b);
    c = __builtin_spe_evmwsmian (a, b);
    c = __builtin_spe_evmwssf (a, b);
    c = __builtin_spe_evmwssfa (a, b);
    c = __builtin_spe_evmwssfaa (a, b);
    c = __builtin_spe_evmwssfan (a, b);
    c = __builtin_spe_evmwumi (a, b);
    c = __builtin_spe_evmwumia (a, b);
    c = __builtin_spe_evmwumiaa (a, b);
    c = __builtin_spe_evmwumian (a, b);
    c = __builtin_spe_evnand (a, b);
    c = __builtin_spe_evnor (a, b);
    c = __builtin_spe_evor (a, b);
    c = __builtin_spe_evorc (a, b);
    c = __builtin_spe_evrlw (a, b);
    c = __builtin_spe_evslw (a, b);
    c = __builtin_spe_evsrws (a, b);
    c = __builtin_spe_evsrwu (a, b);
    c = __builtin_spe_evsubfw (a, b);
    c = __builtin_spe_evxor (a, b);
    /* GAS bug not implemented.
    c = __builtin_spe_evmwhssfaa (a, b);
    c = __builtin_spe_evmwhssmaa (a, b);
    c = __builtin_spe_evmwhsmfaa (a, b);
    c = __builtin_spe_evmwhsmiaa (a, b);
    c = __builtin_spe_evmwhusiaa (a, b);
    c = __builtin_spe_evmwhumiaa (a, b);
    c = __builtin_spe_evmwhssfan (a, b);
    c = __builtin_spe_evmwhssian (a, b);
    c = __builtin_spe_evmwhsmfan (a, b);
    c = __builtin_spe_evmwhsmian (a, b);
    c = __builtin_spe_evmwhusian (a, b);
    c = __builtin_spe_evmwhumian (a, b);
    c = __builtin_spe_evmwhgssfaa (a, b);
    c = __builtin_spe_evmwhgsmfaa (a, b);
    c = __builtin_spe_evmwhgsmiaa (a, b);
    c = __builtin_spe_evmwhgumiaa (a, b);
    c = __builtin_spe_evmwhgssfan (a, b);
    c = __builtin_spe_evmwhgsmfan (a, b);
    c = __builtin_spe_evmwhgsmian (a, b);
    c = __builtin_spe_evmwhgumian (a, b);
    */
    i = __builtin_spe_brinc (i, j);

    /* Generic unary operations.  */
    a = __builtin_spe_evabs (b);
    a = __builtin_spe_evaddsmiaaw (b);
    a = __builtin_spe_evaddssiaaw (b);
    a = __builtin_spe_evaddumiaaw (b);
    a = __builtin_spe_evaddusiaaw (b);
    a = __builtin_spe_evcntlsw (b);
    a = __builtin_spe_evcntlzw (b);
    a = __builtin_spe_evextsb (b);
    a = __builtin_spe_evextsh (b);
    f = __builtin_spe_evfsabs (g);
    f = __builtin_spe_evfscfsf (g);
    a = __builtin_spe_evfscfsi (g);
    f = __builtin_spe_evfscfuf (g);
    f = __builtin_spe_evfscfui (a);
    f = __builtin_spe_evfsctsf (g);
    a = __builtin_spe_evfsctsi (g);
    a = __builtin_spe_evfsctsiz (g);
    f = __builtin_spe_evfsctuf (g);
    a = __builtin_spe_evfsctui (g);
    a = __builtin_spe_evfsctuiz (g);
    f = __builtin_spe_evfsnabs (g);
    f = __builtin_spe_evfsneg (g);
    a = __builtin_spe_evmra (b);
    a = __builtin_spe_evneg (b);
    a = __builtin_spe_evrndw (b);
    a = __builtin_spe_evsubfsmiaaw (b);
    a = __builtin_spe_evsubfssiaaw (b);
    a = __builtin_spe_evsubfumiaaw (b);
    a = __builtin_spe_evsubfusiaaw (b);

    /* Unary operations of the form: X = foo (5_bit_signed_immediate).  */
    a = __builtin_spe_evsplatfi (5);
    a = __builtin_spe_evsplati (5);

    /* Binary operations of the form: X = foo(Y, 5_bit_immediate).  */
    a = __builtin_spe_evaddiw (b, 13);
    a = __builtin_spe_evldd (ap, 13);
    a = __builtin_spe_evldh (ap, 13);
    a = __builtin_spe_evldw (ap, 13);
    a = __builtin_spe_evlhhesplat (usp, 13);
    a = __builtin_spe_evlhhossplat (usp, 13);
    a = __builtin_spe_evlhhousplat (usp, 13);
    a = __builtin_spe_evlwhe (uip, 13);
    a = __builtin_spe_evlwhos (uip, 13);
    a = __builtin_spe_evlwhou (uip, 13);
    a = __builtin_spe_evlwhsplat (uip, 13);
    a = __builtin_spe_evlwwsplat (uip, 13);

    a = __builtin_spe_evrlwi (b, 13);
    a = __builtin_spe_evslwi (b, 13);
    a = __builtin_spe_evsrwis (b, 13);
    a = __builtin_spe_evsrwiu (b, 13);
    a = __builtin_spe_evsubifw (b, 13);

    /* Store indexed builtins.  */
    __builtin_spe_evstddx (b, ap, j);
    __builtin_spe_evstdhx (b, ap, j);
    __builtin_spe_evstdwx (b, ap, j);
    __builtin_spe_evstwhex (b, uip, j);
    __builtin_spe_evstwhox (b, uip, j);
    __builtin_spe_evstwwex (b, uip, j);
    __builtin_spe_evstwwox (b, uip, j);

    /* Store indexed immediate builtins.  */
    __builtin_spe_evstdd (b, ap, 5);
    __builtin_spe_evstdh (b, ap, 5);
    __builtin_spe_evstdw (b, ap, 5);
    __builtin_spe_evstwhe (b, uip, 5);
    __builtin_spe_evstwho (b, uip, 5);
    __builtin_spe_evstwwe (b, uip, 5);
    __builtin_spe_evstwwo (b, uip, 5);

    /* SPEFSCR builtins.  */
    i = __builtin_spe_mfspefscr ();
    __builtin_spe_mtspefscr (j);

    test_api ();

    return 0;
}