(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
vector_intrinsics.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  #include "arm_neon.h"
       5  
       6  
       7  /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
       8  
       9  float32x2_t
      10  test_vmax_f32 (float32x2_t __a, float32x2_t __b)
      11  {
      12    return vmax_f32(__a, __b);
      13  }
      14  
      15  /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
      16  
      17  int8x8_t
      18  test_vmax_s8 (int8x8_t __a, int8x8_t __b)
      19  {
      20    return vmax_s8(__a, __b);
      21  }
      22  
      23  /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
      24  
      25  uint8x8_t
      26  test_vmax_u8 (uint8x8_t __a, uint8x8_t __b)
      27  {
      28    return vmax_u8(__a, __b);
      29  }
      30  
      31  /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
      32  
      33  int16x4_t
      34  test_vmax_s16 (int16x4_t __a, int16x4_t __b)
      35  {
      36    return vmax_s16(__a, __b);
      37  }
      38  
      39  /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
      40  
      41  uint16x4_t
      42  test_vmax_u16 (uint16x4_t __a, uint16x4_t __b)
      43  {
      44    return vmax_u16(__a, __b);
      45  }
      46  
      47  /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
      48  
      49  int32x2_t
      50  test_vmax_s32 (int32x2_t __a, int32x2_t __b)
      51  {
      52    return vmax_s32(__a, __b);
      53  }
      54  
      55  /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
      56  
      57  uint32x2_t
      58  test_vmax_u32 (uint32x2_t __a, uint32x2_t __b)
      59  {
      60    return vmax_u32(__a, __b);
      61  }
      62  
      63  /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
      64  
      65  float32x4_t
      66  test_vmaxq_f32 (float32x4_t __a, float32x4_t __b)
      67  {
      68    return vmaxq_f32(__a, __b);
      69  }
      70  
      71  /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2d, v\[0-9\].2d, v\[0-9\].2d" 1 } } */
      72  
      73  float64x2_t
      74  test_vmaxq_f64 (float64x2_t __a, float64x2_t __b)
      75  {
      76    return vmaxq_f64(__a, __b);
      77  }
      78  
      79  /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
      80  
      81  int8x16_t
      82  test_vmaxq_s8 (int8x16_t __a, int8x16_t __b)
      83  {
      84    return vmaxq_s8(__a, __b);
      85  }
      86  
      87  /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
      88  
      89  uint8x16_t
      90  test_vmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
      91  {
      92    return vmaxq_u8(__a, __b);
      93  }
      94  
      95  /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
      96  
      97  int16x8_t
      98  test_vmaxq_s16 (int16x8_t __a, int16x8_t __b)
      99  {
     100    return vmaxq_s16(__a, __b);
     101  }
     102  
     103  /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
     104  
     105  uint16x8_t
     106  test_vmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
     107  {
     108    return vmaxq_u16(__a, __b);
     109  }
     110  
     111  /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
     112  
     113  int32x4_t
     114  test_vmaxq_s32 (int32x4_t __a, int32x4_t __b)
     115  {
     116    return vmaxq_s32(__a, __b);
     117  }
     118  
     119  /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
     120  
     121  uint32x4_t
     122  test_vmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
     123  {
     124    return vmaxq_u32(__a, __b);
     125  }
     126  
     127  /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
     128  
     129  float32x2_t
     130  test_vmin_f32 (float32x2_t __a, float32x2_t __b)
     131  {
     132    return vmin_f32(__a, __b);
     133  }
     134  
     135  /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
     136  
     137  int8x8_t
     138  test_vmin_s8 (int8x8_t __a, int8x8_t __b)
     139  {
     140    return vmin_s8(__a, __b);
     141  }
     142  
     143  /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
     144  
     145  uint8x8_t
     146  test_vmin_u8 (uint8x8_t __a, uint8x8_t __b)
     147  {
     148    return vmin_u8(__a, __b);
     149  }
     150  
     151  /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
     152  
     153  int16x4_t
     154  test_vmin_s16 (int16x4_t __a, int16x4_t __b)
     155  {
     156    return vmin_s16(__a, __b);
     157  }
     158  
     159  /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
     160  
     161  uint16x4_t
     162  test_vmin_u16 (uint16x4_t __a, uint16x4_t __b)
     163  {
     164    return vmin_u16(__a, __b);
     165  }
     166  
     167  /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
     168  
     169  int32x2_t
     170  test_vmin_s32 (int32x2_t __a, int32x2_t __b)
     171  {
     172    return vmin_s32(__a, __b);
     173  }
     174  
     175  /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
     176  
     177  uint32x2_t
     178  test_vmin_u32 (uint32x2_t __a, uint32x2_t __b)
     179  {
     180    return vmin_u32(__a, __b);
     181  }
     182  
     183  /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
     184  
     185  float32x4_t
     186  test_vminq_f32 (float32x4_t __a, float32x4_t __b)
     187  {
     188    return vminq_f32(__a, __b);
     189  }
     190  
     191  /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.2d, v\[0-9\].2d, v\[0-9\].2d" 1 } } */
     192  
     193  float64x2_t
     194  test_vminq_f64 (float64x2_t __a, float64x2_t __b)
     195  {
     196    return vminq_f64(__a, __b);
     197  }
     198  
     199  /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
     200  
     201  int8x16_t
     202  test_vminq_s8 (int8x16_t __a, int8x16_t __b)
     203  {
     204    return vminq_s8(__a, __b);
     205  }
     206  
     207  /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
     208  
     209  uint8x16_t
     210  test_vminq_u8 (uint8x16_t __a, uint8x16_t __b)
     211  {
     212    return vminq_u8(__a, __b);
     213  }
     214  
     215  /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
     216  
     217  int16x8_t
     218  test_vminq_s16 (int16x8_t __a, int16x8_t __b)
     219  {
     220    return vminq_s16(__a, __b);
     221  }
     222  
     223  /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
     224  
     225  uint16x8_t
     226  test_vminq_u16 (uint16x8_t __a, uint16x8_t __b)
     227  {
     228    return vminq_u16(__a, __b);
     229  }
     230  
     231  /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
     232  
     233  int32x4_t
     234  test_vminq_s32 (int32x4_t __a, int32x4_t __b)
     235  {
     236    return vminq_s32(__a, __b);
     237  }
     238  
     239  /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
     240  
     241  uint32x4_t
     242  test_vminq_u32 (uint32x4_t __a, uint32x4_t __b)
     243  {
     244    return vminq_u32(__a, __b);
     245  }
     246  
     247  /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 2 } } */
     248  
     249  int8x8_t
     250  test_vpadd_s8 (int8x8_t __a, int8x8_t __b)
     251  {
     252    return vpadd_s8(__a, __b);
     253  }
     254  
     255  uint8x8_t
     256  test_vpadd_u8 (uint8x8_t __a, uint8x8_t __b)
     257  {
     258    return vpadd_u8(__a, __b);
     259  }
     260  
     261  /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 2 } } */
     262  
     263  int16x4_t
     264  test_vpadd_s16 (int16x4_t __a, int16x4_t __b)
     265  {
     266    return vpadd_s16(__a, __b);
     267  }
     268  
     269  uint16x4_t
     270  test_vpadd_u16 (uint16x4_t __a, uint16x4_t __b)
     271  {
     272    return vpadd_u16(__a, __b);
     273  }
     274  
     275  /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 2 } } */
     276  
     277  int32x2_t
     278  test_vpadd_s32 (int32x2_t __a, int32x2_t __b)
     279  {
     280    return vpadd_s32(__a, __b);
     281  }
     282  
     283  uint32x2_t
     284  test_vpadd_u32 (uint32x2_t __a, uint32x2_t __b)
     285  {
     286    return vpadd_u32(__a, __b);
     287  }
     288  
     289  /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
     290  
     291  int32x4_t
     292  test_vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
     293  {
     294    return vqdmlal_s16 (__a, __b, __c);
     295  }
     296  
     297  /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
     298  
     299  int32x4_t
     300  test_vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
     301  {
     302    return vqdmlal_high_s16 (__a, __b, __c);
     303  }
     304  
     305  /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
     306  
     307  int32x4_t
     308  test_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
     309  {
     310    return vqdmlal_high_lane_s16 (a, b, c, 3);
     311  }
     312  
     313  int32x4_t
     314  test_vqdmlal_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
     315  {
     316    return vqdmlal_high_laneq_s16 (a, b, c, 6);
     317  }
     318  
     319  int32x4_t
     320  test_vqdmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
     321  {
     322    return vqdmlal_high_n_s16 (__a, __b, __c);
     323  }
     324  
     325  /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
     326  
     327  int32x4_t
     328  test_vqdmlal_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
     329  {
     330    return vqdmlal_lane_s16 (a, b, c, 3);
     331  }
     332  
     333  int32x4_t
     334  test_vqdmlal_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
     335  {
     336    return vqdmlal_laneq_s16 (a, b, c, 6);
     337  }
     338  
     339  int32x4_t
     340  test_vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
     341  {
     342    return vqdmlal_n_s16 (__a, __b, __c);
     343  }
     344  
     345  /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
     346  
     347  int64x2_t
     348  test_vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
     349  {
     350    return vqdmlal_s32 (__a, __b, __c);
     351  }
     352  
     353  /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
     354  
     355  int64x2_t
     356  test_vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
     357  {
     358    return vqdmlal_high_s32 (__a, __b, __c);
     359  }
     360  
     361  /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
     362  
     363  int64x2_t
     364  test_vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c)
     365  {
     366    return vqdmlal_high_lane_s32 (__a, __b, __c, 1);
     367  }
     368  
     369  int64x2_t
     370  test_vqdmlal_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
     371  {
     372    return vqdmlal_high_laneq_s32 (__a, __b, __c, 3);
     373  }
     374  
     375  int64x2_t
     376  test_vqdmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
     377  {
     378    return vqdmlal_high_n_s32 (__a, __b, __c);
     379  }
     380  
     381  /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
     382  
     383  int64x2_t
     384  test_vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
     385  {
     386    return vqdmlal_lane_s32 (__a, __b, __c, 1);
     387  }
     388  
     389  int64x2_t
     390  test_vqdmlal_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c)
     391  {
     392    return vqdmlal_laneq_s32 (__a, __b, __c, 3);
     393  }
     394  
     395  int64x2_t
     396  test_vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
     397  {
     398    return vqdmlal_n_s32 (__a, __b, __c);
     399  }
     400  
     401  /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
     402  
     403  int32x4_t
     404  test_vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
     405  {
     406    return vqdmlsl_s16 (__a, __b, __c);
     407  }
     408  
     409  /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
     410  
     411  int32x4_t
     412  test_vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
     413  {
     414    return vqdmlsl_high_s16 (__a, __b, __c);
     415  }
     416  
     417  /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
     418  
     419  int32x4_t
     420  test_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
     421  {
     422    return vqdmlsl_high_lane_s16 (a, b, c, 3);
     423  }
     424  
     425  int32x4_t
     426  test_vqdmlsl_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
     427  {
     428    return vqdmlsl_high_laneq_s16 (a, b, c, 6);
     429  }
     430  
     431  int32x4_t
     432  test_vqdmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
     433  {
     434    return vqdmlsl_high_n_s16 (__a, __b, __c);
     435  }
     436  
     437  /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
     438  
     439  int32x4_t
     440  test_vqdmlsl_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
     441  {
     442    return vqdmlsl_lane_s16 (a, b, c, 3);
     443  }
     444  
     445  int32x4_t
     446  test_vqdmlsl_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
     447  {
     448    return vqdmlsl_laneq_s16 (a, b, c, 6);
     449  }
     450  
     451  int32x4_t
     452  test_vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
     453  {
     454    return vqdmlsl_n_s16 (__a, __b, __c);
     455  }
     456  
     457  /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
     458  
     459  int64x2_t
     460  test_vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
     461  {
     462    return vqdmlsl_s32 (__a, __b, __c);
     463  }
     464  
     465  /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
     466  
     467  int64x2_t
     468  test_vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
     469  {
     470    return vqdmlsl_high_s32 (__a, __b, __c);
     471  }
     472  
     473  /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
     474  
     475  int64x2_t
     476  test_vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c)
     477  {
     478    return vqdmlsl_high_lane_s32 (__a, __b, __c, 1);
     479  }
     480  
     481  int64x2_t
     482  test_vqdmlsl_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
     483  {
     484    return vqdmlsl_high_laneq_s32 (__a, __b, __c, 3);
     485  }
     486  
     487  int64x2_t
     488  test_vqdmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
     489  {
     490    return vqdmlsl_high_n_s32 (__a, __b, __c);
     491  }
     492  
     493  /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
     494  
     495  int64x2_t
     496  test_vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
     497  {
     498    return vqdmlsl_lane_s32 (__a, __b, __c, 1);
     499  }
     500  
     501  int64x2_t
     502  test_vqdmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c)
     503  {
     504    return vqdmlsl_laneq_s32 (__a, __b, __c, 3);
     505  }
     506  
     507  int64x2_t
     508  test_vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
     509  {
     510    return vqdmlsl_n_s32 (__a, __b, __c);
     511  }
     512  
     513  /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
     514  
     515  int32x4_t
     516  test_vqdmull_s16 (int16x4_t __a, int16x4_t __b)
     517  {
     518    return vqdmull_s16 (__a, __b);
     519  }
     520  
     521  /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
     522  
     523  int32x4_t
     524  test_vqdmull_high_s16 (int16x8_t __a, int16x8_t __b)
     525  {
     526    return vqdmull_high_s16 (__a, __b);
     527  }
     528  
     529  /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
     530  
     531  int32x4_t
     532  test_vqdmull_high_lane_s16 (int16x8_t a, int16x4_t b)
     533  {
     534    return vqdmull_high_lane_s16 (a, b, 3);
     535  }
     536  
     537  int32x4_t
     538  test_vqdmull_high_laneq_s16 (int16x8_t a, int16x8_t b)
     539  {
     540    return vqdmull_high_laneq_s16 (a, b, 6);
     541  }
     542  
     543  int32x4_t
     544  test_vqdmull_high_n_s16 (int16x8_t __a, int16_t __b)
     545  {
     546    return vqdmull_high_n_s16 (__a, __b);
     547  }
     548  
     549  /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
     550  
     551  int32x4_t
     552  test_vqdmull_lane_s16 (int16x4_t a, int16x4_t b)
     553  {
     554    return vqdmull_lane_s16 (a, b, 3);
     555  }
     556  
     557  int32x4_t
     558  test_vqdmull_laneq_s16 (int16x4_t a, int16x8_t b)
     559  {
     560    return vqdmull_laneq_s16 (a, b, 6);
     561  }
     562  
     563  int32x4_t
     564  test_vqdmull_n_s16 (int16x4_t __a, int16_t __b)
     565  {
     566    return vqdmull_n_s16 (__a, __b);
     567  }
     568  
     569  /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
     570  
     571  int64x2_t
     572  test_vqdmull_s32 (int32x2_t __a, int32x2_t __b)
     573  {
     574    return vqdmull_s32 (__a, __b);
     575  }
     576  
     577  /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
     578  
     579  int64x2_t
     580  test_vqdmull_high_s32 (int32x4_t __a, int32x4_t __b)
     581  {
     582    return vqdmull_high_s32 (__a, __b);
     583  }
     584  
     585  /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
     586  
     587  int64x2_t
     588  test_vqdmull_high_lane_s32 (int32x4_t __a, int32x2_t __b)
     589  {
     590    return vqdmull_high_lane_s32 (__a, __b, 1);
     591  }
     592  
     593  int64x2_t
     594  test_vqdmull_high_laneq_s32 (int32x4_t __a, int32x4_t __b)
     595  {
     596    return vqdmull_high_laneq_s32 (__a, __b, 3);
     597  }
     598  
     599  int64x2_t
     600  test_vqdmull_high_n_s32 (int32x4_t __a, int32_t __b)
     601  {
     602    return vqdmull_high_n_s32 (__a, __b);
     603  }
     604  
     605  /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
     606  
     607  int64x2_t
     608  test_vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b)
     609  {
     610    return vqdmull_lane_s32 (__a, __b, 1);
     611  }
     612  
     613  int64x2_t
     614  test_vqdmull_laneq_s32 (int32x2_t __a, int32x4_t __b)
     615  {
     616    return vqdmull_laneq_s32 (__a, __b, 1);
     617  }
     618  
     619  int64x2_t
     620  test_vqdmull_n_s32 (int32x2_t __a, int32_t __b)
     621  {
     622    return vqdmull_n_s32 (__a, __b);
     623  }
     624  
     625  /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.2d" 1 } } */
     626  
     627  int64x2_t
     628  test_vshll_n_s32 (int32x2_t __a)
     629  {
     630    return vshll_n_s32 (__a, 9);
     631  }
     632  
     633  /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.2d" 1 } } */
     634  
     635  uint64x2_t
     636  test_vshll_n_u32 (uint32x2_t __a)
     637  {
     638    return vshll_n_u32 (__a, 9);
     639  }
     640  
     641  /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.2d" 2 } } */
     642  
     643  int64x2_t
     644  test_vshll_n_s32_2 (int32x2_t __a)
     645  {
     646    return vshll_n_s32 (__a, 32);
     647  }
     648  
     649  uint64x2_t
     650  test_vshll_n_u32_2 (uint32x2_t __a)
     651  {
     652    return vshll_n_u32 (__a, 32);
     653  }
     654  
     655  /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.4s" 1 } } */
     656  
     657  int32x4_t
     658  test_vshll_n_s16 (int16x4_t __a)
     659  {
     660    return vshll_n_s16 (__a, 3);
     661  }
     662  
     663  /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.4s" 1 } } */
     664  
     665  uint32x4_t
     666  test_vshll_n_u16 (uint16x4_t __a)
     667  {
     668    return vshll_n_u16 (__a, 3);
     669  }
     670  
     671  /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.4s" 2 } } */
     672  
     673  int32x4_t
     674  test_vshll_n_s16_2 (int16x4_t __a)
     675  {
     676    return vshll_n_s16 (__a, 16);
     677  }
     678  
     679  uint32x4_t
     680  test_vshll_n_u16_2 (uint16x4_t __a)
     681  {
     682    return vshll_n_u16 (__a, 16);
     683  }
     684  
     685  /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.8h" 1 } } */
     686  
     687  int16x8_t
     688  test_vshll_n_s8 (int8x8_t __a)
     689  {
     690    return vshll_n_s8 (__a, 3);
     691  }
     692  
     693  /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.8h" 1 } } */
     694  
     695  uint16x8_t
     696  test_vshll_n_u8 (uint8x8_t __a)
     697  {
     698    return vshll_n_u8 (__a, 3);
     699  }
     700  
     701  /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.8h" 2 } } */
     702  
     703  int16x8_t
     704  test_vshll_n_s8_2 (int8x8_t __a)
     705  {
     706    return vshll_n_s8 (__a, 8);
     707  }
     708  
     709  uint16x8_t
     710  test_vshll_n_u8_2 (uint8x8_t __a)
     711  {
     712    return vshll_n_u8 (__a, 8);
     713  }
     714  
     715  /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.2d" 1 } } */
     716  
     717  int64x2_t
     718  test_vshll_high_n_s32 (int32x4_t __a)
     719  {
     720    return vshll_high_n_s32 (__a, 9);
     721  }
     722  
     723  /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.2d" 1 } } */
     724  
     725  uint64x2_t
     726  test_vshll_high_n_u32 (uint32x4_t __a)
     727  {
     728    return vshll_high_n_u32 (__a, 9);
     729  }
     730  
     731  /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.2d" 2 } } */
     732  
     733  int64x2_t
     734  test_vshll_high_n_s32_2 (int32x4_t __a)
     735  {
     736    return vshll_high_n_s32 (__a, 32);
     737  }
     738  
     739  uint64x2_t
     740  test_vshll_high_n_u32_2 (uint32x4_t __a)
     741  {
     742    return vshll_high_n_u32 (__a, 32);
     743  }
     744  
     745  /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.4s" 1 } } */
     746  
     747  int32x4_t
     748  test_vshll_high_n_s16 (int16x8_t __a)
     749  {
     750    return vshll_high_n_s16 (__a, 3);
     751  }
     752  
     753  /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.4s" 1 } } */
     754  
     755  uint32x4_t
     756  test_vshll_high_n_u16 (uint16x8_t __a)
     757  {
     758    return vshll_high_n_u16 (__a, 3);
     759  }
     760  
     761  /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.4s" 2 } } */
     762  
     763  int32x4_t
     764  test_vshll_high_n_s16_2 (int16x8_t __a)
     765  {
     766    return vshll_high_n_s16 (__a, 16);
     767  }
     768  
     769  uint32x4_t
     770  test_vshll_high_n_u16_2 (uint16x8_t __a)
     771  {
     772    return vshll_high_n_u16 (__a, 16);
     773  }
     774  
     775  /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.8h" 1 } } */
     776  
     777  int16x8_t
     778  test_vshll_high_n_s8 (int8x16_t __a)
     779  {
     780    return vshll_high_n_s8 (__a, 3);
     781  }
     782  
     783  /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.8h" 1 } } */
     784  
     785  uint16x8_t
     786  test_vshll_high_n_u8 (uint8x16_t __a)
     787  {
     788    return vshll_high_n_u8 (__a, 3);
     789  }
     790  
     791  /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.8h" 2 } } */
     792  
     793  int16x8_t
     794  test_vshll_high_n_s8_2 (int8x16_t __a)
     795  {
     796    return vshll_high_n_s8 (__a, 8);
     797  }
     798  
     799  uint16x8_t
     800  test_vshll_high_n_u8_2 (uint8x16_t __a)
     801  {
     802    return vshll_high_n_u8 (__a, 8);
     803  }