(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arc/
builtin_simd.c
       1  /* { dg-do compile } */
       2  /* { dg-skip-if "" { ! { clmcpu } } } */
       3  /* { dg-options "-O2 -Werror-implicit-function-declaration -mARC700 -msimd" } */
       4  
       5  #define STEST1(name, rettype, op1)		\
       6    rettype test_ ## name                         \
       7    (void)					\
       8    {                                             \
       9      return __builtin_arc_ ## name (op1);	\
      10    }
      11  
      12  #define STEST2(name, rettype, op1, op2)  \
      13    rettype test_ ## name                         \
      14    (void)					\
      15    {                                             \
      16      return __builtin_arc_ ## name (op1, op2);	\
      17    }
      18  
      19  #define STEST3(name, rettype, op1, op2, op3)	\
      20    rettype test_ ## name                         \
      21    (void)					\
      22    {                                             \
      23      return __builtin_arc_ ## name (op1, op2, op3);	\
      24    }
      25  
      26  #define STEST4(name, rettype, op1, op2, op3, op4)	\
      27    rettype test_ ## name					\
      28    (void)						\
      29    {							\
      30      return __builtin_arc_ ## name (op1, op2, op3, op4);	\
      31    }
      32  
      33  typedef short v8hi __attribute__ ((vector_size (16)));
      34  
      35  v8hi Va;
      36  v8hi Vb;
      37  v8hi Vc;
      38  #define rlimm 0xf3eec0fe
      39  #define Ic    0x02
      40  #define Ib    0x02
      41  #define u3    0x02
      42  #define u6    0x1F
      43  #define u8    0xB0
      44  
      45  STEST2 ( vaddaw, v8hi, Vb, Vc)
      46  STEST2 (  vaddw, v8hi, Vb, Vc)
      47  STEST2 (   vavb, v8hi, Vb, Vc)
      48  STEST2 (  vavrb, v8hi, Vb, Vc)
      49  STEST2 ( vdifaw, v8hi, Vb, Vc)
      50  STEST2 (  vdifw, v8hi, Vb, Vc)
      51  STEST2 ( vmaxaw, v8hi, Vb, Vc)
      52  STEST2 (  vmaxw, v8hi, Vb, Vc)
      53  STEST2 ( vminaw, v8hi, Vb, Vc)
      54  STEST2 (  vminw, v8hi, Vb, Vc)
      55  STEST2 ( vmulaw, v8hi, Vb, Vc)
      56  STEST2 (vmulfaw, v8hi, Vb, Vc)
      57  STEST2 ( vmulfw, v8hi, Vb, Vc)
      58  STEST2 (  vmulw, v8hi, Vb, Vc)
      59  STEST2 ( vsubaw, v8hi, Vb, Vc)
      60  STEST2 (  vsubw, v8hi, Vb, Vc)
      61  STEST2 ( vsummw, v8hi, Vb, Vc)
      62  STEST2 (   vand, v8hi, Vb, Vc)
      63  STEST2 ( vandaw, v8hi, Vb, Vc)
      64  STEST2 (   vbic, v8hi, Vb, Vc)
      65  STEST2 ( vbicaw, v8hi, Vb, Vc)
      66  STEST2 (    vor, v8hi, Vb, Vc)
      67  STEST2 (   vxor, v8hi, Vb, Vc)
      68  STEST2 ( vxoraw, v8hi, Vb, Vc)
      69  STEST2 (   veqw, v8hi, Vb, Vc)
      70  STEST2 (   vlew, v8hi, Vb, Vc)
      71  STEST2 (   vltw, v8hi, Vb, Vc)
      72  STEST2 (   vnew, v8hi, Vb, Vc)
      73  STEST2 ( vmr1aw, v8hi, Vb, Vc)
      74  STEST2 (  vmr1w, v8hi, Vb, Vc)
      75  STEST2 ( vmr2aw, v8hi, Vb, Vc)
      76  STEST2 (  vmr2w, v8hi, Vb, Vc)
      77  STEST2 ( vmr3aw, v8hi, Vb, Vc)
      78  STEST2 (  vmr3w, v8hi, Vb, Vc)
      79  STEST2 ( vmr4aw, v8hi, Vb, Vc)
      80  STEST2 (  vmr4w, v8hi, Vb, Vc)
      81  STEST2 ( vmr5aw, v8hi, Vb, Vc)
      82  STEST2 (  vmr5w, v8hi, Vb, Vc)
      83  STEST2 ( vmr6aw, v8hi, Vb, Vc)
      84  STEST2 (  vmr6w, v8hi, Vb, Vc)
      85  STEST2 ( vmr7aw, v8hi, Vb, Vc)
      86  STEST2 (  vmr7w, v8hi, Vb, Vc)
      87  STEST2 (   vmrb, v8hi, Vb, Vc)
      88  STEST2 ( vh264f, v8hi, Vb, Vc)
      89  STEST2 (vh264ft, v8hi, Vb, Vc)
      90  STEST2 (vh264fw, v8hi, Vb, Vc)
      91  STEST2 (  vvc1f, v8hi, Vb, Vc)
      92  STEST2 ( vvc1ft, v8hi, Vb, Vc)
      93  
      94  STEST2 ( vbaddw, v8hi, Vb, rlimm)
      95  STEST2 ( vbmaxw, v8hi, Vb, rlimm)
      96  STEST2 ( vbminw, v8hi, Vb, rlimm)
      97  STEST2 (vbmulaw, v8hi, Vb, rlimm)
      98  STEST2 (vbmulfw, v8hi, Vb, rlimm)
      99  STEST2 ( vbmulw, v8hi, Vb, rlimm)
     100  STEST2 (vbrsubw, v8hi, Vb, rlimm)
     101  STEST2 ( vbsubw, v8hi, Vb, rlimm)
     102  
     103  
     104  /* Va, Vb, Ic instructions.  */
     105  STEST2 ( vasrw, v8hi, Vb, Ic)
     106  STEST2 (  vsr8, v8hi, Vb, Ic)
     107  STEST2 (vsr8aw, v8hi, Vb, Ic)
     108  
     109  /* Va, Vb, u6 instructions.  */
     110  STEST2 (  vasrrwi, v8hi, Vb, u6)
     111  STEST2 ( vasrsrwi, v8hi, Vb, u6)
     112  STEST2 (   vasrwi, v8hi, Vb, u6)
     113  STEST2 ( vasrpwbi, v8hi, Vb, u6)
     114  STEST2 (vasrrpwbi, v8hi, Vb, u6)
     115  STEST2 (  vsr8awi, v8hi, Vb, u6)
     116  STEST2 (    vsr8i, v8hi, Vb, u6)
     117  
     118  /* Va, Vb, u8 (simm) instructions.  */
     119  STEST2 (  vmvaw, v8hi, Vb, u8)
     120  STEST2 (   vmvw, v8hi, Vb, u8)
     121  STEST2 (  vmvzw, v8hi, Vb, u8)
     122  STEST2 (vd6tapf, v8hi, Vb, u8)
     123  
     124  /* Va, rlimm, u8 (simm) instructions.  */
     125  STEST2 (vmovaw, v8hi, rlimm, u8)
     126  STEST2 ( vmovw, v8hi, rlimm, u8)
     127  STEST2 (vmovzw, v8hi, rlimm, u8)
     128  
     129  /* Va, Vb instructions.  */
     130  STEST1 ( vabsaw, v8hi, Vb)
     131  STEST1 (  vabsw, v8hi, Vb)
     132  STEST1 (vaddsuw, v8hi, Vb)
     133  STEST1 ( vsignw, v8hi, Vb)
     134  STEST1 ( vexch1, v8hi, Vb)
     135  STEST1 ( vexch2, v8hi, Vb)
     136  STEST1 ( vexch4, v8hi, Vb)
     137  STEST1 ( vupbaw, v8hi, Vb)
     138  STEST1 (  vupbw, v8hi, Vb)
     139  STEST1 (vupsbaw, v8hi, Vb)
     140  STEST1 ( vupsbw, v8hi, Vb)
     141  
     142  /* DIb, rlimm, rlimm instructions.  */
     143  STEST2 (vdirun, void, rlimm, rlimm)
     144  STEST2 (vdorun, void, rlimm, rlimm)
     145  
     146  /* DIb, limm, rlimm instructions.  */
     147  STEST2 (vdiwr, void, u3, rlimm)
     148  STEST2 (vdowr, void, u3, rlimm)
     149  
     150  /* rlimm instructions.  */
     151  STEST1 (   vrec, void, rlimm)
     152  STEST1 (   vrun, void, rlimm)
     153  STEST1 (vrecrun, void, rlimm)
     154  STEST1 (vendrec, void, rlimm)
     155  
     156  /* Va, [Ib,u8] instructions.  */
     157  STEST3  (vld32wh, v8hi, Vb, Ic, u8)
     158  STEST3  (vld32wl, v8hi, Vb, Ic, u8)
     159  STEST3  (  vld64, v8hi, Vb, Ic, u8)
     160  STEST3  (  vld32, v8hi, Vb, Ic, u8)
     161  
     162  STEST2  (vld64w, v8hi, Ib, u8)
     163  STEST2  (vld128, v8hi, Ib, u8)
     164  
     165  STEST3 (vst128, void, Va, Ib, u8)
     166  STEST3 ( vst64, void, Va, Ib, u8)
     167  
     168  /* Va, [Ib, u8] instructions.  */
     169  STEST4 (vst16_n, void, Va, u3, Ib, u8)
     170  STEST4 (vst32_n, void, Va, u3, Ib, u8)
     171  
     172  STEST1 (vinti, void, u6)