1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** sub_f32_m_tied1:
       7  **	fsub	z0\.s, p0/m, z0\.s, z1\.s
       8  **	ret
       9  */
      10  TEST_UNIFORM_Z (sub_f32_m_tied1, svfloat32_t,
      11  		z0 = svsub_f32_m (p0, z0, z1),
      12  		z0 = svsub_m (p0, z0, z1))
      13  
      14  /*
      15  ** sub_f32_m_tied2:
      16  **	mov	(z[0-9]+)\.d, z0\.d
      17  **	movprfx	z0, z1
      18  **	fsub	z0\.s, p0/m, z0\.s, \1\.s
      19  **	ret
      20  */
      21  TEST_UNIFORM_Z (sub_f32_m_tied2, svfloat32_t,
      22  		z0 = svsub_f32_m (p0, z1, z0),
      23  		z0 = svsub_m (p0, z1, z0))
      24  
      25  /*
      26  ** sub_f32_m_untied:
      27  **	movprfx	z0, z1
      28  **	fsub	z0\.s, p0/m, z0\.s, z2\.s
      29  **	ret
      30  */
      31  TEST_UNIFORM_Z (sub_f32_m_untied, svfloat32_t,
      32  		z0 = svsub_f32_m (p0, z1, z2),
      33  		z0 = svsub_m (p0, z1, z2))
      34  
      35  /*
      36  ** sub_s4_f32_m_tied1:
      37  **	mov	(z[0-9]+\.s), s4
      38  **	fsub	z0\.s, p0/m, z0\.s, \1
      39  **	ret
      40  */
      41  TEST_UNIFORM_ZD (sub_s4_f32_m_tied1, svfloat32_t, float,
      42  		 z0 = svsub_n_f32_m (p0, z0, d4),
      43  		 z0 = svsub_m (p0, z0, d4))
      44  
      45  /*
      46  ** sub_s4_f32_m_untied:
      47  **	mov	(z[0-9]+\.s), s4
      48  **	movprfx	z0, z1
      49  **	fsub	z0\.s, p0/m, z0\.s, \1
      50  **	ret
      51  */
      52  TEST_UNIFORM_ZD (sub_s4_f32_m_untied, svfloat32_t, float,
      53  		 z0 = svsub_n_f32_m (p0, z1, d4),
      54  		 z0 = svsub_m (p0, z1, d4))
      55  
      56  /*
      57  ** sub_1_f32_m_tied1:
      58  **	fsub	z0\.s, p0/m, z0\.s, #1\.0
      59  **	ret
      60  */
      61  TEST_UNIFORM_Z (sub_1_f32_m_tied1, svfloat32_t,
      62  		z0 = svsub_n_f32_m (p0, z0, 1),
      63  		z0 = svsub_m (p0, z0, 1))
      64  
      65  /*
      66  ** sub_1_f32_m_untied:
      67  **	movprfx	z0, z1
      68  **	fsub	z0\.s, p0/m, z0\.s, #1\.0
      69  **	ret
      70  */
      71  TEST_UNIFORM_Z (sub_1_f32_m_untied, svfloat32_t,
      72  		z0 = svsub_n_f32_m (p0, z1, 1),
      73  		z0 = svsub_m (p0, z1, 1))
      74  
      75  /*
      76  ** sub_0p5_f32_m_tied1:
      77  **	fsub	z0\.s, p0/m, z0\.s, #0\.5
      78  **	ret
      79  */
      80  TEST_UNIFORM_Z (sub_0p5_f32_m_tied1, svfloat32_t,
      81  		z0 = svsub_n_f32_m (p0, z0, 0.5),
      82  		z0 = svsub_m (p0, z0, 0.5))
      83  
      84  /*
      85  ** sub_0p5_f32_m_untied:
      86  **	movprfx	z0, z1
      87  **	fsub	z0\.s, p0/m, z0\.s, #0\.5
      88  **	ret
      89  */
      90  TEST_UNIFORM_Z (sub_0p5_f32_m_untied, svfloat32_t,
      91  		z0 = svsub_n_f32_m (p0, z1, 0.5),
      92  		z0 = svsub_m (p0, z1, 0.5))
      93  
      94  /*
      95  ** sub_m1_f32_m_tied1:
      96  **	fadd	z0\.s, p0/m, z0\.s, #1\.0
      97  **	ret
      98  */
      99  TEST_UNIFORM_Z (sub_m1_f32_m_tied1, svfloat32_t,
     100  		z0 = svsub_n_f32_m (p0, z0, -1),
     101  		z0 = svsub_m (p0, z0, -1))
     102  
     103  /*
     104  ** sub_m1_f32_m_untied:
     105  **	movprfx	z0, z1
     106  **	fadd	z0\.s, p0/m, z0\.s, #1\.0
     107  **	ret
     108  */
     109  TEST_UNIFORM_Z (sub_m1_f32_m_untied, svfloat32_t,
     110  		z0 = svsub_n_f32_m (p0, z1, -1),
     111  		z0 = svsub_m (p0, z1, -1))
     112  
     113  /*
     114  ** sub_m0p5_f32_m_tied1:
     115  **	fadd	z0\.s, p0/m, z0\.s, #0\.5
     116  **	ret
     117  */
     118  TEST_UNIFORM_Z (sub_m0p5_f32_m_tied1, svfloat32_t,
     119  		z0 = svsub_n_f32_m (p0, z0, -0.5),
     120  		z0 = svsub_m (p0, z0, -0.5))
     121  
     122  /*
     123  ** sub_m0p5_f32_m_untied:
     124  **	movprfx	z0, z1
     125  **	fadd	z0\.s, p0/m, z0\.s, #0\.5
     126  **	ret
     127  */
     128  TEST_UNIFORM_Z (sub_m0p5_f32_m_untied, svfloat32_t,
     129  		z0 = svsub_n_f32_m (p0, z1, -0.5),
     130  		z0 = svsub_m (p0, z1, -0.5))
     131  
     132  /*
     133  ** sub_m2_f32_m:
     134  **	fmov	(z[0-9]+\.s), #2\.0(?:e\+0)?
     135  **	fadd	z0\.s, p0/m, z0\.s, \1
     136  **	ret
     137  */
     138  TEST_UNIFORM_Z (sub_m2_f32_m, svfloat32_t,
     139  		z0 = svsub_n_f32_m (p0, z0, -2),
     140  		z0 = svsub_m (p0, z0, -2))
     141  
     142  /*
     143  ** sub_f32_z_tied1:
     144  **	movprfx	z0\.s, p0/z, z0\.s
     145  **	fsub	z0\.s, p0/m, z0\.s, z1\.s
     146  **	ret
     147  */
     148  TEST_UNIFORM_Z (sub_f32_z_tied1, svfloat32_t,
     149  		z0 = svsub_f32_z (p0, z0, z1),
     150  		z0 = svsub_z (p0, z0, z1))
     151  
     152  /*
     153  ** sub_f32_z_tied2:
     154  **	movprfx	z0\.s, p0/z, z0\.s
     155  **	fsubr	z0\.s, p0/m, z0\.s, z1\.s
     156  **	ret
     157  */
     158  TEST_UNIFORM_Z (sub_f32_z_tied2, svfloat32_t,
     159  		z0 = svsub_f32_z (p0, z1, z0),
     160  		z0 = svsub_z (p0, z1, z0))
     161  
     162  /*
     163  ** sub_f32_z_untied:
     164  ** (
     165  **	movprfx	z0\.s, p0/z, z1\.s
     166  **	fsub	z0\.s, p0/m, z0\.s, z2\.s
     167  ** |
     168  **	movprfx	z0\.s, p0/z, z2\.s
     169  **	fsubr	z0\.s, p0/m, z0\.s, z1\.s
     170  ** )
     171  **	ret
     172  */
     173  TEST_UNIFORM_Z (sub_f32_z_untied, svfloat32_t,
     174  		z0 = svsub_f32_z (p0, z1, z2),
     175  		z0 = svsub_z (p0, z1, z2))
     176  
     177  /*
     178  ** sub_s4_f32_z_tied1:
     179  **	mov	(z[0-9]+\.s), s4
     180  **	movprfx	z0\.s, p0/z, z0\.s
     181  **	fsub	z0\.s, p0/m, z0\.s, \1
     182  **	ret
     183  */
     184  TEST_UNIFORM_ZD (sub_s4_f32_z_tied1, svfloat32_t, float,
     185  		 z0 = svsub_n_f32_z (p0, z0, d4),
     186  		 z0 = svsub_z (p0, z0, d4))
     187  
     188  /*
     189  ** sub_s4_f32_z_untied:
     190  **	mov	(z[0-9]+\.s), s4
     191  ** (
     192  **	movprfx	z0\.s, p0/z, z1\.s
     193  **	fsub	z0\.s, p0/m, z0\.s, \1
     194  ** |
     195  **	movprfx	z0\.s, p0/z, \1
     196  **	fsubr	z0\.s, p0/m, z0\.s, z1\.s
     197  ** )
     198  **	ret
     199  */
     200  TEST_UNIFORM_ZD (sub_s4_f32_z_untied, svfloat32_t, float,
     201  		 z0 = svsub_n_f32_z (p0, z1, d4),
     202  		 z0 = svsub_z (p0, z1, d4))
     203  
     204  /*
     205  ** sub_1_f32_z_tied1:
     206  **	movprfx	z0\.s, p0/z, z0\.s
     207  **	fsub	z0\.s, p0/m, z0\.s, #1\.0
     208  **	ret
     209  */
     210  TEST_UNIFORM_Z (sub_1_f32_z_tied1, svfloat32_t,
     211  		z0 = svsub_n_f32_z (p0, z0, 1),
     212  		z0 = svsub_z (p0, z0, 1))
     213  
     214  /*
     215  ** sub_1_f32_z_untied:
     216  **	movprfx	z0\.s, p0/z, z1\.s
     217  **	fsub	z0\.s, p0/m, z0\.s, #1\.0
     218  **	ret
     219  */
     220  TEST_UNIFORM_Z (sub_1_f32_z_untied, svfloat32_t,
     221  		z0 = svsub_n_f32_z (p0, z1, 1),
     222  		z0 = svsub_z (p0, z1, 1))
     223  
     224  /*
     225  ** sub_0p5_f32_z_tied1:
     226  **	movprfx	z0\.s, p0/z, z0\.s
     227  **	fsub	z0\.s, p0/m, z0\.s, #0\.5
     228  **	ret
     229  */
     230  TEST_UNIFORM_Z (sub_0p5_f32_z_tied1, svfloat32_t,
     231  		z0 = svsub_n_f32_z (p0, z0, 0.5),
     232  		z0 = svsub_z (p0, z0, 0.5))
     233  
     234  /*
     235  ** sub_0p5_f32_z_untied:
     236  **	movprfx	z0\.s, p0/z, z1\.s
     237  **	fsub	z0\.s, p0/m, z0\.s, #0\.5
     238  **	ret
     239  */
     240  TEST_UNIFORM_Z (sub_0p5_f32_z_untied, svfloat32_t,
     241  		z0 = svsub_n_f32_z (p0, z1, 0.5),
     242  		z0 = svsub_z (p0, z1, 0.5))
     243  
     244  /*
     245  ** sub_m1_f32_z_tied1:
     246  **	movprfx	z0\.s, p0/z, z0\.s
     247  **	fadd	z0\.s, p0/m, z0\.s, #1\.0
     248  **	ret
     249  */
     250  TEST_UNIFORM_Z (sub_m1_f32_z_tied1, svfloat32_t,
     251  		z0 = svsub_n_f32_z (p0, z0, -1),
     252  		z0 = svsub_z (p0, z0, -1))
     253  
     254  /*
     255  ** sub_m1_f32_z_untied:
     256  **	movprfx	z0\.s, p0/z, z1\.s
     257  **	fadd	z0\.s, p0/m, z0\.s, #1\.0
     258  **	ret
     259  */
     260  TEST_UNIFORM_Z (sub_m1_f32_z_untied, svfloat32_t,
     261  		z0 = svsub_n_f32_z (p0, z1, -1),
     262  		z0 = svsub_z (p0, z1, -1))
     263  
     264  /*
     265  ** sub_m0p5_f32_z_tied1:
     266  **	movprfx	z0\.s, p0/z, z0\.s
     267  **	fadd	z0\.s, p0/m, z0\.s, #0\.5
     268  **	ret
     269  */
     270  TEST_UNIFORM_Z (sub_m0p5_f32_z_tied1, svfloat32_t,
     271  		z0 = svsub_n_f32_z (p0, z0, -0.5),
     272  		z0 = svsub_z (p0, z0, -0.5))
     273  
     274  /*
     275  ** sub_m0p5_f32_z_untied:
     276  **	movprfx	z0\.s, p0/z, z1\.s
     277  **	fadd	z0\.s, p0/m, z0\.s, #0\.5
     278  **	ret
     279  */
     280  TEST_UNIFORM_Z (sub_m0p5_f32_z_untied, svfloat32_t,
     281  		z0 = svsub_n_f32_z (p0, z1, -0.5),
     282  		z0 = svsub_z (p0, z1, -0.5))
     283  
     284  /*
     285  ** sub_m2_f32_z:
     286  **	fmov	(z[0-9]+\.s), #2\.0(?:e\+0)?
     287  **	movprfx	z0\.s, p0/z, z0\.s
     288  **	fadd	z0\.s, p0/m, z0\.s, \1
     289  **	ret
     290  */
     291  TEST_UNIFORM_Z (sub_m2_f32_z, svfloat32_t,
     292  		z0 = svsub_n_f32_z (p0, z0, -2),
     293  		z0 = svsub_z (p0, z0, -2))
     294  
     295  /*
     296  ** sub_f32_x_tied1:
     297  **	fsub	z0\.s, p0/m, z0\.s, z1\.s
     298  **	ret
     299  */
     300  TEST_UNIFORM_Z (sub_f32_x_tied1, svfloat32_t,
     301  		z0 = svsub_f32_x (p0, z0, z1),
     302  		z0 = svsub_x (p0, z0, z1))
     303  
     304  /*
     305  ** sub_f32_x_tied2:
     306  **	fsubr	z0\.s, p0/m, z0\.s, z1\.s
     307  **	ret
     308  */
     309  TEST_UNIFORM_Z (sub_f32_x_tied2, svfloat32_t,
     310  		z0 = svsub_f32_x (p0, z1, z0),
     311  		z0 = svsub_x (p0, z1, z0))
     312  
     313  /*
     314  ** sub_f32_x_untied:
     315  ** (
     316  **	movprfx	z0, z1
     317  **	fsub	z0\.s, p0/m, z0\.s, z2\.s
     318  ** |
     319  **	movprfx	z0, z2
     320  **	fsubr	z0\.s, p0/m, z0\.s, z1\.s
     321  ** )
     322  **	ret
     323  */
     324  TEST_UNIFORM_Z (sub_f32_x_untied, svfloat32_t,
     325  		z0 = svsub_f32_x (p0, z1, z2),
     326  		z0 = svsub_x (p0, z1, z2))
     327  
     328  /*
     329  ** sub_s4_f32_x_tied1:
     330  **	mov	(z[0-9]+\.s), s4
     331  **	fsub	z0\.s, p0/m, z0\.s, \1
     332  **	ret
     333  */
     334  TEST_UNIFORM_ZD (sub_s4_f32_x_tied1, svfloat32_t, float,
     335  		 z0 = svsub_n_f32_x (p0, z0, d4),
     336  		 z0 = svsub_x (p0, z0, d4))
     337  
     338  /*
     339  ** sub_s4_f32_x_untied:
     340  **	mov	z0\.s, s4
     341  **	fsubr	z0\.s, p0/m, z0\.s, z1\.s
     342  **	ret
     343  */
     344  TEST_UNIFORM_ZD (sub_s4_f32_x_untied, svfloat32_t, float,
     345  		 z0 = svsub_n_f32_x (p0, z1, d4),
     346  		 z0 = svsub_x (p0, z1, d4))
     347  
     348  /*
     349  ** sub_1_f32_x_tied1:
     350  **	fsub	z0\.s, p0/m, z0\.s, #1\.0
     351  **	ret
     352  */
     353  TEST_UNIFORM_Z (sub_1_f32_x_tied1, svfloat32_t,
     354  		z0 = svsub_n_f32_x (p0, z0, 1),
     355  		z0 = svsub_x (p0, z0, 1))
     356  
     357  /*
     358  ** sub_1_f32_x_untied:
     359  **	movprfx	z0, z1
     360  **	fsub	z0\.s, p0/m, z0\.s, #1\.0
     361  **	ret
     362  */
     363  TEST_UNIFORM_Z (sub_1_f32_x_untied, svfloat32_t,
     364  		z0 = svsub_n_f32_x (p0, z1, 1),
     365  		z0 = svsub_x (p0, z1, 1))
     366  
     367  /*
     368  ** sub_0p5_f32_x_tied1:
     369  **	fsub	z0\.s, p0/m, z0\.s, #0\.5
     370  **	ret
     371  */
     372  TEST_UNIFORM_Z (sub_0p5_f32_x_tied1, svfloat32_t,
     373  		z0 = svsub_n_f32_x (p0, z0, 0.5),
     374  		z0 = svsub_x (p0, z0, 0.5))
     375  
     376  /*
     377  ** sub_0p5_f32_x_untied:
     378  **	movprfx	z0, z1
     379  **	fsub	z0\.s, p0/m, z0\.s, #0\.5
     380  **	ret
     381  */
     382  TEST_UNIFORM_Z (sub_0p5_f32_x_untied, svfloat32_t,
     383  		z0 = svsub_n_f32_x (p0, z1, 0.5),
     384  		z0 = svsub_x (p0, z1, 0.5))
     385  
     386  /*
     387  ** sub_m1_f32_x_tied1:
     388  **	fadd	z0\.s, p0/m, z0\.s, #1\.0
     389  **	ret
     390  */
     391  TEST_UNIFORM_Z (sub_m1_f32_x_tied1, svfloat32_t,
     392  		z0 = svsub_n_f32_x (p0, z0, -1),
     393  		z0 = svsub_x (p0, z0, -1))
     394  
     395  /*
     396  ** sub_m1_f32_x_untied:
     397  **	movprfx	z0, z1
     398  **	fadd	z0\.s, p0/m, z0\.s, #1\.0
     399  **	ret
     400  */
     401  TEST_UNIFORM_Z (sub_m1_f32_x_untied, svfloat32_t,
     402  		z0 = svsub_n_f32_x (p0, z1, -1),
     403  		z0 = svsub_x (p0, z1, -1))
     404  
     405  /*
     406  ** sub_m0p5_f32_x_tied1:
     407  **	fadd	z0\.s, p0/m, z0\.s, #0\.5
     408  **	ret
     409  */
     410  TEST_UNIFORM_Z (sub_m0p5_f32_x_tied1, svfloat32_t,
     411  		z0 = svsub_n_f32_x (p0, z0, -0.5),
     412  		z0 = svsub_x (p0, z0, -0.5))
     413  
     414  /*
     415  ** sub_m0p5_f32_x_untied:
     416  **	movprfx	z0, z1
     417  **	fadd	z0\.s, p0/m, z0\.s, #0\.5
     418  **	ret
     419  */
     420  TEST_UNIFORM_Z (sub_m0p5_f32_x_untied, svfloat32_t,
     421  		z0 = svsub_n_f32_x (p0, z1, -0.5),
     422  		z0 = svsub_x (p0, z1, -0.5))
     423  
     424  /*
     425  ** sub_2_f32_x_tied1:
     426  **	fmov	(z[0-9]+\.s), #-2\.0(?:e\+0)?
     427  **	fadd	z0\.s, p0/m, z0\.s, \1
     428  **	ret
     429  */
     430  TEST_UNIFORM_Z (sub_2_f32_x_tied1, svfloat32_t,
     431  		z0 = svsub_n_f32_x (p0, z0, 2),
     432  		z0 = svsub_x (p0, z0, 2))
     433  
     434  /*
     435  ** sub_2_f32_x_untied:
     436  **	fmov	z0\.s, #-2\.0(?:e\+0)?
     437  **	fadd	z0\.s, p0/m, z0\.s, z1\.s
     438  **	ret
     439  */
     440  TEST_UNIFORM_Z (sub_2_f32_x_untied, svfloat32_t,
     441  		z0 = svsub_n_f32_x (p0, z1, 2),
     442  		z0 = svsub_x (p0, z1, 2))
     443  
     444  /*
     445  ** ptrue_sub_f32_x_tied1:
     446  **	fsub	z0\.s, z0\.s, z1\.s
     447  **	ret
     448  */
     449  TEST_UNIFORM_Z (ptrue_sub_f32_x_tied1, svfloat32_t,
     450  		z0 = svsub_f32_x (svptrue_b32 (), z0, z1),
     451  		z0 = svsub_x (svptrue_b32 (), z0, z1))
     452  
     453  /*
     454  ** ptrue_sub_f32_x_tied2:
     455  **	fsub	z0\.s, z1\.s, z0\.s
     456  **	ret
     457  */
     458  TEST_UNIFORM_Z (ptrue_sub_f32_x_tied2, svfloat32_t,
     459  		z0 = svsub_f32_x (svptrue_b32 (), z1, z0),
     460  		z0 = svsub_x (svptrue_b32 (), z1, z0))
     461  
     462  /*
     463  ** ptrue_sub_f32_x_untied:
     464  **	fsub	z0\.s, z1\.s, z2\.s
     465  **	ret
     466  */
     467  TEST_UNIFORM_Z (ptrue_sub_f32_x_untied, svfloat32_t,
     468  		z0 = svsub_f32_x (svptrue_b32 (), z1, z2),
     469  		z0 = svsub_x (svptrue_b32 (), z1, z2))
     470  
     471  /*
     472  ** ptrue_sub_1_f32_x_tied1:
     473  **	...
     474  **	ptrue	p[0-9]+\.b[^\n]*
     475  **	...
     476  **	ret
     477  */
     478  TEST_UNIFORM_Z (ptrue_sub_1_f32_x_tied1, svfloat32_t,
     479  		z0 = svsub_n_f32_x (svptrue_b32 (), z0, 1),
     480  		z0 = svsub_x (svptrue_b32 (), z0, 1))
     481  
     482  /*
     483  ** ptrue_sub_1_f32_x_untied:
     484  **	...
     485  **	ptrue	p[0-9]+\.b[^\n]*
     486  **	...
     487  **	ret
     488  */
     489  TEST_UNIFORM_Z (ptrue_sub_1_f32_x_untied, svfloat32_t,
     490  		z0 = svsub_n_f32_x (svptrue_b32 (), z1, 1),
     491  		z0 = svsub_x (svptrue_b32 (), z1, 1))
     492  
     493  /*
     494  ** ptrue_sub_0p5_f32_x_tied1:
     495  **	...
     496  **	ptrue	p[0-9]+\.b[^\n]*
     497  **	...
     498  **	ret
     499  */
     500  TEST_UNIFORM_Z (ptrue_sub_0p5_f32_x_tied1, svfloat32_t,
     501  		z0 = svsub_n_f32_x (svptrue_b32 (), z0, 0.5),
     502  		z0 = svsub_x (svptrue_b32 (), z0, 0.5))
     503  
     504  /*
     505  ** ptrue_sub_0p5_f32_x_untied:
     506  **	...
     507  **	ptrue	p[0-9]+\.b[^\n]*
     508  **	...
     509  **	ret
     510  */
     511  TEST_UNIFORM_Z (ptrue_sub_0p5_f32_x_untied, svfloat32_t,
     512  		z0 = svsub_n_f32_x (svptrue_b32 (), z1, 0.5),
     513  		z0 = svsub_x (svptrue_b32 (), z1, 0.5))
     514  
     515  /*
     516  ** ptrue_sub_m1_f32_x_tied1:
     517  **	...
     518  **	ptrue	p[0-9]+\.b[^\n]*
     519  **	...
     520  **	ret
     521  */
     522  TEST_UNIFORM_Z (ptrue_sub_m1_f32_x_tied1, svfloat32_t,
     523  		z0 = svsub_n_f32_x (svptrue_b32 (), z0, -1),
     524  		z0 = svsub_x (svptrue_b32 (), z0, -1))
     525  
     526  /*
     527  ** ptrue_sub_m1_f32_x_untied:
     528  **	...
     529  **	ptrue	p[0-9]+\.b[^\n]*
     530  **	...
     531  **	ret
     532  */
     533  TEST_UNIFORM_Z (ptrue_sub_m1_f32_x_untied, svfloat32_t,
     534  		z0 = svsub_n_f32_x (svptrue_b32 (), z1, -1),
     535  		z0 = svsub_x (svptrue_b32 (), z1, -1))
     536  
     537  /*
     538  ** ptrue_sub_m0p5_f32_x_tied1:
     539  **	...
     540  **	ptrue	p[0-9]+\.b[^\n]*
     541  **	...
     542  **	ret
     543  */
     544  TEST_UNIFORM_Z (ptrue_sub_m0p5_f32_x_tied1, svfloat32_t,
     545  		z0 = svsub_n_f32_x (svptrue_b32 (), z0, -0.5),
     546  		z0 = svsub_x (svptrue_b32 (), z0, -0.5))
     547  
     548  /*
     549  ** ptrue_sub_m0p5_f32_x_untied:
     550  **	...
     551  **	ptrue	p[0-9]+\.b[^\n]*
     552  **	...
     553  **	ret
     554  */
     555  TEST_UNIFORM_Z (ptrue_sub_m0p5_f32_x_untied, svfloat32_t,
     556  		z0 = svsub_n_f32_x (svptrue_b32 (), z1, -0.5),
     557  		z0 = svsub_x (svptrue_b32 (), z1, -0.5))
     558  
     559  /*
     560  ** ptrue_sub_2_f32_x_tied1:
     561  **	fmov	(z[0-9]+\.s), #-2\.0(?:e\+0)?
     562  **	fadd	z0\.s, (z0\.s, \1|\1, z0\.s)
     563  **	ret
     564  */
     565  TEST_UNIFORM_Z (ptrue_sub_2_f32_x_tied1, svfloat32_t,
     566  		z0 = svsub_n_f32_x (svptrue_b32 (), z0, 2),
     567  		z0 = svsub_x (svptrue_b32 (), z0, 2))
     568  
     569  /*
     570  ** ptrue_sub_2_f32_x_untied:
     571  **	fmov	(z[0-9]+\.s), #-2\.0(?:e\+0)?
     572  **	fadd	z0\.s, (z1\.s, \1|\1, z1\.s)
     573  **	ret
     574  */
     575  TEST_UNIFORM_Z (ptrue_sub_2_f32_x_untied, svfloat32_t,
     576  		z0 = svsub_n_f32_x (svptrue_b32 (), z1, 2),
     577  		z0 = svsub_x (svptrue_b32 (), z1, 2))