(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
acle/
asm/
dupq_b16.c
       1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** dupq_00_b16:
       7  **	pfalse	p0\.b
       8  **	ret
       9  */
      10  TEST_UNIFORM_P (dupq_00_b16,
      11  		p0 = svdupq_n_b16 (0, 0, 0, 0, 0, 0, 0, 0),
      12  		p0 = svdupq_b16 (0, 0, 0, 0, 0, 0, 0, 0))
      13  
      14  /*
      15  ** dupq_11_b16:
      16  **	ptrue	p0\.d, all
      17  **	ret
      18  */
      19  TEST_UNIFORM_P (dupq_11_b16,
      20  		p0 = svdupq_n_b16 (1, 0, 0, 0, 1, 0, 0, 0),
      21  		p0 = svdupq_b16 (1, 0, 0, 0, 1, 0, 0, 0))
      22  
      23  /*
      24  ** dupq_22_b16:
      25  ** (
      26  **	pfalse	(p[0-7])\.b
      27  **	ptrue	(p[0-7])\.d, all
      28  **	trn1	p0\.h, \1\.h, \2\.h
      29  ** |
      30  **	ptrue	(p[0-7])\.d, all
      31  **	pfalse	(p[0-7])\.b
      32  **	trn1	p0\.h, \4\.h, \3\.h
      33  ** )
      34  **	ret
      35  */
      36  TEST_UNIFORM_P (dupq_22_b16,
      37  		p0 = svdupq_n_b16 (0, 1, 0, 0, 0, 1, 0, 0),
      38  		p0 = svdupq_b16 (0, 1, 0, 0, 0, 1, 0, 0))
      39  
      40  /*
      41  ** dupq_33_b16:
      42  **	ptrue	(p[0-7])\.d, all
      43  **	trn1	p0\.h, \1\.h, \1\.h
      44  **	ret
      45  */
      46  TEST_UNIFORM_P (dupq_33_b16,
      47  		p0 = svdupq_n_b16 (1, 1, 0, 0, 1, 1, 0, 0),
      48  		p0 = svdupq_b16 (1, 1, 0, 0, 1, 1, 0, 0))
      49  
      50  /*
      51  ** dupq_44_b16:
      52  ** (
      53  **	ptrue	(p[0-7])\.d, all
      54  **	ptrue	(p[0-7])\.s, all
      55  **	not	p0\.b, \2/z, \1\.b
      56  ** |
      57  **	ptrue	(p[0-7])\.s, all
      58  **	ptrue	(p[0-7])\.d, all
      59  **	not	p0\.b, \3/z, \4\.b
      60  ** )
      61  **	ret
      62  */
      63  TEST_UNIFORM_P (dupq_44_b16,
      64  		p0 = svdupq_n_b16 (0, 0, 1, 0, 0, 0, 1, 0),
      65  		p0 = svdupq_b16 (0, 0, 1, 0, 0, 0, 1, 0))
      66  
      67  /*
      68  ** dupq_55_b16:
      69  **	ptrue	p0\.s, all
      70  **	ret
      71  */
      72  TEST_UNIFORM_P (dupq_55_b16,
      73  		p0 = svdupq_n_b16 (1, 0, 1, 0, 1, 0, 1, 0),
      74  		p0 = svdupq_b16 (1, 0, 1, 0, 1, 0, 1, 0))
      75  
      76  /*
      77  ** dupq_66_b16:
      78  **	...
      79  **	cmpne	p0\.b, p[0-7]/z, z[0-9]+\.b, #0
      80  **	ret
      81  */
      82  TEST_UNIFORM_P (dupq_66_b16,
      83  		p0 = svdupq_n_b16 (0, 1, 1, 0, 0, 1, 1, 0),
      84  		p0 = svdupq_b16 (0, 1, 1, 0, 0, 1, 1, 0))
      85  
      86  /*
      87  ** dupq_77_b16:
      88  ** (
      89  **	ptrue	(p[0-7])\.d, all
      90  **	ptrue	(p[0-7])\.[hs], all
      91  **	trn1	p0\.h, \2\.h, \1\.h
      92  ** |
      93  **	ptrue	(p[0-7])\.[hs], all
      94  **	ptrue	(p[0-7])\.s, all
      95  **	trn1	p0\.h, \3\.h, \4\.h
      96  ** )
      97  **	ret
      98  */
      99  TEST_UNIFORM_P (dupq_77_b16,
     100  		p0 = svdupq_n_b16 (1, 1, 1, 0, 1, 1, 1, 0),
     101  		p0 = svdupq_b16 (1, 1, 1, 0, 1, 1, 1, 0))
     102  
     103  /*
     104  ** dupq_88_b16:
     105  ** (
     106  **	mov	(z[0-9]+)\.d, #71776119061217280
     107  **	ptrue	(p[0-7])\.b, all
     108  **	cmpne	p0\.b, \2/z, \1\.b, #0
     109  ** |
     110  **	ptrue	(p[0-7])\.b, all
     111  **	mov	(z[0-9]+)\.d, #71776119061217280
     112  **	cmpne	p0\.b, \3/z, \4\.b, #0
     113  ** )
     114  **	ret
     115  */
     116  TEST_UNIFORM_P (dupq_88_b16,
     117  		p0 = svdupq_n_b16 (0, 0, 0, 1, 0, 0, 0, 1),
     118  		p0 = svdupq_b16 (0, 0, 0, 1, 0, 0, 0, 1))
     119  
     120  /*
     121  ** dupq_99_b16:
     122  **	...
     123  **	cmpne	p0\.b, p[0-7]/z, z[0-9]+\.b, #0
     124  **	ret
     125  */
     126  TEST_UNIFORM_P (dupq_99_b16,
     127  		p0 = svdupq_n_b16 (1, 0, 0, 1, 1, 0, 0, 1),
     128  		p0 = svdupq_b16 (1, 0, 0, 1, 1, 0, 0, 1))
     129  
     130  /*
     131  ** dupq_aa_b16:
     132  ** (
     133  **	ptrue	(p[0-7])\.s, all
     134  **	ptrue	(p[0-7])\.h, all
     135  **	not	p0\.b, \2/z, \1\.b
     136  ** |
     137  **	ptrue	(p[0-7])\.h, all
     138  **	ptrue	(p[0-7])\.s, all
     139  **	not	p0\.b, \3/z, \4\.b
     140  ** )
     141  **	ret
     142  */
     143  TEST_UNIFORM_P (dupq_aa_b16,
     144  		p0 = svdupq_n_b16 (0, 1, 0, 1, 0, 1, 0, 1),
     145  		p0 = svdupq_b16 (0, 1, 0, 1, 0, 1, 0, 1))
     146  
     147  /*
     148  ** dupq_bb_b16:
     149  ** (
     150  **	ptrue	(p[0-7])\.d, all
     151  **	ptrue	(p[0-7])\.[hs], all
     152  **	trn1	p0\.h, \1\.h, \2\.h
     153  ** |
     154  **	ptrue	(p[0-7])\.[hs], all
     155  **	ptrue	(p[0-7])\.d, all
     156  **	trn1	p0\.h, \4\.h, \3\.h
     157  ** )
     158  **	ret
     159  */
     160  TEST_UNIFORM_P (dupq_bb_b16,
     161  		p0 = svdupq_n_b16 (1, 1, 0, 1, 1, 1, 0, 1),
     162  		p0 = svdupq_b16 (1, 1, 0, 1, 1, 1, 0, 1))
     163  
     164  /*
     165  ** dupq_cc_b16:
     166  ** (
     167  **	pfalse	(p[0-7])\.b
     168  **	ptrue	(p[0-7])\.h, all
     169  **	trn1	p0\.s, \1\.s, \2\.s
     170  ** |
     171  **	ptrue	(p[0-7])\.h, all
     172  **	pfalse	(p[0-7])\.b
     173  **	trn1	p0\.s, \4\.s, \3\.s
     174  ** )
     175  **	ret
     176  */
     177  TEST_UNIFORM_P (dupq_cc_b16,
     178  		p0 = svdupq_n_b16 (0, 0, 1, 1, 0, 0, 1, 1),
     179  		p0 = svdupq_b16 (0, 0, 1, 1, 0, 0, 1, 1))
     180  
     181  /*
     182  ** dupq_dd_b16:
     183  ** (
     184  **	ptrue	(p[0-7])\.[sd], all
     185  **	ptrue	(p[0-7])\.h, all
     186  **	trn1	p0\.s, \1\.s, \2\.s
     187  ** |
     188  **	ptrue	(p[0-7])\.h, all
     189  **	ptrue	(p[0-7])\.[sd], all
     190  **	trn1	p0\.s, \4\.s, \3\.s
     191  ** )
     192  **	ret
     193  */
     194  TEST_UNIFORM_P (dupq_dd_b16,
     195  		p0 = svdupq_n_b16 (1, 0, 1, 1, 1, 0, 1, 1),
     196  		p0 = svdupq_b16 (1, 0, 1, 1, 1, 0, 1, 1))
     197  
     198  /*
     199  ** dupq_ee_b16:
     200  ** (
     201  **	ptrue	(p[0-7])\.d, all
     202  **	ptrue	(p[0-7])\.h, all
     203  **	not	p0\.b, \2/z, \1\.b
     204  ** |
     205  **	ptrue	(p[0-7])\.h, all
     206  **	ptrue	(p[0-7])\.d, all
     207  **	not	p0\.b, \3/z, \4\.b
     208  ** )
     209  **	ret
     210  */
     211  TEST_UNIFORM_P (dupq_ee_b16,
     212  		p0 = svdupq_n_b16 (0, 1, 1, 1, 0, 1, 1, 1),
     213  		p0 = svdupq_b16 (0, 1, 1, 1, 0, 1, 1, 1))
     214  
     215  /*
     216  ** dupq_ff_b16:
     217  **	ptrue	p0\.h, all
     218  **	ret
     219  */
     220  TEST_UNIFORM_P (dupq_ff_b16,
     221  		p0 = svdupq_n_b16 (1, 1, 1, 1, 1, 1, 1, 1),
     222  		p0 = svdupq_b16 (1, 1, 1, 1, 1, 1, 1, 1))
     223  
     224  /*
     225  ** dupq_01_b16:
     226  ** (
     227  **	ptrue	(p[0-7])\.d, all
     228  **	pfalse	(p[0-7])\.b
     229  **	trn1	p0\.d, \1\.d, \2\.d
     230  ** |
     231  **	pfalse	(p[0-7])\.b
     232  **	ptrue	(p[0-7])\.d, all
     233  **	trn1	p0\.d, \4\.d, \3\.d
     234  ** )
     235  **	ret
     236  */
     237  TEST_UNIFORM_P (dupq_01_b16,
     238  		p0 = svdupq_n_b16 (1, 0, 0, 0, 0, 0, 0, 0),
     239  		p0 = svdupq_b16 (1, 0, 0, 0, 0, 0, 0, 0))
     240  
     241  /*
     242  ** dupq_03_b16:
     243  **	...
     244  **	cmpne	p0\.b, p[0-7]/z, z[0-9]+\.b, #0
     245  **	ret
     246  */
     247  TEST_UNIFORM_P (dupq_03_b16,
     248  		p0 = svdupq_n_b16 (1, 1, 0, 0, 0, 0, 0, 0),
     249  		p0 = svdupq_b16 (1, 1, 0, 0, 0, 0, 0, 0))
     250  
     251  /*
     252  ** dupq_0f_b16:
     253  ** (
     254  **	ptrue	(p[0-7])\.h, all
     255  **	pfalse	(p[0-7])\.b
     256  **	trn1	p0\.d, \1\.d, \2\.d
     257  ** |
     258  **	pfalse	(p[0-7])\.b
     259  **	ptrue	(p[0-7])\.h, all
     260  **	trn1	p0\.d, \4\.d, \3\.d
     261  ** )
     262  **	ret
     263  */
     264  TEST_UNIFORM_P (dupq_0f_b16,
     265  		p0 = svdupq_n_b16 (1, 1, 1, 1, 0, 0, 0, 0),
     266  		p0 = svdupq_b16 (1, 1, 1, 1, 0, 0, 0, 0))
     267  
     268  /*
     269  ** dupq_3f_b16:
     270  **	...
     271  **	cmpne	p0\.b, p[0-7]/z, z[0-9]+\.b, #0
     272  **	ret
     273  */
     274  TEST_UNIFORM_P (dupq_3f_b16,
     275  		p0 = svdupq_n_b16 (1, 1, 1, 1, 1, 1, 0, 0),
     276  		p0 = svdupq_b16 (1, 1, 1, 1, 1, 1, 0, 0))