1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** bic_u8_m_tied1:
       7  **	bic	z0\.b, p0/m, z0\.b, z1\.b
       8  **	ret
       9  */
      10  TEST_UNIFORM_Z (bic_u8_m_tied1, svuint8_t,
      11  		z0 = svbic_u8_m (p0, z0, z1),
      12  		z0 = svbic_m (p0, z0, z1))
      13  
      14  /*
      15  ** bic_u8_m_tied2:
      16  **	mov	(z[0-9]+)\.d, z0\.d
      17  **	movprfx	z0, z1
      18  **	bic	z0\.b, p0/m, z0\.b, \1\.b
      19  **	ret
      20  */
      21  TEST_UNIFORM_Z (bic_u8_m_tied2, svuint8_t,
      22  		z0 = svbic_u8_m (p0, z1, z0),
      23  		z0 = svbic_m (p0, z1, z0))
      24  
      25  /*
      26  ** bic_u8_m_untied:
      27  **	movprfx	z0, z1
      28  **	bic	z0\.b, p0/m, z0\.b, z2\.b
      29  **	ret
      30  */
      31  TEST_UNIFORM_Z (bic_u8_m_untied, svuint8_t,
      32  		z0 = svbic_u8_m (p0, z1, z2),
      33  		z0 = svbic_m (p0, z1, z2))
      34  
      35  /*
      36  ** bic_w0_u8_m_tied1:
      37  **	mov	(z[0-9]+\.b), w0
      38  **	bic	z0\.b, p0/m, z0\.b, \1
      39  **	ret
      40  */
      41  TEST_UNIFORM_ZX (bic_w0_u8_m_tied1, svuint8_t, uint8_t,
      42  		 z0 = svbic_n_u8_m (p0, z0, x0),
      43  		 z0 = svbic_m (p0, z0, x0))
      44  
      45  /*
      46  ** bic_w0_u8_m_untied: { xfail *-*-* }
      47  **	mov	(z[0-9]+\.b), w0
      48  **	movprfx	z0, z1
      49  **	bic	z0\.b, p0/m, z0\.b, \1
      50  **	ret
      51  */
      52  TEST_UNIFORM_ZX (bic_w0_u8_m_untied, svuint8_t, uint8_t,
      53  		 z0 = svbic_n_u8_m (p0, z1, x0),
      54  		 z0 = svbic_m (p0, z1, x0))
      55  
      56  /*
      57  ** bic_1_u8_m_tied1:
      58  **	mov	(z[0-9]+\.b), #-2
      59  **	and	z0\.b, p0/m, z0\.b, \1
      60  **	ret
      61  */
      62  TEST_UNIFORM_Z (bic_1_u8_m_tied1, svuint8_t,
      63  		z0 = svbic_n_u8_m (p0, z0, 1),
      64  		z0 = svbic_m (p0, z0, 1))
      65  
      66  /*
      67  ** bic_1_u8_m_untied: { xfail *-*-* }
      68  **	mov	(z[0-9]+\.b), #-2
      69  **	movprfx	z0, z1
      70  **	and	z0\.b, p0/m, z0\.b, \1
      71  **	ret
      72  */
      73  TEST_UNIFORM_Z (bic_1_u8_m_untied, svuint8_t,
      74  		z0 = svbic_n_u8_m (p0, z1, 1),
      75  		z0 = svbic_m (p0, z1, 1))
      76  
      77  /*
      78  ** bic_m2_u8_m:
      79  **	mov	(z[0-9]+\.b), #1
      80  **	and	z0\.b, p0/m, z0\.b, \1
      81  **	ret
      82  */
      83  TEST_UNIFORM_Z (bic_m2_u8_m, svuint8_t,
      84  		z0 = svbic_n_u8_m (p0, z0, -2),
      85  		z0 = svbic_m (p0, z0, -2))
      86  
      87  /*
      88  ** bic_u8_z_tied1:
      89  **	movprfx	z0\.b, p0/z, z0\.b
      90  **	bic	z0\.b, p0/m, z0\.b, z1\.b
      91  **	ret
      92  */
      93  TEST_UNIFORM_Z (bic_u8_z_tied1, svuint8_t,
      94  		z0 = svbic_u8_z (p0, z0, z1),
      95  		z0 = svbic_z (p0, z0, z1))
      96  
      97  /*
      98  ** bic_u8_z_tied2:
      99  **	mov	(z[0-9]+)\.d, z0\.d
     100  **	movprfx	z0\.b, p0/z, z1\.b
     101  **	bic	z0\.b, p0/m, z0\.b, \1\.b
     102  **	ret
     103  */
     104  TEST_UNIFORM_Z (bic_u8_z_tied2, svuint8_t,
     105  		z0 = svbic_u8_z (p0, z1, z0),
     106  		z0 = svbic_z (p0, z1, z0))
     107  
     108  /*
     109  ** bic_u8_z_untied:
     110  **	movprfx	z0\.b, p0/z, z1\.b
     111  **	bic	z0\.b, p0/m, z0\.b, z2\.b
     112  **	ret
     113  */
     114  TEST_UNIFORM_Z (bic_u8_z_untied, svuint8_t,
     115  		z0 = svbic_u8_z (p0, z1, z2),
     116  		z0 = svbic_z (p0, z1, z2))
     117  
     118  /*
     119  ** bic_w0_u8_z_tied1:
     120  **	mov	(z[0-9]+\.b), w0
     121  **	movprfx	z0\.b, p0/z, z0\.b
     122  **	bic	z0\.b, p0/m, z0\.b, \1
     123  **	ret
     124  */
     125  TEST_UNIFORM_ZX (bic_w0_u8_z_tied1, svuint8_t, uint8_t,
     126  		 z0 = svbic_n_u8_z (p0, z0, x0),
     127  		 z0 = svbic_z (p0, z0, x0))
     128  
     129  /*
     130  ** bic_w0_u8_z_untied: { xfail *-*-* }
     131  **	mov	(z[0-9]+\.b), w0
     132  **	movprfx	z0\.b, p0/z, z1\.b
     133  **	bic	z0\.b, p0/m, z0\.b, \1
     134  **	ret
     135  */
     136  TEST_UNIFORM_ZX (bic_w0_u8_z_untied, svuint8_t, uint8_t,
     137  		 z0 = svbic_n_u8_z (p0, z1, x0),
     138  		 z0 = svbic_z (p0, z1, x0))
     139  
     140  /*
     141  ** bic_1_u8_z_tied1:
     142  **	mov	(z[0-9]+\.b), #-2
     143  **	movprfx	z0\.b, p0/z, z0\.b
     144  **	and	z0\.b, p0/m, z0\.b, \1
     145  **	ret
     146  */
     147  TEST_UNIFORM_Z (bic_1_u8_z_tied1, svuint8_t,
     148  		z0 = svbic_n_u8_z (p0, z0, 1),
     149  		z0 = svbic_z (p0, z0, 1))
     150  
     151  /*
     152  ** bic_1_u8_z_untied:
     153  **	mov	(z[0-9]+\.b), #-2
     154  ** (
     155  **	movprfx	z0\.b, p0/z, z1\.b
     156  **	and	z0\.b, p0/m, z0\.b, \1
     157  ** |
     158  **	movprfx	z0\.b, p0/z, \1
     159  **	and	z0\.b, p0/m, z0\.b, z1\.b
     160  ** )
     161  **	ret
     162  */
     163  TEST_UNIFORM_Z (bic_1_u8_z_untied, svuint8_t,
     164  		z0 = svbic_n_u8_z (p0, z1, 1),
     165  		z0 = svbic_z (p0, z1, 1))
     166  
     167  /*
     168  ** bic_u8_x_tied1:
     169  **	bic	z0\.d, z0\.d, z1\.d
     170  **	ret
     171  */
     172  TEST_UNIFORM_Z (bic_u8_x_tied1, svuint8_t,
     173  		z0 = svbic_u8_x (p0, z0, z1),
     174  		z0 = svbic_x (p0, z0, z1))
     175  
     176  /*
     177  ** bic_u8_x_tied2:
     178  **	bic	z0\.d, z1\.d, z0\.d
     179  **	ret
     180  */
     181  TEST_UNIFORM_Z (bic_u8_x_tied2, svuint8_t,
     182  		z0 = svbic_u8_x (p0, z1, z0),
     183  		z0 = svbic_x (p0, z1, z0))
     184  
     185  /*
     186  ** bic_u8_x_untied:
     187  **	bic	z0\.d, z1\.d, z2\.d
     188  **	ret
     189  */
     190  TEST_UNIFORM_Z (bic_u8_x_untied, svuint8_t,
     191  		z0 = svbic_u8_x (p0, z1, z2),
     192  		z0 = svbic_x (p0, z1, z2))
     193  
     194  /*
     195  ** bic_w0_u8_x_tied1:
     196  **	mov	(z[0-9]+)\.b, w0
     197  **	bic	z0\.d, z0\.d, \1\.d
     198  **	ret
     199  */
     200  TEST_UNIFORM_ZX (bic_w0_u8_x_tied1, svuint8_t, uint8_t,
     201  		 z0 = svbic_n_u8_x (p0, z0, x0),
     202  		 z0 = svbic_x (p0, z0, x0))
     203  
     204  /*
     205  ** bic_w0_u8_x_untied:
     206  **	mov	(z[0-9]+)\.b, w0
     207  **	bic	z0\.d, z1\.d, \1\.d
     208  **	ret
     209  */
     210  TEST_UNIFORM_ZX (bic_w0_u8_x_untied, svuint8_t, uint8_t,
     211  		 z0 = svbic_n_u8_x (p0, z1, x0),
     212  		 z0 = svbic_x (p0, z1, x0))
     213  
     214  /*
     215  ** bic_1_u8_x_tied1:
     216  **	and	z0\.b, z0\.b, #0xfe
     217  **	ret
     218  */
     219  TEST_UNIFORM_Z (bic_1_u8_x_tied1, svuint8_t,
     220  		z0 = svbic_n_u8_x (p0, z0, 1),
     221  		z0 = svbic_x (p0, z0, 1))
     222  
     223  /*
     224  ** bic_1_u8_x_untied:
     225  **	movprfx	z0, z1
     226  **	and	z0\.b, z0\.b, #0xfe
     227  **	ret
     228  */
     229  TEST_UNIFORM_Z (bic_1_u8_x_untied, svuint8_t,
     230  		z0 = svbic_n_u8_x (p0, z1, 1),
     231  		z0 = svbic_x (p0, z1, 1))
     232  
     233  /*
     234  ** bic_127_u8_x:
     235  **	and	z0\.b, z0\.b, #0x80
     236  **	ret
     237  */
     238  TEST_UNIFORM_Z (bic_127_u8_x, svuint8_t,
     239  		z0 = svbic_n_u8_x (p0, z0, 127),
     240  		z0 = svbic_x (p0, z0, 127))
     241  
     242  /*
     243  ** bic_128_u8_x:
     244  **	and	z0\.b, z0\.b, #0x7f
     245  **	ret
     246  */
     247  TEST_UNIFORM_Z (bic_128_u8_x, svuint8_t,
     248  		z0 = svbic_n_u8_x (p0, z0, 128),
     249  		z0 = svbic_x (p0, z0, 128))
     250  
     251  /*
     252  ** bic_255_u8_x:
     253  **	mov	z0\.b, #0
     254  **	ret
     255  */
     256  TEST_UNIFORM_Z (bic_255_u8_x, svuint8_t,
     257  		z0 = svbic_n_u8_x (p0, z0, 255),
     258  		z0 = svbic_x (p0, z0, 255))
     259  
     260  /*
     261  ** bic_m127_u8_x:
     262  **	and	z0\.b, z0\.b, #0x7e
     263  **	ret
     264  */
     265  TEST_UNIFORM_Z (bic_m127_u8_x, svuint8_t,
     266  		z0 = svbic_n_u8_x (p0, z0, -127),
     267  		z0 = svbic_x (p0, z0, -127))
     268  
     269  /*
     270  ** bic_m128_u8_x:
     271  **	and	z0\.b, z0\.b, #0x7f
     272  **	ret
     273  */
     274  TEST_UNIFORM_Z (bic_m128_u8_x, svuint8_t,
     275  		z0 = svbic_n_u8_x (p0, z0, -128),
     276  		z0 = svbic_x (p0, z0, -128))
     277  
     278  /*
     279  ** bic_5_u8_x:
     280  **	mov	(z[0-9]+)\.b, #-6
     281  **	and	z0\.d, (z0\.d, \1\.d|\1\.d, z0\.d)
     282  **	ret
     283  */
     284  TEST_UNIFORM_Z (bic_5_u8_x, svuint8_t,
     285  		z0 = svbic_n_u8_x (p0, z0, 5),
     286  		z0 = svbic_x (p0, z0, 5))