(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
advsimd-intrinsics/
vfmas_n_f16_1.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target arm_v8_2a_fp16_neon_hw } */
       3  /* { dg-add-options arm_v8_2a_fp16_neon } */
       4  /* { dg-skip-if "" { arm*-*-* } } */
       5  
       6  #include <arm_neon.h>
       7  #include "arm-neon-ref.h"
       8  #include "compute-ref-data.h"
       9  
      10  #define FP16_C(a) ((__fp16) a)
      11  #define A0 FP16_C (123.4)
      12  #define A1 FP16_C (-5.8)
      13  #define A2 FP16_C (-0.0)
      14  #define A3 FP16_C (10)
      15  #define A4 FP16_C (123412.43)
      16  #define A5 FP16_C (-5.8)
      17  #define A6 FP16_C (90.8)
      18  #define A7 FP16_C (24)
      19  
      20  #define B0 FP16_C (23.4)
      21  #define B1 FP16_C (-5.8)
      22  #define B2 FP16_C (8.9)
      23  #define B3 FP16_C (4.0)
      24  #define B4 FP16_C (3.4)
      25  #define B5 FP16_C (-550.8)
      26  #define B6 FP16_C (-31.8)
      27  #define B7 FP16_C (20000.0)
      28  
      29  /* Expected results for vfma_n.  */
      30  VECT_VAR_DECL (expected_fma0_static, hfloat, 16, 4) []
      31    = { 0x613E /* A0 + B0 * B0.  */,
      32        0xD86D /* A1 + B1 * B0.  */,
      33        0x5A82 /* A2 + B2 * B0.  */,
      34        0x567A /* A3 + B3 * B0.  */ };
      35  
      36  VECT_VAR_DECL (expected_fma1_static, hfloat, 16, 4) []
      37    = { 0xCA33 /* A0 + B0 * B1.  */,
      38        0x4EF6 /* A1 + B1 * B1.  */,
      39        0xD274 /* A2 + B2 * B1.  */,
      40        0xCA9A /* A3 + B3 * B1.  */ };
      41  
      42  VECT_VAR_DECL (expected_fma2_static, hfloat, 16, 4) []
      43    = { 0x5D2F /* A0 + B0 * B2.  */,
      44        0xD32D /* A1 + B1 * B2.  */,
      45        0x54F3 /* A2 + B2 * B2.  */,
      46        0x51B3 /* A3 + B3 * B2.  */ };
      47  
      48  VECT_VAR_DECL (expected_fma3_static, hfloat, 16, 4) []
      49    = { 0x5AC8 /* A0 + B0 * B3.  */,
      50        0xCF40 /* A1 + B1 * B3.  */,
      51        0x5073 /* A2 + B2 * B3.  */,
      52        0x4E80 /* A3 + B3 * B3.  */ };
      53  
      54  VECT_VAR_DECL (expected_fma0_static, hfloat, 16, 8) []
      55    = { 0x613E /* A0 + B0 * B0.  */,
      56        0xD86D /* A1 + B1 * B0.  */,
      57        0x5A82 /* A2 + B2 * B0.  */,
      58        0x567A /* A3 + B3 * B0.  */,
      59        0x7C00 /* A4 + B4 * B0.  */,
      60        0xF24D /* A5 + B5 * B0.  */,
      61        0xE11B /* A6 + B6 * B0.  */,
      62        0x7C00 /* A7 + B7 * B0.  */ };
      63  
      64  VECT_VAR_DECL (expected_fma1_static, hfloat, 16, 8) []
      65    = { 0xCA33 /* A0 + B0 * B1.  */,
      66        0x4EF6 /* A1 + B1 * B1.  */,
      67        0xD274 /* A2 + B2 * B1.  */,
      68        0xCA9A /* A3 + B3 * B1.  */,
      69        0x7C00 /* A4 + B4 * B1.  */,
      70        0x6A3B /* A5 + B5 * B1.  */,
      71        0x5C4D /* A6 + B6 * B1.  */,
      72        0xFC00 /* A7 + B7 * B1.  */ };
      73  
      74  VECT_VAR_DECL (expected_fma2_static, hfloat, 16, 8) []
      75    = { 0x5D2F /* A0 + B0 * B2.  */,
      76        0xD32D /* A1 + B1 * B2.  */,
      77        0x54F3 /* A2 + B2 * B2.  */,
      78        0x51B3 /* A3 + B3 * B2.  */,
      79        0x7C00 /* A4 + B4 * B2.  */,
      80        0xECCB /* A5 + B5 * B2.  */,
      81        0xDA01 /* A6 + B6 * B2.  */,
      82        0x7C00 /* A7 + B7 * B2.  */ };
      83  
      84  VECT_VAR_DECL (expected_fma3_static, hfloat, 16, 8) []
      85    = { 0x5AC8 /* A0 + B0 * B3.  */,
      86        0xCF40 /* A1 + B1 * B3.  */,
      87        0x5073 /* A2 + B2 * B3.  */,
      88        0x4E80 /* A3 + B3 * B3.  */,
      89        0x7C00 /* A4 + B4 * B3.  */,
      90        0xE851 /* A5 + B5 * B3.  */,
      91        0xD08C /* A6 + B6 * B3.  */,
      92        0x7C00 /* A7 + B7 * B3.  */ };
      93  
      94  VECT_VAR_DECL (expected_fma4_static, hfloat, 16, 8) []
      95    = { 0x5A58 /* A0 + B0 * B4.  */,
      96        0xCE62 /* A1 + B1 * B4.  */,
      97        0x4F91 /* A2 + B2 * B4.  */,
      98        0x4DE6 /* A3 + B3 * B4.  */,
      99        0x7C00 /* A4 + B4 * B4.  */,
     100        0xE757 /* A5 + B5 * B4.  */,
     101        0xCC54 /* A6 + B6 * B4.  */,
     102        0x7C00 /* A7 + B7 * B4.  */ };
     103  
     104  VECT_VAR_DECL (expected_fma5_static, hfloat, 16, 8) []
     105    = { 0xF23D /* A0 + B0 * B5.  */,
     106        0x6A3B /* A1 + B1 * B5.  */,
     107        0xECCA /* A2 + B2 * B5.  */,
     108        0xE849 /* A3 + B3 * B5.  */,
     109        0x7C00 /* A4 + B4 * B5.  */,
     110        0x7C00 /* A5 + B5 * B5.  */,
     111        0x744D /* A6 + B6 * B5.  */,
     112        0xFC00 /* A7 + B7 * B5.  */ };
     113  
     114  VECT_VAR_DECL (expected_fma6_static, hfloat, 16, 8) []
     115    = { 0xE0DA /* A0 + B0 * B6.  */,
     116        0x5995 /* A1 + B1 * B6.  */,
     117        0xDC6C /* A2 + B2 * B6.  */,
     118        0xD753 /* A3 + B3 * B6.  */,
     119        0x7C00 /* A4 + B4 * B6.  */,
     120        0x7447 /* A5 + B5 * B6.  */,
     121        0x644E /* A6 + B6 * B6.  */,
     122        0xFC00 /* A7 + B7 * B6.  */ };
     123  
     124  VECT_VAR_DECL (expected_fma7_static, hfloat, 16, 8) []
     125    = { 0x7C00 /* A0 + B0 * B7.  */,
     126        0xFC00 /* A1 + B1 * B7.  */,
     127        0x7C00 /* A2 + B2 * B7.  */,
     128        0x7C00 /* A3 + B3 * B7.  */,
     129        0x7C00 /* A4 + B4 * B7.  */,
     130        0xFC00 /* A5 + B5 * B7.  */,
     131        0xFC00 /* A6 + B6 * B7.  */,
     132        0x7C00 /* A7 + B7 * B7.  */ };
     133  
     134  /* Expected results for vfms_n.  */
     135  VECT_VAR_DECL (expected_fms0_static, hfloat, 16, 4) []
     136    = { 0xDEA2 /* A0 + (-B0) * B0.  */,
     137        0x5810 /* A1 + (-B1) * B0.  */,
     138        0xDA82 /* A2 + (-B2) * B0.  */,
     139        0xD53A /* A3 + (-B3) * B0.  */ };
     140  
     141  VECT_VAR_DECL (expected_fms1_static, hfloat, 16, 4) []
     142    = { 0x5C0D /* A0 + (-B0) * B1.  */,
     143        0xD0EE /* A1 + (-B1) * B1.  */,
     144        0x5274 /* A2 + (-B2) * B1.  */,
     145        0x5026 /* A3 + (-B3) * B1.  */ };
     146  
     147  VECT_VAR_DECL (expected_fms2_static, hfloat, 16, 4) []
     148    = { 0xD54E /* A0 + (-B0) * B2.  */,
     149        0x51BA /* A1 + (-B1) * B2.  */,
     150        0xD4F3 /* A2 + (-B2) * B2.  */,
     151        0xCE66 /* A3 + (-B3) * B2.  */ };
     152  
     153  VECT_VAR_DECL (expected_fms3_static, hfloat, 16, 4) []
     154    = { 0x4F70 /* A0 + (-B0) * B3.  */,
     155        0x4C5A /* A1 + (-B1) * B3.  */,
     156        0xD073 /* A2 + (-B2) * B3.  */,
     157        0xC600 /* A3 + (-B3) * B3.  */ };
     158  
     159  VECT_VAR_DECL (expected_fms0_static, hfloat, 16, 8) []
     160    = { 0xDEA2 /* A0 + (-B0) * B0.  */,
     161        0x5810 /* A1 + (-B1) * B0.  */,
     162        0xDA82 /* A2 + (-B2) * B0.  */,
     163        0xD53A /* A3 + (-B3) * B0.  */,
     164        0x7C00 /* A4 + (-B4) * B0.  */,
     165        0x724B /* A5 + (-B5) * B0.  */,
     166        0x6286 /* A6 + (-B6) * B0.  */,
     167        0xFC00 /* A7 + (-B7) * B0.  */ };
     168  
     169  VECT_VAR_DECL (expected_fms1_static, hfloat, 16, 8) []
     170    = { 0x5C0D /* A0 + (-B0) * B1.  */,
     171        0xD0EE /* A1 + (-B1) * B1.  */,
     172        0x5274 /* A2 + (-B2) * B1.  */,
     173        0x5026 /* A3 + (-B3) * B1.  */,
     174        0x7C00 /* A4 + (-B4) * B1.  */,
     175        0xEA41 /* A5 + (-B5) * B1.  */,
     176        0xD5DA /* A6 + (-B6) * B1.  */,
     177        0x7C00 /* A7 + (-B7) * B1.  */ };
     178  
     179  VECT_VAR_DECL (expected_fms2_static, hfloat, 16, 8) []
     180    = { 0xD54E /* A0 + (-B0) * B2.  */,
     181        0x51BA /* A1 + (-B1) * B2.  */,
     182        0xD4F3 /* A2 + (-B2) * B2.  */,
     183        0xCE66 /* A3 + (-B3) * B2.  */,
     184        0x7C00 /* A4 + (-B4) * B2.  */,
     185        0x6CC8 /* A5 + (-B5) * B2.  */,
     186        0x5DD7 /* A6 + (-B6) * B2.  */,
     187        0xFC00 /* A7 + (-B7) * B2.  */ };
     188  
     189  VECT_VAR_DECL (expected_fms3_static, hfloat, 16, 8) []
     190    = { 0x4F70 /* A0 + (-B0) * B3.  */,
     191        0x4C5A /* A1 + (-B1) * B3.  */,
     192        0xD073 /* A2 + (-B2) * B3.  */,
     193        0xC600 /* A3 + (-B3) * B3.  */,
     194        0x7C00 /* A4 + (-B4) * B3.  */,
     195        0x684B /* A5 + (-B5) * B3.  */,
     196        0x5AD0 /* A6 + (-B6) * B3.  */,
     197        0xFC00 /* A7 + (-B7) * B3.  */ };
     198  
     199  VECT_VAR_DECL (expected_fms4_static, hfloat, 16, 8) []
     200    = { 0x5179 /* A0 + (-B0) * B4.  */,
     201        0x4AF6 /* A1 + (-B1) * B4.  */,
     202        0xCF91 /* A2 + (-B2) * B4.  */,
     203        0xC334 /* A3 + (-B3) * B4.  */,
     204        0x7C00 /* A4 + (-B4) * B4.  */,
     205        0x674C /* A5 + (-B5) * B4.  */,
     206        0x5A37 /* A6 + (-B6) * B4.  */,
     207        0xFC00 /* A7 + (-B7) * B4.  */ };
     208  
     209  VECT_VAR_DECL (expected_fms5_static, hfloat, 16, 8) []
     210    = { 0x725C /* A0 + (-B0) * B5.  */,
     211        0xEA41 /* A1 + (-B1) * B5.  */,
     212        0x6CCA /* A2 + (-B2) * B5.  */,
     213        0x6853 /* A3 + (-B3) * B5.  */,
     214        0x7C00 /* A4 + (-B4) * B5.  */,
     215        0xFC00 /* A5 + (-B5) * B5.  */,
     216        0xF441 /* A6 + (-B6) * B5.  */,
     217        0x7C00 /* A7 + (-B7) * B5.  */ };
     218  
     219  VECT_VAR_DECL (expected_fms6_static, hfloat, 16, 8) []
     220    = { 0x62C7 /* A0 + (-B0) * B6.  */,
     221        0xD9F2 /* A1 + (-B1) * B6.  */,
     222        0x5C6C /* A2 + (-B2) * B6.  */,
     223        0x584A /* A3 + (-B3) * B6.  */,
     224        0x7C00 /* A4 + (-B4) * B6.  */,
     225        0xF447 /* A5 + (-B5) * B6.  */,
     226        0xE330 /* A6 + (-B6) * B6.  */,
     227        0x7C00 /* A7 + (-B7) * B6.  */ };
     228  
     229  VECT_VAR_DECL (expected_fms7_static, hfloat, 16, 8) []
     230    = { 0xFC00 /* A0 + (-B0) * B7.  */,
     231        0x7C00 /* A1 + (-B1) * B7.  */,
     232        0xFC00 /* A2 + (-B2) * B7.  */,
     233        0xFC00 /* A3 + (-B3) * B7.  */,
     234        0x7C00 /* A4 + (-B4) * B7.  */,
     235        0x7C00 /* A5 + (-B5) * B7.  */,
     236        0x7C00 /* A6 + (-B6) * B7.  */,
     237        0xFC00 /* A7 + (-B7) * B7.  */ };
     238  
     239  void exec_vfmas_n_f16 (void)
     240  {
     241  #undef TEST_MSG
     242  #define TEST_MSG "VFMA_N (FP16)"
     243    clean_results ();
     244  
     245    DECL_VARIABLE(vsrc_1, float, 16, 4);
     246    DECL_VARIABLE(vsrc_2, float, 16, 4);
     247    VECT_VAR_DECL (buf_src_1, float, 16, 4) [] = {A0, A1, A2, A3};
     248    VECT_VAR_DECL (buf_src_2, float, 16, 4) [] = {B0, B1, B2, B3};
     249    VLOAD (vsrc_1, buf_src_1, , float, f, 16, 4);
     250    VLOAD (vsrc_2, buf_src_2, , float, f, 16, 4);
     251    DECL_VARIABLE (vector_res, float, 16, 4)
     252      = vfma_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     253  		  VECT_VAR (vsrc_2, float, 16, 4), B0);
     254  
     255    vst1_f16 (VECT_VAR (result, float, 16, 4),
     256  	    VECT_VAR (vector_res, float, 16, 4));
     257  
     258    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fma0_static, "");
     259  
     260    VECT_VAR (vector_res, float, 16, 4)
     261      = vfma_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     262  		  VECT_VAR (vsrc_2, float, 16, 4), B1);
     263    vst1_f16 (VECT_VAR (result, float, 16, 4),
     264  	    VECT_VAR (vector_res, float, 16, 4));
     265  
     266    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fma1_static, "");
     267  
     268    VECT_VAR (vector_res, float, 16, 4)
     269      = vfma_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     270  		  VECT_VAR (vsrc_2, float, 16, 4), B2);
     271    vst1_f16 (VECT_VAR (result, float, 16, 4),
     272  	    VECT_VAR (vector_res, float, 16, 4));
     273  
     274    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fma2_static, "");
     275  
     276    VECT_VAR (vector_res, float, 16, 4)
     277      = vfma_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     278  		  VECT_VAR (vsrc_2, float, 16, 4), B3);
     279    vst1_f16 (VECT_VAR (result, float, 16, 4),
     280  	    VECT_VAR (vector_res, float, 16, 4));
     281  
     282    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fma3_static, "");
     283  
     284  #undef TEST_MSG
     285  #define TEST_MSG "VFMAQ_N (FP16)"
     286    clean_results ();
     287  
     288    DECL_VARIABLE(vsrc_1, float, 16, 8);
     289    DECL_VARIABLE(vsrc_2, float, 16, 8);
     290    VECT_VAR_DECL (buf_src_1, float, 16, 8) [] = {A0, A1, A2, A3, A4, A5, A6, A7};
     291    VECT_VAR_DECL (buf_src_2, float, 16, 8) [] = {B0, B1, B2, B3, B4, B5, B6, B7};
     292    VLOAD (vsrc_1, buf_src_1, q, float, f, 16, 8);
     293    VLOAD (vsrc_2, buf_src_2, q, float, f, 16, 8);
     294    DECL_VARIABLE (vector_res, float, 16, 8)
     295      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     296  		   VECT_VAR (vsrc_2, float, 16, 8), B0);
     297    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     298  	     VECT_VAR (vector_res, float, 16, 8));
     299  
     300    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma0_static, "");
     301  
     302    VECT_VAR (vector_res, float, 16, 8)
     303      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     304  		   VECT_VAR (vsrc_2, float, 16, 8), B1);
     305    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     306  	     VECT_VAR (vector_res, float, 16, 8));
     307  
     308    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma1_static, "");
     309  
     310    VECT_VAR (vector_res, float, 16, 8)
     311      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     312  		   VECT_VAR (vsrc_2, float, 16, 8), B2);
     313    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     314  	     VECT_VAR (vector_res, float, 16, 8));
     315  
     316    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma2_static, "");
     317  
     318    VECT_VAR (vector_res, float, 16, 8)
     319      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     320  		   VECT_VAR (vsrc_2, float, 16, 8), B3);
     321    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     322  	     VECT_VAR (vector_res, float, 16, 8));
     323  
     324    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma3_static, "");
     325  
     326    VECT_VAR (vector_res, float, 16, 8)
     327      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     328  		   VECT_VAR (vsrc_2, float, 16, 8), B4);
     329    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     330  	     VECT_VAR (vector_res, float, 16, 8));
     331  
     332    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma4_static, "");
     333  
     334    VECT_VAR (vector_res, float, 16, 8)
     335      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     336  		   VECT_VAR (vsrc_2, float, 16, 8), B5);
     337    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     338  	     VECT_VAR (vector_res, float, 16, 8));
     339  
     340    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma5_static, "");
     341  
     342    VECT_VAR (vector_res, float, 16, 8)
     343      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     344  		   VECT_VAR (vsrc_2, float, 16, 8), B6);
     345    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     346  	     VECT_VAR (vector_res, float, 16, 8));
     347  
     348    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma6_static, "");
     349  
     350    VECT_VAR (vector_res, float, 16, 8)
     351      = vfmaq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     352  		   VECT_VAR (vsrc_2, float, 16, 8), B7);
     353    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     354  	     VECT_VAR (vector_res, float, 16, 8));
     355  
     356    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fma7_static, "");
     357  
     358  #undef TEST_MSG
     359  #define TEST_MSG "VFMA_N (FP16)"
     360    clean_results ();
     361  
     362    VECT_VAR (vector_res, float, 16, 4)
     363      = vfms_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     364  		  VECT_VAR (vsrc_2, float, 16, 4), B0);
     365  
     366    vst1_f16 (VECT_VAR (result, float, 16, 4),
     367  	    VECT_VAR (vector_res, float, 16, 4));
     368  
     369    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fms0_static, "");
     370  
     371    VECT_VAR (vector_res, float, 16, 4)
     372      = vfms_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     373  		  VECT_VAR (vsrc_2, float, 16, 4), B1);
     374    vst1_f16 (VECT_VAR (result, float, 16, 4),
     375  	    VECT_VAR (vector_res, float, 16, 4));
     376  
     377    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fms1_static, "");
     378  
     379    VECT_VAR (vector_res, float, 16, 4)
     380      = vfms_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     381  		  VECT_VAR (vsrc_2, float, 16, 4), B2);
     382    vst1_f16 (VECT_VAR (result, float, 16, 4),
     383  	    VECT_VAR (vector_res, float, 16, 4));
     384  
     385    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fms2_static, "");
     386  
     387    VECT_VAR (vector_res, float, 16, 4)
     388      = vfms_n_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     389  		  VECT_VAR (vsrc_2, float, 16, 4), B3);
     390    vst1_f16 (VECT_VAR (result, float, 16, 4),
     391  	    VECT_VAR (vector_res, float, 16, 4));
     392  
     393    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected_fms3_static, "");
     394  
     395  #undef TEST_MSG
     396  #define TEST_MSG "VFMAQ_N (FP16)"
     397    clean_results ();
     398  
     399    VECT_VAR (vector_res, float, 16, 8)
     400      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     401  		   VECT_VAR (vsrc_2, float, 16, 8), B0);
     402    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     403  	     VECT_VAR (vector_res, float, 16, 8));
     404  
     405    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms0_static, "");
     406  
     407    VECT_VAR (vector_res, float, 16, 8)
     408      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     409  		   VECT_VAR (vsrc_2, float, 16, 8), B1);
     410    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     411  	     VECT_VAR (vector_res, float, 16, 8));
     412  
     413    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms1_static, "");
     414  
     415    VECT_VAR (vector_res, float, 16, 8)
     416      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     417  		   VECT_VAR (vsrc_2, float, 16, 8), B2);
     418    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     419  	     VECT_VAR (vector_res, float, 16, 8));
     420  
     421    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms2_static, "");
     422  
     423    VECT_VAR (vector_res, float, 16, 8)
     424      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     425  		   VECT_VAR (vsrc_2, float, 16, 8), B3);
     426    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     427  	     VECT_VAR (vector_res, float, 16, 8));
     428  
     429    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms3_static, "");
     430  
     431    VECT_VAR (vector_res, float, 16, 8)
     432      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     433  		   VECT_VAR (vsrc_2, float, 16, 8), B4);
     434    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     435  	     VECT_VAR (vector_res, float, 16, 8));
     436  
     437    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms4_static, "");
     438  
     439    VECT_VAR (vector_res, float, 16, 8)
     440      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     441  		   VECT_VAR (vsrc_2, float, 16, 8), B5);
     442    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     443  	     VECT_VAR (vector_res, float, 16, 8));
     444  
     445    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms5_static, "");
     446  
     447    VECT_VAR (vector_res, float, 16, 8)
     448      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     449  		   VECT_VAR (vsrc_2, float, 16, 8), B6);
     450    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     451  	     VECT_VAR (vector_res, float, 16, 8));
     452  
     453    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms6_static, "");
     454  
     455    VECT_VAR (vector_res, float, 16, 8)
     456      = vfmsq_n_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     457  		   VECT_VAR (vsrc_2, float, 16, 8), B7);
     458    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     459  	     VECT_VAR (vector_res, float, 16, 8));
     460  
     461    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_fms7_static, "");
     462  }
     463  
     464  int
     465  main (void)
     466  {
     467    exec_vfmas_n_f16 ();
     468    return 0;
     469  }