1  /* { dg-do run } */
       2  /* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
       3  
       4  /* Test MIPS-3D branch-if-any-two builtin functions */
       5  #include <stdlib.h>
       6  #include <stdio.h>
       7  
       8  typedef float v2sf __attribute__ ((vector_size(8)));
       9  
      10  NOMIPS16 int test0 (v2sf a, v2sf b);
      11  NOMIPS16 int test1 (v2sf a, v2sf b);
      12  NOMIPS16 int test2 (v2sf a, v2sf b);
      13  NOMIPS16 int test3 (v2sf a, v2sf b);
      14  NOMIPS16 int test4 (v2sf a, v2sf b);
      15  NOMIPS16 int test5 (v2sf a, v2sf b);
      16  NOMIPS16 int test6 (v2sf a, v2sf b);
      17  NOMIPS16 int test7 (v2sf a, v2sf b);
      18  NOMIPS16 int test8 (v2sf a, v2sf b);
      19  NOMIPS16 int test9 (v2sf a, v2sf b);
      20  NOMIPS16 int test10 (v2sf a, v2sf b);
      21  NOMIPS16 int test11 (v2sf a, v2sf b);
      22  NOMIPS16 int test12 (v2sf a, v2sf b);
      23  NOMIPS16 int test13 (v2sf a, v2sf b);
      24  NOMIPS16 int test14 (v2sf a, v2sf b);
      25  NOMIPS16 int test15 (v2sf a, v2sf b);
      26  NOMIPS16 int test16 (v2sf a, v2sf b);
      27  NOMIPS16 int test17 (v2sf a, v2sf b);
      28  NOMIPS16 int test18 (v2sf a, v2sf b);
      29  NOMIPS16 int test19 (v2sf a, v2sf b);
      30  NOMIPS16 int test20 (v2sf a, v2sf b);
      31  NOMIPS16 int test21 (v2sf a, v2sf b);
      32  NOMIPS16 int test22 (v2sf a, v2sf b);
      33  NOMIPS16 int test23 (v2sf a, v2sf b);
      34  NOMIPS16 int test24 (v2sf a, v2sf b);
      35  NOMIPS16 int test25 (v2sf a, v2sf b);
      36  NOMIPS16 int test26 (v2sf a, v2sf b);
      37  NOMIPS16 int test27 (v2sf a, v2sf b);
      38  NOMIPS16 int test28 (v2sf a, v2sf b);
      39  NOMIPS16 int test29 (v2sf a, v2sf b);
      40  NOMIPS16 int test30 (v2sf a, v2sf b);
      41  NOMIPS16 int test31 (v2sf a, v2sf b);
      42  
      43  float qnan = 1.0f/0.0f - 1.0f/0.0f;
      44  
      45  NOMIPS16 int main ()
      46  {
      47    v2sf a, b, c, d;
      48    int i, j;
      49  
      50    /* c.eq.ps */
      51    a = (v2sf) {12, 34};
      52    b = (v2sf) {56, 78};
      53    i = 0;
      54    j = 0;
      55    if (__builtin_mips_any_c_eq_ps(a, b) != i)
      56       abort ();
      57    if (__builtin_mips_all_c_eq_ps(a, b) != j)
      58       abort ();
      59  
      60    /* c.eq.ps */
      61    a = (v2sf) {12, 34};
      62    b = (v2sf) {12, 78};
      63    i = 1;
      64    j = 0;
      65    if (__builtin_mips_any_c_eq_ps(a, b) != i)
      66       abort ();
      67    if (__builtin_mips_all_c_eq_ps(a, b) != j)
      68       abort ();
      69  
      70    /* c.eq.ps */
      71    a = (v2sf) {12, 34};
      72    b = (v2sf) {56, 34};
      73    i = 1;
      74    j = 0;
      75    if (__builtin_mips_any_c_eq_ps(a, b) != i)
      76       abort ();
      77    if (__builtin_mips_all_c_eq_ps(a, b) != j)
      78       abort ();
      79  
      80    /* c.eq.ps */
      81    a = (v2sf) {12, 34};
      82    b = (v2sf) {12, 34};
      83    i = 1;
      84    j = 1;
      85    if (__builtin_mips_any_c_eq_ps(a, b) != i)
      86       abort ();
      87    if (__builtin_mips_all_c_eq_ps(a, b) != j)
      88       abort ();
      89  
      90    /* Test with 16 operators */
      91    a = (v2sf) {10.58, 1984.0};
      92    b = (v2sf) {567.345, 1984.0};
      93  
      94    i = test0 (a, b);
      95    if (i != 0)
      96      abort ();
      97    i = test1 (a, b);
      98    if (i != 0)
      99      abort ();
     100    i = test2 (a, b);
     101    if (i != 0)
     102      abort ();
     103    i = test3 (a, b);
     104    if (i != 0)
     105      abort ();
     106    i = test4 (a, b);
     107    if (i != 1)
     108      abort ();
     109    i = test5 (a, b);
     110    if (i != 0)
     111      abort ();
     112    i = test6 (a, b);
     113    if (i != 1)
     114      abort ();
     115    i = test7 (a, b);
     116    if (i != 0)
     117      abort ();
     118    i = test8 (a, b);
     119    if (i != 1)
     120      abort ();
     121    i = test9 (a, b);
     122    if (i != 0)
     123      abort ();
     124    i = test10 (a, b);
     125    if (i != 1)
     126      abort ();
     127    i = test11 (a, b);
     128    if (i != 0)
     129      abort ();
     130    i = test12 (a, b);
     131    if (i != 1)
     132      abort ();
     133    i = test13 (a, b);
     134    if (i != 1)
     135      abort ();
     136    i = test14 (a, b);
     137    if (i != 1)
     138      abort ();
     139    i = test15 (a, b);
     140    if (i != 1)
     141      abort ();
     142    i = test16 (a, b);
     143    if (i != 0)
     144      abort ();
     145    i = test17 (a, b);
     146    if (i != 0)
     147      abort ();
     148    i = test18 (a, b);
     149    if (i != 0)
     150      abort ();
     151    i = test19 (a, b);
     152    if (i != 0)
     153      abort ();
     154    i = test20 (a, b);
     155    if (i != 1)
     156      abort ();
     157    i = test21 (a, b);
     158    if (i != 0)
     159      abort ();
     160    i = test22 (a, b);
     161    if (i != 1)
     162      abort ();
     163    i = test23 (a, b);
     164    if (i != 0)
     165      abort ();
     166    i = test24 (a, b);
     167    if (i != 1)
     168      abort ();
     169    i = test25 (a, b);
     170    if (i != 0)
     171      abort ();
     172    i = test26 (a, b);
     173    if (i != 1)
     174      abort ();
     175    i = test27 (a, b);
     176    if (i != 0)
     177      abort ();
     178    i = test28 (a, b);
     179    if (i != 1)
     180      abort ();
     181    i = test29 (a, b);
     182    if (i != 1)
     183      abort ();
     184    i = test30 (a, b);
     185    if (i != 1)
     186      abort ();
     187    i = test31 (a, b);
     188    if (i != 1)
     189      abort ();
     190  
     191    /* Reverse arguments */
     192    i = test0 (b, a);
     193    if (i != 0)
     194      abort ();
     195    i = test1 (b, a);
     196    if (i != 0)
     197      abort ();
     198    i = test2 (b, a);
     199    if (i != 0)
     200      abort ();
     201    i = test3 (b, a);
     202    if (i != 0)
     203      abort ();
     204    i = test4 (b, a);
     205    if (i != 1)
     206      abort ();
     207    i = test5 (b, a);
     208    if (i != 0)
     209      abort ();
     210    i = test6 (b, a);
     211    if (i != 1)
     212      abort ();
     213    i = test7 (b, a);
     214    if (i != 0)
     215      abort ();
     216    i = test8 (b, a);
     217    if (i != 0)
     218      abort ();
     219    i = test9 (b, a);
     220    if (i != 0)
     221      abort ();
     222    i = test10 (b, a);
     223    if (i != 0)
     224      abort ();
     225    i = test11 (b, a);
     226    if (i != 0)
     227      abort ();
     228    i = test12 (b, a);
     229    if (i != 1)
     230      abort ();
     231    i = test13 (b, a);
     232    if (i != 0)
     233      abort ();
     234    i = test14 (b, a);
     235    if (i != 1)
     236      abort ();
     237    i = test15 (b, a);
     238    if (i != 0)
     239      abort ();
     240    i = test16 (b, a);
     241    if (i != 0)
     242      abort ();
     243    i = test17 (b, a);
     244    if (i != 0)
     245      abort ();
     246    i = test18 (b, a);
     247    if (i != 0)
     248      abort ();
     249    i = test19 (b, a);
     250    if (i != 0)
     251      abort ();
     252    i = test20 (b, a);
     253    if (i != 1)
     254      abort ();
     255    i = test21 (b, a);
     256    if (i != 0)
     257      abort ();
     258    i = test22 (b, a);
     259    if (i != 1)
     260      abort ();
     261    i = test23 (b, a);
     262    if (i != 0)
     263      abort ();
     264    i = test24 (b, a);
     265    if (i != 0)
     266      abort ();
     267    i = test25 (b, a);
     268    if (i != 0)
     269      abort ();
     270    i = test26 (b, a);
     271    if (i != 0)
     272      abort ();
     273    i = test27 (b, a);
     274    if (i != 0)
     275      abort ();
     276    i = test28 (b, a);
     277    if (i != 1)
     278      abort ();
     279    i = test29 (b, a);
     280    if (i != 0)
     281      abort ();
     282    i = test30 (b, a);
     283    if (i != 1)
     284      abort ();
     285    i = test31 (b, a);
     286    if (i != 0)
     287      abort ();
     288  
     289  #ifndef __FAST_MATH__
     290    /* Test with 16 operators */
     291    a = (v2sf) {qnan, qnan};
     292    b = (v2sf) {567.345, 1984.0};
     293  
     294    i = test0 (a, b);
     295    if (i != 0)
     296      abort ();
     297    i = test1 (a, b);
     298    if (i != 0)
     299      abort ();
     300    i = test2 (a, b);
     301    if (i != 1)
     302      abort ();
     303    i = test3 (a, b);
     304    if (i != 1)
     305      abort ();
     306    i = test4 (a, b);
     307    if (i != 0)
     308      abort ();
     309    i = test5 (a, b);
     310    if (i != 0)
     311      abort ();
     312    i = test6 (a, b);
     313    if (i != 1)
     314      abort ();
     315    i = test7 (a, b);
     316    if (i != 1)
     317      abort ();
     318    i = test8 (a, b);
     319    if (i != 0)
     320      abort ();
     321    i = test9 (a, b);
     322    if (i != 0)
     323      abort ();
     324    i = test10 (a, b);
     325    if (i != 1)
     326      abort ();
     327    i = test11 (a, b);
     328    if (i != 1)
     329      abort ();
     330    i = test12 (a, b);
     331    if (i != 0)
     332      abort ();
     333    i = test13 (a, b);
     334    if (i != 0)
     335      abort ();
     336    i = test14 (a, b);
     337    if (i != 1)
     338      abort ();
     339    i = test15 (a, b);
     340    if (i != 1)
     341      abort ();
     342    i = test16 (a, b);
     343    if (i != 0)
     344      abort ();
     345    i = test17 (a, b);
     346    if (i != 0)
     347      abort ();
     348    i = test18 (a, b);
     349    if (i != 1)
     350      abort ();
     351    i = test19 (a, b);
     352    if (i != 1)
     353      abort ();
     354    i = test20 (a, b);
     355    if (i != 0)
     356      abort ();
     357    i = test21 (a, b);
     358    if (i != 0)
     359      abort ();
     360    i = test22 (a, b);
     361    if (i != 1)
     362      abort ();
     363    i = test23 (a, b);
     364    if (i != 1)
     365      abort ();
     366    i = test24 (a, b);
     367    if (i != 0)
     368      abort ();
     369    i = test25 (a, b);
     370    if (i != 0)
     371      abort ();
     372    i = test26 (a, b);
     373    if (i != 1)
     374      abort ();
     375    i = test27 (a, b);
     376    if (i != 1)
     377      abort ();
     378    i = test28 (a, b);
     379    if (i != 0)
     380      abort ();
     381    i = test29 (a, b);
     382    if (i != 0)
     383      abort ();
     384    i = test30 (a, b);
     385    if (i != 1)
     386      abort ();
     387    i = test31 (a, b);
     388    if (i != 1)
     389      abort ();
     390  #endif
     391  
     392    printf ("Test Passes\n");
     393    exit (0);
     394  }
     395  
     396  NOMIPS16 int test0 (v2sf a, v2sf b)
     397  {
     398    return __builtin_mips_any_c_f_ps (a, b);
     399  }
     400  
     401  NOMIPS16 int test1 (v2sf a, v2sf b)
     402  {
     403    return __builtin_mips_all_c_f_ps (a, b);
     404  }
     405  
     406  NOMIPS16 int test2 (v2sf a, v2sf b)
     407  {
     408    return __builtin_mips_any_c_un_ps (a, b);
     409  }
     410  
     411  NOMIPS16 int test3 (v2sf a, v2sf b)
     412  {
     413    return __builtin_mips_all_c_un_ps (a, b);
     414  }
     415  
     416  NOMIPS16 int test4 (v2sf a, v2sf b)
     417  {
     418    return __builtin_mips_any_c_eq_ps (a, b);
     419  }
     420  
     421  NOMIPS16 int test5 (v2sf a, v2sf b)
     422  {
     423    return __builtin_mips_all_c_eq_ps (a, b);
     424  }
     425  
     426  NOMIPS16 int test6 (v2sf a, v2sf b)
     427  {
     428    return __builtin_mips_any_c_ueq_ps (a, b);
     429  }
     430  
     431  NOMIPS16 int test7 (v2sf a, v2sf b)
     432  {
     433    return __builtin_mips_all_c_ueq_ps (a, b);
     434  }
     435  
     436  NOMIPS16 int test8 (v2sf a, v2sf b)
     437  {
     438    return __builtin_mips_any_c_olt_ps (a, b);
     439  }
     440  
     441  NOMIPS16 int test9 (v2sf a, v2sf b)
     442  {
     443    return __builtin_mips_all_c_olt_ps (a, b);
     444  }
     445  
     446  NOMIPS16 int test10 (v2sf a, v2sf b)
     447  {
     448    return __builtin_mips_any_c_ult_ps (a, b);
     449  }
     450  
     451  NOMIPS16 int test11 (v2sf a, v2sf b)
     452  {
     453    return __builtin_mips_all_c_ult_ps (a, b);
     454  }
     455  
     456  NOMIPS16 int test12 (v2sf a, v2sf b)
     457  {
     458    return __builtin_mips_any_c_ole_ps (a, b);
     459  }
     460  
     461  NOMIPS16 int test13 (v2sf a, v2sf b)
     462  {
     463    return __builtin_mips_all_c_ole_ps (a, b);
     464  }
     465  
     466  NOMIPS16 int test14 (v2sf a, v2sf b)
     467  {
     468    return __builtin_mips_any_c_ule_ps (a, b);
     469  }
     470  
     471  NOMIPS16 int test15 (v2sf a, v2sf b)
     472  {
     473    return __builtin_mips_all_c_ule_ps (a, b);
     474  }
     475  
     476  NOMIPS16 int test16 (v2sf a, v2sf b)
     477  {
     478    return __builtin_mips_any_c_sf_ps (a, b);
     479  }
     480  
     481  NOMIPS16 int test17 (v2sf a, v2sf b)
     482  {
     483    return __builtin_mips_all_c_sf_ps (a, b);
     484  }
     485  
     486  NOMIPS16 int test18 (v2sf a, v2sf b)
     487  {
     488    return __builtin_mips_any_c_ngle_ps (a, b);
     489  }
     490  
     491  NOMIPS16 int test19 (v2sf a, v2sf b)
     492  {
     493    return __builtin_mips_all_c_ngle_ps (a, b);
     494  }
     495  
     496  NOMIPS16 int test20 (v2sf a, v2sf b)
     497  {
     498    return __builtin_mips_any_c_seq_ps (a, b);
     499  }
     500  
     501  NOMIPS16 int test21 (v2sf a, v2sf b)
     502  {
     503    return __builtin_mips_all_c_seq_ps (a, b);
     504  }
     505  
     506  NOMIPS16 int test22 (v2sf a, v2sf b)
     507  {
     508    return __builtin_mips_any_c_ngl_ps (a, b);
     509  }
     510  
     511  NOMIPS16 int test23 (v2sf a, v2sf b)
     512  {
     513    return __builtin_mips_all_c_ngl_ps (a, b);
     514  }
     515  
     516  NOMIPS16 int test24 (v2sf a, v2sf b)
     517  {
     518    return __builtin_mips_any_c_lt_ps (a, b);
     519  }
     520  
     521  NOMIPS16 int test25 (v2sf a, v2sf b)
     522  {
     523    return __builtin_mips_all_c_lt_ps (a, b);
     524  }
     525  
     526  NOMIPS16 int test26 (v2sf a, v2sf b)
     527  {
     528    return __builtin_mips_any_c_nge_ps (a, b);
     529  }
     530  
     531  NOMIPS16 int test27 (v2sf a, v2sf b)
     532  {
     533    return __builtin_mips_all_c_nge_ps (a, b);
     534  }
     535  
     536  NOMIPS16 int test28 (v2sf a, v2sf b)
     537  {
     538    return __builtin_mips_any_c_le_ps (a, b);
     539  }
     540  
     541  NOMIPS16 int test29 (v2sf a, v2sf b)
     542  {
     543    return __builtin_mips_all_c_le_ps (a, b);
     544  }
     545  
     546  NOMIPS16 int test30 (v2sf a, v2sf b)
     547  {
     548    return __builtin_mips_any_c_ngt_ps (a, b);
     549  }
     550  
     551  NOMIPS16 int test31 (v2sf a, v2sf b)
     552  {
     553    return __builtin_mips_all_c_ngt_ps (a, b);
     554  }