(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
table-intrinsics.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O3" } */
       3  
       4  #include "arm_neon.h"
       5  
       6  int8x8_t
       7  tbl_tests8_ (int8x8_t tab, int8x8_t idx)
       8  {
       9    return vtbl1_s8 (tab, idx);
      10  }
      11  
      12  uint8x8_t
      13  tbl_testu8_ (uint8x8_t tab, uint8x8_t idx)
      14  {
      15    return vtbl1_u8 (tab, idx);
      16  }
      17  
      18  poly8x8_t
      19  tbl_testp8_ (poly8x8_t tab, uint8x8_t idx)
      20  {
      21    return vtbl1_p8 (tab, idx);
      22  }
      23  
      24  int8x8_t
      25  tbl_tests8_2 (int8x8x2_t tab, int8x8_t idx)
      26  {
      27    return vtbl2_s8 (tab, idx);
      28  }
      29  
      30  uint8x8_t
      31  tbl_testu8_2 (uint8x8x2_t tab, uint8x8_t idx)
      32  {
      33    return vtbl2_u8 (tab, idx);
      34  }
      35  
      36  poly8x8_t
      37  tbl_testp8_2 (poly8x8x2_t tab, uint8x8_t idx)
      38  {
      39    return vtbl2_p8 (tab, idx);
      40  }
      41  
      42  int8x8_t
      43  tbl_tests8_3 (int8x8x3_t tab, int8x8_t idx)
      44  {
      45    return vtbl3_s8 (tab, idx);
      46  }
      47  
      48  uint8x8_t
      49  tbl_testu8_3 (uint8x8x3_t tab, uint8x8_t idx)
      50  {
      51    return vtbl3_u8 (tab, idx);
      52  }
      53  
      54  poly8x8_t
      55  tbl_testp8_3 (poly8x8x3_t tab, uint8x8_t idx)
      56  {
      57    return vtbl3_p8 (tab, idx);
      58  }
      59  
      60  int8x8_t
      61  tbl_tests8_4 (int8x8x4_t tab, int8x8_t idx)
      62  {
      63    return vtbl4_s8 (tab, idx);
      64  }
      65  
      66  uint8x8_t
      67  tbl_testu8_4 (uint8x8x4_t tab, uint8x8_t idx)
      68  {
      69    return vtbl4_u8 (tab, idx);
      70  }
      71  
      72  poly8x8_t
      73  tbl_testp8_4 (poly8x8x4_t tab, uint8x8_t idx)
      74  {
      75    return vtbl4_p8 (tab, idx);
      76  }
      77  
      78  int8x8_t
      79  tb_tests8_ (int8x8_t r, int8x8_t tab, int8x8_t idx)
      80  {
      81    return vtbx1_s8 (r, tab, idx);
      82  }
      83  
      84  uint8x8_t
      85  tb_testu8_ (uint8x8_t r, uint8x8_t tab, uint8x8_t idx)
      86  {
      87    return vtbx1_u8 (r, tab, idx);
      88  }
      89  
      90  poly8x8_t
      91  tb_testp8_ (poly8x8_t r, poly8x8_t tab, uint8x8_t idx)
      92  {
      93    return vtbx1_p8 (r, tab, idx);
      94  }
      95  
      96  int8x8_t
      97  tb_tests8_2 (int8x8_t r, int8x8x2_t tab, int8x8_t idx)
      98  {
      99    return vtbx2_s8 (r, tab, idx);
     100  }
     101  
     102  uint8x8_t
     103  tb_testu8_2 (uint8x8_t r, uint8x8x2_t tab, uint8x8_t idx)
     104  {
     105    return vtbx2_u8 (r, tab, idx);
     106  }
     107  
     108  poly8x8_t
     109  tb_testp8_2 (poly8x8_t r, poly8x8x2_t tab, uint8x8_t idx)
     110  {
     111    return vtbx2_p8 (r, tab, idx);
     112  }
     113  
     114  int8x8_t
     115  tb_tests8_3 (int8x8_t r, int8x8x3_t tab, int8x8_t idx)
     116  {
     117    return vtbx3_s8 (r, tab, idx);
     118  }
     119  
     120  uint8x8_t
     121  tb_testu8_3 (uint8x8_t r, uint8x8x3_t tab, uint8x8_t idx)
     122  {
     123    return vtbx3_u8 (r, tab, idx);
     124  }
     125  
     126  poly8x8_t
     127  tb_testp8_3 (poly8x8_t r, poly8x8x3_t tab, uint8x8_t idx)
     128  {
     129    return vtbx3_p8 (r, tab, idx);
     130  }
     131  
     132  int8x8_t
     133  tb_tests8_4 (int8x8_t r, int8x8x4_t tab, int8x8_t idx)
     134  {
     135    return vtbx4_s8 (r, tab, idx);
     136  }
     137  
     138  uint8x8_t
     139  tb_testu8_4 (uint8x8_t r, uint8x8x4_t tab, uint8x8_t idx)
     140  {
     141    return vtbx4_u8 (r, tab, idx);
     142  }
     143  
     144  poly8x8_t
     145  tb_testp8_4 (poly8x8_t r, poly8x8x4_t tab, uint8x8_t idx)
     146  {
     147    return vtbx4_p8 (r, tab, idx);
     148  }
     149  
     150  int8x8_t
     151  qtbl_tests8_ (int8x16_t tab, uint8x8_t idx)
     152  {
     153    return vqtbl1_s8 (tab, idx);
     154  }
     155  
     156  uint8x8_t
     157  qtbl_testu8_ (uint8x16_t tab, uint8x8_t idx)
     158  {
     159    return vqtbl1_u8 (tab, idx);
     160  }
     161  
     162  poly8x8_t
     163  qtbl_testp8_ (poly8x16_t tab, uint8x8_t idx)
     164  {
     165    return vqtbl1_p8 (tab, idx);
     166  }
     167  
     168  int8x8_t
     169  qtbl_tests8_2 (int8x16x2_t tab, uint8x8_t idx)
     170  {
     171    return vqtbl2_s8 (tab, idx);
     172  }
     173  
     174  uint8x8_t
     175  qtbl_testu8_2 (uint8x16x2_t tab, uint8x8_t idx)
     176  {
     177    return vqtbl2_u8 (tab, idx);
     178  }
     179  
     180  poly8x8_t
     181  qtbl_testp8_2 (poly8x16x2_t tab, uint8x8_t idx)
     182  {
     183    return vqtbl2_p8 (tab, idx);
     184  }
     185  
     186  int8x8_t
     187  qtbl_tests8_3 (int8x16x3_t tab, uint8x8_t idx)
     188  {
     189    return vqtbl3_s8 (tab, idx);
     190  }
     191  
     192  uint8x8_t
     193  qtbl_testu8_3 (uint8x16x3_t tab, uint8x8_t idx)
     194  {
     195    return vqtbl3_u8 (tab, idx);
     196  }
     197  
     198  poly8x8_t
     199  qtbl_testp8_3 (poly8x16x3_t tab, uint8x8_t idx)
     200  {
     201    return vqtbl3_p8 (tab, idx);
     202  }
     203  
     204  int8x8_t
     205  qtbl_tests8_4 (int8x16x4_t tab, uint8x8_t idx)
     206  {
     207    return vqtbl4_s8 (tab, idx);
     208  }
     209  
     210  uint8x8_t
     211  qtbl_testu8_4 (uint8x16x4_t tab, uint8x8_t idx)
     212  {
     213    return vqtbl4_u8 (tab, idx);
     214  }
     215  
     216  poly8x8_t
     217  qtbl_testp8_4 (poly8x16x4_t tab, uint8x8_t idx)
     218  {
     219    return vqtbl4_p8 (tab, idx);
     220  }
     221  
     222  int8x8_t
     223  qtb_tests8_ (int8x8_t r, int8x16_t tab, uint8x8_t idx)
     224  {
     225    return vqtbx1_s8 (r, tab, idx);
     226  }
     227  
     228  uint8x8_t
     229  qtb_testu8_ (uint8x8_t r, uint8x16_t tab, uint8x8_t idx)
     230  {
     231    return vqtbx1_u8 (r, tab, idx);
     232  }
     233  
     234  poly8x8_t
     235  qtb_testp8_ (poly8x8_t r, poly8x16_t tab, uint8x8_t idx)
     236  {
     237    return vqtbx1_p8 (r, tab, idx);
     238  }
     239  
     240  int8x8_t
     241  qtb_tests8_2 (int8x8_t r, int8x16x2_t tab, uint8x8_t idx)
     242  {
     243    return vqtbx2_s8 (r, tab, idx);
     244  }
     245  
     246  uint8x8_t
     247  qtb_testu8_2 (uint8x8_t r, uint8x16x2_t tab, uint8x8_t idx)
     248  {
     249    return vqtbx2_u8 (r, tab, idx);
     250  }
     251  
     252  poly8x8_t
     253  qtb_testp8_2 (poly8x8_t r, poly8x16x2_t tab, uint8x8_t idx)
     254  {
     255    return vqtbx2_p8 (r, tab, idx);
     256  }
     257  
     258  int8x8_t
     259  qtb_tests8_3 (int8x8_t r, int8x16x3_t tab, uint8x8_t idx)
     260  {
     261    return vqtbx3_s8 (r, tab, idx);
     262  }
     263  
     264  uint8x8_t
     265  qtb_testu8_3 (uint8x8_t r, uint8x16x3_t tab, uint8x8_t idx)
     266  {
     267    return vqtbx3_u8 (r, tab, idx);
     268  }
     269  
     270  poly8x8_t
     271  qtb_testp8_3 (poly8x8_t r, poly8x16x3_t tab, uint8x8_t idx)
     272  {
     273    return vqtbx3_p8 (r, tab, idx);
     274  }
     275  
     276  int8x8_t
     277  qtb_tests8_4 (int8x8_t r, int8x16x4_t tab, uint8x8_t idx)
     278  {
     279    return vqtbx4_s8 (r, tab, idx);
     280  }
     281  
     282  uint8x8_t
     283  qtb_testu8_4 (uint8x8_t r, uint8x16x4_t tab, uint8x8_t idx)
     284  {
     285    return vqtbx4_u8 (r, tab, idx);
     286  }
     287  
     288  poly8x8_t
     289  qtb_testp8_4 (poly8x8_t r, poly8x16x4_t tab, uint8x8_t idx)
     290  {
     291    return vqtbx4_p8 (r, tab, idx);
     292  }
     293  
     294  int8x16_t
     295  qtblq_tests8_ (int8x16_t tab, uint8x16_t idx)
     296  {
     297    return vqtbl1q_s8 (tab, idx);
     298  }
     299  
     300  uint8x16_t
     301  qtblq_testu8_ (uint8x16_t tab, uint8x16_t idx)
     302  {
     303    return vqtbl1q_u8 (tab, idx);
     304  }
     305  
     306  poly8x16_t
     307  qtblq_testp8_ (poly8x16_t tab, uint8x16_t idx)
     308  {
     309    return vqtbl1q_p8 (tab, idx);
     310  }
     311  
     312  int8x16_t
     313  qtblq_tests8_2 (int8x16x2_t tab, uint8x16_t idx)
     314  {
     315    return vqtbl2q_s8 (tab, idx);
     316  }
     317  
     318  uint8x16_t
     319  qtblq_testu8_2 (uint8x16x2_t tab, uint8x16_t idx)
     320  {
     321    return vqtbl2q_u8 (tab, idx);
     322  }
     323  
     324  poly8x16_t
     325  qtblq_testp8_2 (poly8x16x2_t tab, uint8x16_t idx)
     326  {
     327    return vqtbl2q_p8 (tab, idx);
     328  }
     329  
     330  int8x16_t
     331  qtblq_tests8_3 (int8x16x3_t tab, uint8x16_t idx)
     332  {
     333    return vqtbl3q_s8 (tab, idx);
     334  }
     335  
     336  uint8x16_t
     337  qtblq_testu8_3 (uint8x16x3_t tab, uint8x16_t idx)
     338  {
     339    return vqtbl3q_u8 (tab, idx);
     340  }
     341  
     342  poly8x16_t
     343  qtblq_testp8_3 (poly8x16x3_t tab, uint8x16_t idx)
     344  {
     345    return vqtbl3q_p8 (tab, idx);
     346  }
     347  
     348  int8x16_t
     349  qtblq_tests8_4 (int8x16x4_t tab, uint8x16_t idx)
     350  {
     351    return vqtbl4q_s8 (tab, idx);
     352  }
     353  
     354  uint8x16_t
     355  qtblq_testu8_4 (uint8x16x4_t tab, uint8x16_t idx)
     356  {
     357    return vqtbl4q_u8 (tab, idx);
     358  }
     359  
     360  poly8x16_t
     361  qtblq_testp8_4 (poly8x16x4_t tab, uint8x16_t idx)
     362  {
     363    return vqtbl4q_p8 (tab, idx);
     364  }
     365  
     366  int8x16_t
     367  qtbxq_tests8_ (int8x16_t r, int8x16_t tab, uint8x16_t idx)
     368  {
     369    return vqtbx1q_s8 (r, tab, idx);
     370  }
     371  
     372  uint8x16_t
     373  qtbxq_testu8_ (uint8x16_t r, uint8x16_t tab, uint8x16_t idx)
     374  {
     375    return vqtbx1q_u8 (r, tab, idx);
     376  }
     377  
     378  poly8x16_t
     379  qtbxq_testp8_ (poly8x16_t r, poly8x16_t tab, uint8x16_t idx)
     380  {
     381    return vqtbx1q_p8 (r, tab, idx);
     382  }
     383  
     384  int8x16_t
     385  qtbxq_tests8_2 (int8x16_t r, int8x16x2_t tab, uint8x16_t idx)
     386  {
     387    return vqtbx2q_s8 (r, tab, idx);
     388  }
     389  
     390  uint8x16_t
     391  qtbxq_testu8_2 (uint8x16_t r, uint8x16x2_t tab, uint8x16_t idx)
     392  {
     393    return vqtbx2q_u8 (r, tab, idx);
     394  }
     395  
     396  poly8x16_t
     397  qtbxq_testp8_2 (poly8x16_t r, poly8x16x2_t tab, uint8x16_t idx)
     398  {
     399    return vqtbx2q_p8 (r, tab, idx);
     400  }
     401  
     402  int8x16_t
     403  qtbxq_tests8_3 (int8x16_t r, int8x16x3_t tab, uint8x16_t idx)
     404  {
     405    return vqtbx3q_s8 (r, tab, idx);
     406  }
     407  
     408  uint8x16_t
     409  qtbxq_testu8_3 (uint8x16_t r, uint8x16x3_t tab, uint8x16_t idx)
     410  {
     411    return vqtbx3q_u8 (r, tab, idx);
     412  }
     413  
     414  poly8x16_t
     415  qtbxq_testp8_3 (poly8x16_t r, poly8x16x3_t tab, uint8x16_t idx)
     416  {
     417    return vqtbx3q_p8 (r, tab, idx);
     418  }
     419  
     420  int8x16_t
     421  qtbxq_tests8_4 (int8x16_t r, int8x16x4_t tab, uint8x16_t idx)
     422  {
     423    return vqtbx4q_s8 (r, tab, idx);
     424  }
     425  
     426  uint8x16_t
     427  qtbxq_testu8_4 (uint8x16_t r, uint8x16x4_t tab, uint8x16_t idx)
     428  {
     429    return vqtbx4q_u8 (r, tab, idx);
     430  }
     431  
     432  poly8x16_t
     433  qtbxq_testp8_4 (poly8x16_t r, poly8x16x4_t tab, uint8x16_t idx)
     434  {
     435    return vqtbx4q_p8 (r, tab, idx);
     436  }
     437  
     438  /* { dg-final { scan-assembler-times "tbl\[ |\t\]*v" 42} }  */
     439  /* { dg-final { scan-assembler-times "tbx\[ |\t\]*v" 30} }  */