(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
acle/
asm/
max_f32.c
       1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** max_f32_m_tied1:
       7  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
       8  **	ret
       9  */
      10  TEST_UNIFORM_Z (max_f32_m_tied1, svfloat32_t,
      11  		z0 = svmax_f32_m (p0, z0, z1),
      12  		z0 = svmax_m (p0, z0, z1))
      13  
      14  /*
      15  ** max_f32_m_tied2:
      16  **	mov	(z[0-9]+)\.d, z0\.d
      17  **	movprfx	z0, z1
      18  **	fmax	z0\.s, p0/m, z0\.s, \1\.s
      19  **	ret
      20  */
      21  TEST_UNIFORM_Z (max_f32_m_tied2, svfloat32_t,
      22  		z0 = svmax_f32_m (p0, z1, z0),
      23  		z0 = svmax_m (p0, z1, z0))
      24  
      25  /*
      26  ** max_f32_m_untied:
      27  **	movprfx	z0, z1
      28  **	fmax	z0\.s, p0/m, z0\.s, z2\.s
      29  **	ret
      30  */
      31  TEST_UNIFORM_Z (max_f32_m_untied, svfloat32_t,
      32  		z0 = svmax_f32_m (p0, z1, z2),
      33  		z0 = svmax_m (p0, z1, z2))
      34  
      35  /*
      36  ** max_s4_f32_m_tied1:
      37  **	mov	(z[0-9]+\.s), s4
      38  **	fmax	z0\.s, p0/m, z0\.s, \1
      39  **	ret
      40  */
      41  TEST_UNIFORM_ZD (max_s4_f32_m_tied1, svfloat32_t, float,
      42  		 z0 = svmax_n_f32_m (p0, z0, d4),
      43  		 z0 = svmax_m (p0, z0, d4))
      44  
      45  /*
      46  ** max_s4_f32_m_untied:
      47  **	mov	(z[0-9]+\.s), s4
      48  **	movprfx	z0, z1
      49  **	fmax	z0\.s, p0/m, z0\.s, \1
      50  **	ret
      51  */
      52  TEST_UNIFORM_ZD (max_s4_f32_m_untied, svfloat32_t, float,
      53  		 z0 = svmax_n_f32_m (p0, z1, d4),
      54  		 z0 = svmax_m (p0, z1, d4))
      55  
      56  /*
      57  ** max_0_f32_m_tied1:
      58  **	fmax	z0\.s, p0/m, z0\.s, #0\.0
      59  **	ret
      60  */
      61  TEST_UNIFORM_Z (max_0_f32_m_tied1, svfloat32_t,
      62  		z0 = svmax_n_f32_m (p0, z0, 0),
      63  		z0 = svmax_m (p0, z0, 0))
      64  
      65  /*
      66  ** max_0_f32_m_untied:
      67  **	movprfx	z0, z1
      68  **	fmax	z0\.s, p0/m, z0\.s, #0\.0
      69  **	ret
      70  */
      71  TEST_UNIFORM_Z (max_0_f32_m_untied, svfloat32_t,
      72  		z0 = svmax_n_f32_m (p0, z1, 0),
      73  		z0 = svmax_m (p0, z1, 0))
      74  
      75  /*
      76  ** max_1_f32_m_tied1:
      77  **	fmax	z0\.s, p0/m, z0\.s, #1\.0
      78  **	ret
      79  */
      80  TEST_UNIFORM_Z (max_1_f32_m_tied1, svfloat32_t,
      81  		z0 = svmax_n_f32_m (p0, z0, 1),
      82  		z0 = svmax_m (p0, z0, 1))
      83  
      84  /*
      85  ** max_1_f32_m_untied:
      86  **	movprfx	z0, z1
      87  **	fmax	z0\.s, p0/m, z0\.s, #1\.0
      88  **	ret
      89  */
      90  TEST_UNIFORM_Z (max_1_f32_m_untied, svfloat32_t,
      91  		z0 = svmax_n_f32_m (p0, z1, 1),
      92  		z0 = svmax_m (p0, z1, 1))
      93  
      94  /*
      95  ** max_2_f32_m:
      96  **	fmov	(z[0-9]+\.s), #2\.0(?:e\+0)?
      97  **	fmax	z0\.s, p0/m, z0\.s, \1
      98  **	ret
      99  */
     100  TEST_UNIFORM_Z (max_2_f32_m, svfloat32_t,
     101  		z0 = svmax_n_f32_m (p0, z0, 2),
     102  		z0 = svmax_m (p0, z0, 2))
     103  
     104  /*
     105  ** max_f32_z_tied1:
     106  **	movprfx	z0\.s, p0/z, z0\.s
     107  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     108  **	ret
     109  */
     110  TEST_UNIFORM_Z (max_f32_z_tied1, svfloat32_t,
     111  		z0 = svmax_f32_z (p0, z0, z1),
     112  		z0 = svmax_z (p0, z0, z1))
     113  
     114  /*
     115  ** max_f32_z_tied2:
     116  **	movprfx	z0\.s, p0/z, z0\.s
     117  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     118  **	ret
     119  */
     120  TEST_UNIFORM_Z (max_f32_z_tied2, svfloat32_t,
     121  		z0 = svmax_f32_z (p0, z1, z0),
     122  		z0 = svmax_z (p0, z1, z0))
     123  
     124  /*
     125  ** max_f32_z_untied:
     126  ** (
     127  **	movprfx	z0\.s, p0/z, z1\.s
     128  **	fmax	z0\.s, p0/m, z0\.s, z2\.s
     129  ** |
     130  **	movprfx	z0\.s, p0/z, z2\.s
     131  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     132  ** )
     133  **	ret
     134  */
     135  TEST_UNIFORM_Z (max_f32_z_untied, svfloat32_t,
     136  		z0 = svmax_f32_z (p0, z1, z2),
     137  		z0 = svmax_z (p0, z1, z2))
     138  
     139  /*
     140  ** max_s4_f32_z_tied1:
     141  **	mov	(z[0-9]+\.s), s4
     142  **	movprfx	z0\.s, p0/z, z0\.s
     143  **	fmax	z0\.s, p0/m, z0\.s, \1
     144  **	ret
     145  */
     146  TEST_UNIFORM_ZD (max_s4_f32_z_tied1, svfloat32_t, float,
     147  		 z0 = svmax_n_f32_z (p0, z0, d4),
     148  		 z0 = svmax_z (p0, z0, d4))
     149  
     150  /*
     151  ** max_s4_f32_z_untied:
     152  **	mov	(z[0-9]+\.s), s4
     153  ** (
     154  **	movprfx	z0\.s, p0/z, z1\.s
     155  **	fmax	z0\.s, p0/m, z0\.s, \1
     156  ** |
     157  **	movprfx	z0\.s, p0/z, \1
     158  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     159  ** )
     160  **	ret
     161  */
     162  TEST_UNIFORM_ZD (max_s4_f32_z_untied, svfloat32_t, float,
     163  		 z0 = svmax_n_f32_z (p0, z1, d4),
     164  		 z0 = svmax_z (p0, z1, d4))
     165  
     166  /*
     167  ** max_0_f32_z_tied1:
     168  **	movprfx	z0\.s, p0/z, z0\.s
     169  **	fmax	z0\.s, p0/m, z0\.s, #0\.0
     170  **	ret
     171  */
     172  TEST_UNIFORM_Z (max_0_f32_z_tied1, svfloat32_t,
     173  		z0 = svmax_n_f32_z (p0, z0, 0),
     174  		z0 = svmax_z (p0, z0, 0))
     175  
     176  /*
     177  ** max_0_f32_z_untied:
     178  **	movprfx	z0\.s, p0/z, z1\.s
     179  **	fmax	z0\.s, p0/m, z0\.s, #0\.0
     180  **	ret
     181  */
     182  TEST_UNIFORM_Z (max_0_f32_z_untied, svfloat32_t,
     183  		z0 = svmax_n_f32_z (p0, z1, 0),
     184  		z0 = svmax_z (p0, z1, 0))
     185  
     186  /*
     187  ** max_1_f32_z_tied1:
     188  **	movprfx	z0\.s, p0/z, z0\.s
     189  **	fmax	z0\.s, p0/m, z0\.s, #1\.0
     190  **	ret
     191  */
     192  TEST_UNIFORM_Z (max_1_f32_z_tied1, svfloat32_t,
     193  		z0 = svmax_n_f32_z (p0, z0, 1),
     194  		z0 = svmax_z (p0, z0, 1))
     195  
     196  /*
     197  ** max_1_f32_z_untied:
     198  **	movprfx	z0\.s, p0/z, z1\.s
     199  **	fmax	z0\.s, p0/m, z0\.s, #1\.0
     200  **	ret
     201  */
     202  TEST_UNIFORM_Z (max_1_f32_z_untied, svfloat32_t,
     203  		z0 = svmax_n_f32_z (p0, z1, 1),
     204  		z0 = svmax_z (p0, z1, 1))
     205  
     206  /*
     207  ** max_2_f32_z:
     208  **	fmov	(z[0-9]+\.s), #2\.0(?:e\+0)?
     209  **	movprfx	z0\.s, p0/z, z0\.s
     210  **	fmax	z0\.s, p0/m, z0\.s, \1
     211  **	ret
     212  */
     213  TEST_UNIFORM_Z (max_2_f32_z, svfloat32_t,
     214  		z0 = svmax_n_f32_z (p0, z0, 2),
     215  		z0 = svmax_z (p0, z0, 2))
     216  
     217  /*
     218  ** max_f32_x_tied1:
     219  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     220  **	ret
     221  */
     222  TEST_UNIFORM_Z (max_f32_x_tied1, svfloat32_t,
     223  		z0 = svmax_f32_x (p0, z0, z1),
     224  		z0 = svmax_x (p0, z0, z1))
     225  
     226  /*
     227  ** max_f32_x_tied2:
     228  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     229  **	ret
     230  */
     231  TEST_UNIFORM_Z (max_f32_x_tied2, svfloat32_t,
     232  		z0 = svmax_f32_x (p0, z1, z0),
     233  		z0 = svmax_x (p0, z1, z0))
     234  
     235  /*
     236  ** max_f32_x_untied:
     237  ** (
     238  **	movprfx	z0, z1
     239  **	fmax	z0\.s, p0/m, z0\.s, z2\.s
     240  ** |
     241  **	movprfx	z0, z2
     242  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     243  ** )
     244  **	ret
     245  */
     246  TEST_UNIFORM_Z (max_f32_x_untied, svfloat32_t,
     247  		z0 = svmax_f32_x (p0, z1, z2),
     248  		z0 = svmax_x (p0, z1, z2))
     249  
     250  /*
     251  ** max_s4_f32_x_tied1:
     252  **	mov	(z[0-9]+\.s), s4
     253  **	fmax	z0\.s, p0/m, z0\.s, \1
     254  **	ret
     255  */
     256  TEST_UNIFORM_ZD (max_s4_f32_x_tied1, svfloat32_t, float,
     257  		 z0 = svmax_n_f32_x (p0, z0, d4),
     258  		 z0 = svmax_x (p0, z0, d4))
     259  
     260  /*
     261  ** max_s4_f32_x_untied:
     262  **	mov	z0\.s, s4
     263  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     264  **	ret
     265  */
     266  TEST_UNIFORM_ZD (max_s4_f32_x_untied, svfloat32_t, float,
     267  		 z0 = svmax_n_f32_x (p0, z1, d4),
     268  		 z0 = svmax_x (p0, z1, d4))
     269  
     270  /*
     271  ** max_0_f32_x_tied1:
     272  **	fmax	z0\.s, p0/m, z0\.s, #0\.0
     273  **	ret
     274  */
     275  TEST_UNIFORM_Z (max_0_f32_x_tied1, svfloat32_t,
     276  		z0 = svmax_n_f32_x (p0, z0, 0),
     277  		z0 = svmax_x (p0, z0, 0))
     278  
     279  /*
     280  ** max_0_f32_x_untied:
     281  **	movprfx	z0, z1
     282  **	fmax	z0\.s, p0/m, z0\.s, #0\.0
     283  **	ret
     284  */
     285  TEST_UNIFORM_Z (max_0_f32_x_untied, svfloat32_t,
     286  		z0 = svmax_n_f32_x (p0, z1, 0),
     287  		z0 = svmax_x (p0, z1, 0))
     288  
     289  /*
     290  ** max_1_f32_x_tied1:
     291  **	fmax	z0\.s, p0/m, z0\.s, #1\.0
     292  **	ret
     293  */
     294  TEST_UNIFORM_Z (max_1_f32_x_tied1, svfloat32_t,
     295  		z0 = svmax_n_f32_x (p0, z0, 1),
     296  		z0 = svmax_x (p0, z0, 1))
     297  
     298  /*
     299  ** max_1_f32_x_untied:
     300  **	movprfx	z0, z1
     301  **	fmax	z0\.s, p0/m, z0\.s, #1\.0
     302  **	ret
     303  */
     304  TEST_UNIFORM_Z (max_1_f32_x_untied, svfloat32_t,
     305  		z0 = svmax_n_f32_x (p0, z1, 1),
     306  		z0 = svmax_x (p0, z1, 1))
     307  
     308  /*
     309  ** max_2_f32_x_tied1:
     310  **	fmov	(z[0-9]+\.s), #2\.0(?:e\+0)?
     311  **	fmax	z0\.s, p0/m, z0\.s, \1
     312  **	ret
     313  */
     314  TEST_UNIFORM_Z (max_2_f32_x_tied1, svfloat32_t,
     315  		z0 = svmax_n_f32_x (p0, z0, 2),
     316  		z0 = svmax_x (p0, z0, 2))
     317  
     318  /*
     319  ** max_2_f32_x_untied:
     320  **	fmov	z0\.s, #2\.0(?:e\+0)?
     321  **	fmax	z0\.s, p0/m, z0\.s, z1\.s
     322  **	ret
     323  */
     324  TEST_UNIFORM_Z (max_2_f32_x_untied, svfloat32_t,
     325  		z0 = svmax_n_f32_x (p0, z1, 2),
     326  		z0 = svmax_x (p0, z1, 2))
     327  
     328  /*
     329  ** ptrue_max_f32_x_tied1:
     330  **	...
     331  **	ptrue	p[0-9]+\.b[^\n]*
     332  **	...
     333  **	ret
     334  */
     335  TEST_UNIFORM_Z (ptrue_max_f32_x_tied1, svfloat32_t,
     336  		z0 = svmax_f32_x (svptrue_b32 (), z0, z1),
     337  		z0 = svmax_x (svptrue_b32 (), z0, z1))
     338  
     339  /*
     340  ** ptrue_max_f32_x_tied2:
     341  **	...
     342  **	ptrue	p[0-9]+\.b[^\n]*
     343  **	...
     344  **	ret
     345  */
     346  TEST_UNIFORM_Z (ptrue_max_f32_x_tied2, svfloat32_t,
     347  		z0 = svmax_f32_x (svptrue_b32 (), z1, z0),
     348  		z0 = svmax_x (svptrue_b32 (), z1, z0))
     349  
     350  /*
     351  ** ptrue_max_f32_x_untied:
     352  **	...
     353  **	ptrue	p[0-9]+\.b[^\n]*
     354  **	...
     355  **	ret
     356  */
     357  TEST_UNIFORM_Z (ptrue_max_f32_x_untied, svfloat32_t,
     358  		z0 = svmax_f32_x (svptrue_b32 (), z1, z2),
     359  		z0 = svmax_x (svptrue_b32 (), z1, z2))
     360  
     361  /*
     362  ** ptrue_max_0_f32_x_tied1:
     363  **	...
     364  **	ptrue	p[0-9]+\.b[^\n]*
     365  **	...
     366  **	ret
     367  */
     368  TEST_UNIFORM_Z (ptrue_max_0_f32_x_tied1, svfloat32_t,
     369  		z0 = svmax_n_f32_x (svptrue_b32 (), z0, 0),
     370  		z0 = svmax_x (svptrue_b32 (), z0, 0))
     371  
     372  /*
     373  ** ptrue_max_0_f32_x_untied:
     374  **	...
     375  **	ptrue	p[0-9]+\.b[^\n]*
     376  **	...
     377  **	ret
     378  */
     379  TEST_UNIFORM_Z (ptrue_max_0_f32_x_untied, svfloat32_t,
     380  		z0 = svmax_n_f32_x (svptrue_b32 (), z1, 0),
     381  		z0 = svmax_x (svptrue_b32 (), z1, 0))
     382  
     383  /*
     384  ** ptrue_max_1_f32_x_tied1:
     385  **	...
     386  **	ptrue	p[0-9]+\.b[^\n]*
     387  **	...
     388  **	ret
     389  */
     390  TEST_UNIFORM_Z (ptrue_max_1_f32_x_tied1, svfloat32_t,
     391  		z0 = svmax_n_f32_x (svptrue_b32 (), z0, 1),
     392  		z0 = svmax_x (svptrue_b32 (), z0, 1))
     393  
     394  /*
     395  ** ptrue_max_1_f32_x_untied:
     396  **	...
     397  **	ptrue	p[0-9]+\.b[^\n]*
     398  **	...
     399  **	ret
     400  */
     401  TEST_UNIFORM_Z (ptrue_max_1_f32_x_untied, svfloat32_t,
     402  		z0 = svmax_n_f32_x (svptrue_b32 (), z1, 1),
     403  		z0 = svmax_x (svptrue_b32 (), z1, 1))
     404  
     405  /*
     406  ** ptrue_max_2_f32_x_tied1:
     407  **	...
     408  **	ptrue	p[0-9]+\.b[^\n]*
     409  **	...
     410  **	ret
     411  */
     412  TEST_UNIFORM_Z (ptrue_max_2_f32_x_tied1, svfloat32_t,
     413  		z0 = svmax_n_f32_x (svptrue_b32 (), z0, 2),
     414  		z0 = svmax_x (svptrue_b32 (), z0, 2))
     415  
     416  /*
     417  ** ptrue_max_2_f32_x_untied:
     418  **	...
     419  **	ptrue	p[0-9]+\.b[^\n]*
     420  **	...
     421  **	ret
     422  */
     423  TEST_UNIFORM_Z (ptrue_max_2_f32_x_untied, svfloat32_t,
     424  		z0 = svmax_n_f32_x (svptrue_b32 (), z1, 2),
     425  		z0 = svmax_x (svptrue_b32 (), z1, 2))