1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** dupq_0000_b8:
       7  **	pfalse	p0\.b
       8  **	ret
       9  */
      10  TEST_UNIFORM_P (dupq_0000_b8,
      11  		p0 = svdupq_n_b8 (0, 0, 0, 0, 0, 0, 0, 0,
      12  				  0, 0, 0, 0, 0, 0, 0, 0),
      13  		p0 = svdupq_b8 (0, 0, 0, 0, 0, 0, 0, 0,
      14  				0, 0, 0, 0, 0, 0, 0, 0))
      15  
      16  /*
      17  ** dupq_1111_b8:
      18  **	ptrue	p0\.s, all
      19  **	ret
      20  */
      21  TEST_UNIFORM_P (dupq_1111_b8,
      22  		p0 = svdupq_n_b8 (1, 0, 0, 0, 1, 0, 0, 0,
      23  				  1, 0, 0, 0, 1, 0, 0, 0),
      24  		p0 = svdupq_b8 (1, 0, 0, 0, 1, 0, 0, 0,
      25  				1, 0, 0, 0, 1, 0, 0, 0))
      26  
      27  /*
      28  ** dupq_2222_b8:
      29  ** (
      30  **	pfalse	(p[0-7])\.b
      31  **	ptrue	(p[0-7])\.s, all
      32  **	trn1	p0\.b, \1\.b, \2\.b
      33  ** |
      34  **	ptrue	(p[0-7])\.s, all
      35  **	pfalse	(p[0-7])\.b
      36  **	trn1	p0\.b, \4\.b, \3\.b
      37  ** )
      38  **	ret
      39  */
      40  TEST_UNIFORM_P (dupq_2222_b8,
      41  		p0 = svdupq_n_b8 (0, 1, 0, 0, 0, 1, 0, 0,
      42  				  0, 1, 0, 0, 0, 1, 0, 0),
      43  		p0 = svdupq_b8 (0, 1, 0, 0, 0, 1, 0, 0,
      44  				0, 1, 0, 0, 0, 1, 0, 0))
      45  
      46  /*
      47  ** dupq_3333_b8:
      48  **	ptrue	(p[0-7])\.s, all
      49  **	trn1	p0\.b, \1\.b, \1\.b
      50  **	ret
      51  */
      52  TEST_UNIFORM_P (dupq_3333_b8,
      53  		p0 = svdupq_n_b8 (1, 1, 0, 0, 1, 1, 0, 0,
      54  				  1, 1, 0, 0, 1, 1, 0, 0),
      55  		p0 = svdupq_b8 (1, 1, 0, 0, 1, 1, 0, 0,
      56  				1, 1, 0, 0, 1, 1, 0, 0))
      57  
      58  /*
      59  ** dupq_4444_b8:
      60  ** (
      61  **	ptrue	(p[0-7])\.s, all
      62  **	ptrue	(p[0-7])\.h, all
      63  **	not	p0\.b, \2/z, \1\.b
      64  ** |
      65  **	ptrue	(p[0-7])\.h, all
      66  **	ptrue	(p[0-7])\.s, all
      67  **	not	p0\.b, \3/z, \4\.b
      68  ** )
      69  **	ret
      70  */
      71  TEST_UNIFORM_P (dupq_4444_b8,
      72  		p0 = svdupq_n_b8 (0, 0, 1, 0, 0, 0, 1, 0,
      73  				  0, 0, 1, 0, 0, 0, 1, 0),
      74  		p0 = svdupq_b8 (0, 0, 1, 0, 0, 0, 1, 0,
      75  				0, 0, 1, 0, 0, 0, 1, 0))
      76  
      77  /*
      78  ** dupq_5555_b8:
      79  **	ptrue	p0\.h, all
      80  **	ret
      81  */
      82  TEST_UNIFORM_P (dupq_5555_b8,
      83  		p0 = svdupq_n_b8 (1, 0, 1, 0, 1, 0, 1, 0,
      84  				  1, 0, 1, 0, 1, 0, 1, 0),
      85  		p0 = svdupq_b8 (1, 0, 1, 0, 1, 0, 1, 0,
      86  				1, 0, 1, 0, 1, 0, 1, 0))
      87  
      88  /*
      89  ** dupq_6666_b8:
      90  ** (
      91  **	mov	(z[0-9]+)\.s, #16776960
      92  **	ptrue	(p[0-7])\.b, all
      93  **	cmpne	p0\.b, \2/z, \1\.b, #0
      94  ** |
      95  **	ptrue	(p[0-7])\.b, all
      96  **	mov	(z[0-9]+)\.s, #16776960
      97  **	cmpne	p0\.b, \3/z, \4\.b, #0
      98  ** )
      99  **	ret
     100  */
     101  TEST_UNIFORM_P (dupq_6666_b8,
     102  		p0 = svdupq_n_b8 (0, 1, 1, 0, 0, 1, 1, 0,
     103  				  0, 1, 1, 0, 0, 1, 1, 0),
     104  		p0 = svdupq_b8 (0, 1, 1, 0, 0, 1, 1, 0,
     105  				0, 1, 1, 0, 0, 1, 1, 0))
     106  
     107  /*
     108  ** dupq_7777_b8:
     109  ** (
     110  **	ptrue	(p[0-7])\.s, all
     111  **	ptrue	(p[0-7])\.[bh], all
     112  **	trn1	p0\.b, \2\.b, \1\.b
     113  ** |
     114  **	ptrue	(p[0-7])\.[bh], all
     115  **	ptrue	(p[0-7])\.s, all
     116  **	trn1	p0\.b, \3\.b, \4\.b
     117  ** )
     118  **	ret
     119  */
     120  TEST_UNIFORM_P (dupq_7777_b8,
     121  		p0 = svdupq_n_b8 (1, 1, 1, 0, 1, 1, 1, 0,
     122  				  1, 1, 1, 0, 1, 1, 1, 0),
     123  		p0 = svdupq_b8 (1, 1, 1, 0, 1, 1, 1, 0,
     124  				1, 1, 1, 0, 1, 1, 1, 0))
     125  
     126  /*
     127  ** dupq_8888_b8:
     128  ** (
     129  **	mov	(z[0-9]+)\.s, #-16777216
     130  **	ptrue	(p[0-7])\.b, all
     131  **	cmpne	p0\.b, \2/z, \1\.b, #0
     132  ** |
     133  **	ptrue	(p[0-7])\.b, all
     134  **	mov	(z[0-9]+)\.s, #-16777216
     135  **	cmpne	p0\.b, \3/z, \4\.b, #0
     136  ** )
     137  **	ret
     138  */
     139  TEST_UNIFORM_P (dupq_8888_b8,
     140  		p0 = svdupq_n_b8 (0, 0, 0, 1, 0, 0, 0, 1,
     141  				  0, 0, 0, 1, 0, 0, 0, 1),
     142  		p0 = svdupq_b8 (0, 0, 0, 1, 0, 0, 0, 1,
     143  				0, 0, 0, 1, 0, 0, 0, 1))
     144  
     145  /*
     146  ** dupq_9999_b8:
     147  ** (
     148  **	mov	(z[0-9]+)\.s, #-16776961
     149  **	ptrue	(p[0-7])\.b, all
     150  **	cmpne	p0\.b, \2/z, \1\.b, #0
     151  ** |
     152  **	ptrue	(p[0-7])\.b, all
     153  **	mov	(z[0-9]+)\.s, #-16776961
     154  **	cmpne	p0\.b, \3/z, \4\.b, #0
     155  ** )
     156  **	ret
     157  */
     158  TEST_UNIFORM_P (dupq_9999_b8,
     159  		p0 = svdupq_n_b8 (1, 0, 0, 1, 1, 0, 0, 1,
     160  				  1, 0, 0, 1, 1, 0, 0, 1),
     161  		p0 = svdupq_b8 (1, 0, 0, 1, 1, 0, 0, 1,
     162  				1, 0, 0, 1, 1, 0, 0, 1))
     163  
     164  /*
     165  ** dupq_aaaa_b8:
     166  ** (
     167  **	ptrue	(p[0-7])\.h, all
     168  **	ptrue	(p[0-7])\.b, all
     169  **	not	p0\.b, \2/z, \1\.b
     170  ** |
     171  **	ptrue	(p[0-7])\.b, all
     172  **	ptrue	(p[0-7])\.h, all
     173  **	not	p0\.b, \3/z, \4\.b
     174  ** )
     175  **	ret
     176  */
     177  TEST_UNIFORM_P (dupq_aaaa_b8,
     178  		p0 = svdupq_n_b8 (0, 1, 0, 1, 0, 1, 0, 1,
     179  				  0, 1, 0, 1, 0, 1, 0, 1),
     180  		p0 = svdupq_b8 (0, 1, 0, 1, 0, 1, 0, 1,
     181  				0, 1, 0, 1, 0, 1, 0, 1))
     182  
     183  /*
     184  ** dupq_bbbb_b8:
     185  ** (
     186  **	ptrue	(p[0-7])\.s, all
     187  **	ptrue	(p[0-7])\.[bh], all
     188  **	trn1	p0\.b, \1\.b, \2\.b
     189  ** |
     190  **	ptrue	(p[0-7])\.[bh], all
     191  **	ptrue	(p[0-7])\.s, all
     192  **	trn1	p0\.b, \4\.b, \3\.b
     193  ** )
     194  **	ret
     195  */
     196  TEST_UNIFORM_P (dupq_bbbb_b8,
     197  		p0 = svdupq_n_b8 (1, 1, 0, 1, 1, 1, 0, 1,
     198  				  1, 1, 0, 1, 1, 1, 0, 1),
     199  		p0 = svdupq_b8 (1, 1, 0, 1, 1, 1, 0, 1,
     200  				1, 1, 0, 1, 1, 1, 0, 1))
     201  
     202  /*
     203  ** dupq_cccc_b8:
     204  ** (
     205  **	pfalse	(p[0-7])\.b
     206  **	ptrue	(p[0-7])\.b, all
     207  **	trn1	p0\.h, \1\.h, \2\.h
     208  ** |
     209  **	ptrue	(p[0-7])\.b, all
     210  **	pfalse	(p[0-7])\.b
     211  **	trn1	p0\.h, \4\.h, \3\.h
     212  ** )
     213  **	ret
     214  */
     215  TEST_UNIFORM_P (dupq_cccc_b8,
     216  		p0 = svdupq_n_b8 (0, 0, 1, 1, 0, 0, 1, 1,
     217  				  0, 0, 1, 1, 0, 0, 1, 1),
     218  		p0 = svdupq_b8 (0, 0, 1, 1, 0, 0, 1, 1,
     219  				0, 0, 1, 1, 0, 0, 1, 1))
     220  
     221  /*
     222  ** dupq_dddd_b8:
     223  ** (
     224  **	ptrue	(p[0-7])\.[hs], all
     225  **	ptrue	(p[0-7])\.b, all
     226  **	trn1	p0\.h, \1\.h, \2\.h
     227  ** |
     228  **	ptrue	(p[0-7])\.b, all
     229  **	ptrue	(p[0-7])\.[hs], all
     230  **	trn1	p0\.h, \4\.h, \3\.h
     231  ** )
     232  **	ret
     233  */
     234  TEST_UNIFORM_P (dupq_dddd_b8,
     235  		p0 = svdupq_n_b8 (1, 0, 1, 1, 1, 0, 1, 1,
     236  				  1, 0, 1, 1, 1, 0, 1, 1),
     237  		p0 = svdupq_b8 (1, 0, 1, 1, 1, 0, 1, 1,
     238  				1, 0, 1, 1, 1, 0, 1, 1))
     239  
     240  /*
     241  ** dupq_eeee_b8:
     242  ** (
     243  **	ptrue	(p[0-7])\.s, all
     244  **	ptrue	(p[0-7])\.b, all
     245  **	not	p0\.b, \2/z, \1\.b
     246  ** |
     247  **	ptrue	(p[0-7])\.b, all
     248  **	ptrue	(p[0-7])\.s, all
     249  **	not	p0\.b, \3/z, \4\.b
     250  ** )
     251  **	ret
     252  */
     253  TEST_UNIFORM_P (dupq_eeee_b8,
     254  		p0 = svdupq_n_b8 (0, 1, 1, 1, 0, 1, 1, 1,
     255  				  0, 1, 1, 1, 0, 1, 1, 1),
     256  		p0 = svdupq_b8 (0, 1, 1, 1, 0, 1, 1, 1,
     257  				0, 1, 1, 1, 0, 1, 1, 1))
     258  
     259  /*
     260  ** dupq_ffff_b8:
     261  **	ptrue	p0\.b, all
     262  **	ret
     263  */
     264  TEST_UNIFORM_P (dupq_ffff_b8,
     265  		p0 = svdupq_n_b8 (1, 1, 1, 1, 1, 1, 1, 1,
     266  				  1, 1, 1, 1, 1, 1, 1, 1),
     267  		p0 = svdupq_b8 (1, 1, 1, 1, 1, 1, 1, 1,
     268  				1, 1, 1, 1, 1, 1, 1, 1))
     269  
     270  /*
     271  ** dupq_5f5f_b8:
     272  ** (
     273  **	ptrue	(p[0-7])\.h, all
     274  **	ptrue	(p[0-7])\.b, all
     275  **	trn1	p0\.s, \2\.s, \1\.s
     276  ** |
     277  **	ptrue	(p[0-7])\.b, all
     278  **	ptrue	(p[0-7])\.h, all
     279  **	trn1	p0\.s, \3\.s, \4\.s
     280  ** )
     281  **	ret
     282  */
     283  TEST_UNIFORM_P (dupq_5f5f_b8,
     284  		p0 = svdupq_n_b8 (1, 1, 1, 1, 1, 0, 1, 0,
     285  				  1, 1, 1, 1, 1, 0, 1, 0),
     286  		p0 = svdupq_b8 (1, 1, 1, 1, 1, 0, 1, 0,
     287  				1, 1, 1, 1, 1, 0, 1, 0))
     288  
     289  /*
     290  ** dupq_1f1f_b8:
     291  ** (
     292  **	ptrue	(p[0-7])\.[sd], all
     293  **	ptrue	(p[0-7])\.b, all
     294  **	trn1	p0\.s, \2\.s, \1\.s
     295  ** |
     296  **	ptrue	(p[0-7])\.b, all
     297  **	ptrue	(p[0-7])\.[sd], all
     298  **	trn1	p0\.s, \3\.s, \4\.s
     299  ** )
     300  **	ret
     301  */
     302  TEST_UNIFORM_P (dupq_1f1f_b8,
     303  		p0 = svdupq_n_b8 (1, 1, 1, 1, 1, 0, 0, 0,
     304  				  1, 1, 1, 1, 1, 0, 0, 0),
     305  		p0 = svdupq_b8 (1, 1, 1, 1, 1, 0, 0, 0,
     306  				1, 1, 1, 1, 1, 0, 0, 0))
     307  
     308  /*
     309  ** dupq_1515_b8:
     310  ** (
     311  **	ptrue	(p[0-7])\.d, all
     312  **	ptrue	(p[0-7])\.[hs], all
     313  **	trn1	p0\.h, \2\.h, \1\.h
     314  ** |
     315  **	ptrue	(p[0-7])\.[hs], all
     316  **	ptrue	(p[0-7])\.d, all
     317  **	trn1	p0\.h, \3\.h, \4\.h
     318  ** )
     319  **	ret
     320  */
     321  TEST_UNIFORM_P (dupq_1515_b8,
     322  		p0 = svdupq_n_b8 (1, 0, 1, 0, 1, 0, 0, 0,
     323  				  1, 0, 1, 0, 1, 0, 0, 0),
     324  		p0 = svdupq_b8 (1, 0, 1, 0, 1, 0, 0, 0,
     325  				1, 0, 1, 0, 1, 0, 0, 0))
     326  
     327  /*
     328  ** dupq_0505_b8:
     329  **	ptrue	(p[0-7])\.d, all
     330  **	trn1	p0\.h, \1\.h, \1\.h
     331  **	ret
     332  */
     333  TEST_UNIFORM_P (dupq_0505_b8,
     334  		p0 = svdupq_n_b8 (1, 0, 1, 0, 0, 0, 0, 0,
     335  				  1, 0, 1, 0, 0, 0, 0, 0),
     336  		p0 = svdupq_b8 (1, 0, 1, 0, 0, 0, 0, 0,
     337  				1, 0, 1, 0, 0, 0, 0, 0))
     338  
     339  /*
     340  ** dupq_00ff_b8:
     341  ** (
     342  **	pfalse	(p[0-7])\.b
     343  **	ptrue	(p[0-7])\.b, all
     344  **	trn1	p0\.d, \2\.d, \1\.d
     345  ** |
     346  **	ptrue	(p[0-7])\.b, all
     347  **	pfalse	(p[0-7])\.b
     348  **	trn1	p0\.d, \3\.d, \4\.d
     349  ** )
     350  **	ret
     351  */
     352  TEST_UNIFORM_P (dupq_00ff_b8,
     353  		p0 = svdupq_n_b8 (1, 1, 1, 1, 1, 1, 1, 1,
     354  				  0, 0, 0, 0, 0, 0, 0, 0),
     355  		p0 = svdupq_b8 (1, 1, 1, 1, 1, 1, 1, 1,
     356  				0, 0, 0, 0, 0, 0, 0, 0))
     357  
     358  /*
     359  ** dupq_0055_b8:
     360  ** (
     361  **	pfalse	(p[0-7])\.b
     362  **	ptrue	(p[0-7])\.h, all
     363  **	trn1	p0\.d, \2\.d, \1\.d
     364  ** |
     365  **	ptrue	(p[0-7])\.h, all
     366  **	pfalse	(p[0-7])\.b
     367  **	trn1	p0\.d, \3\.d, \4\.d
     368  ** )
     369  **	ret
     370  */
     371  TEST_UNIFORM_P (dupq_0055_b8,
     372  		p0 = svdupq_n_b8 (1, 0, 1, 0, 1, 0, 1, 0,
     373  				  0, 0, 0, 0, 0, 0, 0, 0),
     374  		p0 = svdupq_b8 (1, 0, 1, 0, 1, 0, 1, 0,
     375  				0, 0, 0, 0, 0, 0, 0, 0))
     376  
     377  /*
     378  ** dupq_0011_b8:
     379  ** (
     380  **	pfalse	(p[0-7])\.b
     381  **	ptrue	(p[0-7])\.s, all
     382  **	trn1	p0\.d, \2\.d, \1\.d
     383  ** |
     384  **	ptrue	(p[0-7])\.s, all
     385  **	pfalse	(p[0-7])\.b
     386  **	trn1	p0\.d, \3\.d, \4\.d
     387  ** )
     388  **	ret
     389  */
     390  TEST_UNIFORM_P (dupq_0011_b8,
     391  		p0 = svdupq_n_b8 (1, 0, 0, 0, 1, 0, 0, 0,
     392  				  0, 0, 0, 0, 0, 0, 0, 0),
     393  		p0 = svdupq_b8 (1, 0, 0, 0, 1, 0, 0, 0,
     394  				0, 0, 0, 0, 0, 0, 0, 0))
     395  
     396  /*
     397  ** dupq_0111_b8:
     398  ** (
     399  **	ptrue	(p[0-7])\.d, all
     400  **	ptrue	(p[0-7])\.s, all
     401  **	trn1	p0\.d, \2\.d, \1\.d
     402  ** |
     403  **	ptrue	(p[0-7])\.s, all
     404  **	ptrue	(p[0-7])\.d, all
     405  **	trn1	p0\.d, \3\.d, \4\.d
     406  ** )
     407  **	ret
     408  */
     409  TEST_UNIFORM_P (dupq_0111_b8,
     410  		p0 = svdupq_n_b8 (1, 0, 0, 0, 1, 0, 0, 0,
     411  				  1, 0, 0, 0, 0, 0, 0, 0),
     412  		p0 = svdupq_b8 (1, 0, 0, 0, 1, 0, 0, 0,
     413  				1, 0, 0, 0, 0, 0, 0, 0))