(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
advsimd-intrinsics/
vfmas_lane_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_lane.  */
      30  VECT_VAR_DECL (expected0_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 (expected1_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 (expected2_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 (expected3_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  /* Expected results for vfmaq_lane.  */
      55  VECT_VAR_DECL (expected0_static, hfloat, 16, 8) []
      56    = { 0x613E /* A0 + B0 * B0.  */,
      57        0xD86D /* A1 + B1 * B0.  */,
      58        0x5A82 /* A2 + B2 * B0.  */,
      59        0x567A /* A3 + B3 * B0.  */,
      60        0x7C00 /* A4 + B4 * B0.  */,
      61        0xF24D /* A5 + B5 * B0.  */,
      62        0xE11B /* A6 + B6 * B0.  */,
      63        0x7C00 /* A7 + B7 * B0.  */ };
      64  
      65  VECT_VAR_DECL (expected1_static, hfloat, 16, 8) []
      66    = { 0xCA33 /* A0 + B0 * B1.  */,
      67        0x4EF6 /* A1 + B1 * B1.  */,
      68        0xD274 /* A2 + B2 * B1.  */,
      69        0xCA9A /* A3 + B3 * B1.  */,
      70        0x7C00 /* A4 + B4 * B1.  */,
      71        0x6A3B /* A5 + B5 * B1.  */,
      72        0x5C4D /* A6 + B6 * B1.  */,
      73        0xFC00 /* A7 + B7 * B1.  */ };
      74  
      75  VECT_VAR_DECL (expected2_static, hfloat, 16, 8) []
      76    = { 0x5D2F /* A0 + B0 * B2.  */,
      77        0xD32D /* A1 + B1 * B2.  */,
      78        0x54F3 /* A2 + B2 * B2.  */,
      79        0x51B3 /* A3 + B3 * B2.  */,
      80        0x7C00 /* A4 + B4 * B2.  */,
      81        0xECCB /* A5 + B5 * B2.  */,
      82        0xDA01 /* A6 + B6 * B2.  */,
      83        0x7C00 /* A7 + B7 * B2.  */ };
      84  
      85  VECT_VAR_DECL (expected3_static, hfloat, 16, 8) []
      86    = { 0x5AC8 /* A0 + B0 * B3.  */,
      87        0xCF40 /* A1 + B1 * B3.  */,
      88        0x5073 /* A2 + B2 * B3.  */,
      89        0x4E80 /* A3 + B3 * B3.  */,
      90        0x7C00 /* A4 + B4 * B3.  */,
      91        0xE851 /* A5 + B5 * B3.  */,
      92        0xD08C /* A6 + B6 * B3.  */,
      93        0x7C00 /* A7 + B7 * B3.  */ };
      94  
      95  /* Expected results for vfma_laneq.  */
      96  VECT_VAR_DECL (expected0_laneq_static, hfloat, 16, 4) []
      97    = { 0x613E /* A0 + B0 * B0.  */,
      98        0xD86D /* A1 + B1 * B0.  */,
      99        0x5A82 /* A2 + B2 * B0.  */,
     100        0x567A /* A3 + B3 * B0.  */ };
     101  
     102  VECT_VAR_DECL (expected1_laneq_static, hfloat, 16, 4) []
     103    = { 0xCA33 /* A0 + B0 * B1.  */,
     104        0x4EF6 /* A1 + B1 * B1.  */,
     105        0xD274 /* A2 + B2 * B1.  */,
     106        0xCA9A /* A3 + B3 * B1.  */ };
     107  
     108  VECT_VAR_DECL (expected2_laneq_static, hfloat, 16, 4) []
     109    = { 0x5D2F /* A0 + B0 * B2.  */,
     110        0xD32D /* A1 + B1 * B2.  */,
     111        0x54F3 /* A2 + B2 * B2.  */,
     112        0x51B3 /* A3 + B3 * B2.  */ };
     113  
     114  VECT_VAR_DECL (expected3_laneq_static, hfloat, 16, 4) []
     115    = { 0x5AC8 /* A0 + B0 * B3.  */,
     116        0xCF40 /* A1 + B1 * B3.  */,
     117        0x5073 /* A2 + B2 * B3.  */,
     118        0x4E80 /* A3 + B3 * B3.  */ };
     119  
     120  VECT_VAR_DECL (expected4_laneq_static, hfloat, 16, 4) []
     121    = { 0x5A58 /* A0 + B0 * B4.  */,
     122        0xCE62 /* A1 + B1 * B4.  */,
     123        0x4F91 /* A2 + B2 * B4.  */,
     124        0x4DE6 /* A3 + B3 * B4.  */ };
     125  
     126  VECT_VAR_DECL (expected5_laneq_static, hfloat, 16, 4) []
     127    = { 0xF23D /* A0 + B0 * B5.  */,
     128        0x6A3B /* A1 + B1 * B5.  */,
     129        0xECCA /* A2 + B2 * B5.  */,
     130        0xE849 /* A3 + B3 * B5.  */ };
     131  
     132  VECT_VAR_DECL (expected6_laneq_static, hfloat, 16, 4) []
     133    = { 0xE0DA /* A0 + B0 * B6.  */,
     134        0x5995 /* A1 + B1 * B6.  */,
     135        0xDC6C /* A2 + B2 * B6.  */,
     136        0xD753 /* A3 + B3 * B6.  */ };
     137  
     138  VECT_VAR_DECL (expected7_laneq_static, hfloat, 16, 4) []
     139    = { 0x7C00 /* A0 + B0 * B7.  */,
     140        0xFC00 /* A1 + B1 * B7.  */,
     141        0x7C00 /* A2 + B2 * B7.  */,
     142        0x7C00 /* A3 + B3 * B7.  */ };
     143  
     144  /* Expected results for vfmaq_laneq.  */
     145  VECT_VAR_DECL (expected0_laneq_static, hfloat, 16, 8) []
     146    = { 0x613E /* A0 + B0 * B0.  */,
     147        0xD86D /* A1 + B1 * B0.  */,
     148        0x5A82 /* A2 + B2 * B0.  */,
     149        0x567A /* A3 + B3 * B0.  */,
     150        0x7C00 /* A4 + B4 * B0.  */,
     151        0xF24D /* A5 + B5 * B0.  */,
     152        0xE11B /* A6 + B6 * B0.  */,
     153        0x7C00 /* A7 + B7 * B0.  */ };
     154  
     155  VECT_VAR_DECL (expected1_laneq_static, hfloat, 16, 8) []
     156    = { 0xCA33 /* A0 + B0 * B1.  */,
     157        0x4EF6 /* A1 + B1 * B1.  */,
     158        0xD274 /* A2 + B2 * B1.  */,
     159        0xCA9A /* A3 + B3 * B1.  */,
     160        0x7C00 /* A4 + B4 * B1.  */,
     161        0x6A3B /* A5 + B5 * B1.  */,
     162        0x5C4D /* A6 + B6 * B1.  */,
     163        0xFC00 /* A7 + B7 * B1.  */ };
     164  
     165  VECT_VAR_DECL (expected2_laneq_static, hfloat, 16, 8) []
     166    = { 0x5D2F /* A0 + B0 * B2.  */,
     167        0xD32D /* A1 + B1 * B2.  */,
     168        0x54F3 /* A2 + B2 * B2.  */,
     169        0x51B3 /* A3 + B3 * B2.  */,
     170        0x7C00 /* A4 + B4 * B2.  */,
     171        0xECCB /* A5 + B5 * B2.  */,
     172        0xDA01 /* A6 + B6 * B2.  */,
     173        0x7C00 /* A7 + B7 * B2.  */ };
     174  
     175  VECT_VAR_DECL (expected3_laneq_static, hfloat, 16, 8) []
     176    = { 0x5AC8 /* A0 + B0 * B3.  */,
     177        0xCF40 /* A1 + B1 * B3.  */,
     178        0x5073 /* A2 + B2 * B3.  */,
     179        0x4E80 /* A3 + B3 * B3.  */,
     180        0x7C00 /* A4 + B4 * B3.  */,
     181        0xE851 /* A5 + B5 * B3.  */,
     182        0xD08C /* A6 + B6 * B3.  */,
     183        0x7C00 /* A7 + B7 * B3.  */ };
     184  
     185  VECT_VAR_DECL (expected4_laneq_static, hfloat, 16, 8) []
     186    = { 0x5A58 /* A0 + B0 * B4.  */,
     187        0xCE62 /* A1 + B1 * B4.  */,
     188        0x4F91 /* A2 + B2 * B4.  */,
     189        0x4DE6 /* A3 + B3 * B4.  */,
     190        0x7C00 /* A4 + B4 * B4.  */,
     191        0xE757 /* A5 + B5 * B4.  */,
     192        0xCC54 /* A6 + B6 * B4.  */,
     193        0x7C00 /* A7 + B7 * B4.  */ };
     194  
     195  VECT_VAR_DECL (expected5_laneq_static, hfloat, 16, 8) []
     196    = { 0xF23D /* A0 + B0 * B5.  */,
     197        0x6A3B /* A1 + B1 * B5.  */,
     198        0xECCA /* A2 + B2 * B5.  */,
     199        0xE849 /* A3 + B3 * B5.  */,
     200        0x7C00 /* A4 + B4 * B5.  */,
     201        0x7C00 /* A5 + B5 * B5.  */,
     202        0x744D /* A6 + B6 * B5.  */,
     203        0xFC00 /* A7 + B7 * B5.  */ };
     204  
     205  VECT_VAR_DECL (expected6_laneq_static, hfloat, 16, 8) []
     206    = { 0xE0DA /* A0 + B0 * B6.  */,
     207        0x5995 /* A1 + B1 * B6.  */,
     208        0xDC6C /* A2 + B2 * B6.  */,
     209        0xD753 /* A3 + B3 * B6.  */,
     210        0x7C00 /* A4 + B4 * B6.  */,
     211        0x7447 /* A5 + B5 * B6.  */,
     212        0x644E /* A6 + B6 * B6.  */,
     213        0xFC00 /* A7 + B7 * B6.  */ };
     214  
     215  VECT_VAR_DECL (expected7_laneq_static, hfloat, 16, 8) []
     216    = { 0x7C00 /* A0 + B0 * B7.  */,
     217        0xFC00 /* A1 + B1 * B7.  */,
     218        0x7C00 /* A2 + B2 * B7.  */,
     219        0x7C00 /* A3 + B3 * B7.  */,
     220        0x7C00 /* A4 + B4 * B7.  */,
     221        0xFC00 /* A5 + B5 * B7.  */,
     222        0xFC00 /* A6 + B6 * B7.  */,
     223        0x7C00 /* A7 + B7 * B7.  */ };
     224  
     225  /* Expected results for vfms_lane.  */
     226  VECT_VAR_DECL (expected0_fms_static, hfloat, 16, 4) []
     227    = { 0xDEA2 /* A0 + (-B0) * B0.  */,
     228        0x5810 /* A1 + (-B1) * B0.  */,
     229        0xDA82 /* A2 + (-B2) * B0.  */,
     230        0xD53A /* A3 + (-B3) * B0.  */ };
     231  
     232  VECT_VAR_DECL (expected1_fms_static, hfloat, 16, 4) []
     233    = { 0x5C0D /* A0 + (-B0) * B1.  */,
     234        0xD0EE /* A1 + (-B1) * B1.  */,
     235        0x5274 /* A2 + (-B2) * B1.  */,
     236        0x5026 /* A3 + (-B3) * B1.  */ };
     237  
     238  VECT_VAR_DECL (expected2_fms_static, hfloat, 16, 4) []
     239    = { 0xD54E /* A0 + (-B0) * B2.  */,
     240        0x51BA /* A1 + (-B1) * B2.  */,
     241        0xD4F3 /* A2 + (-B2) * B2.  */,
     242        0xCE66 /* A3 + (-B3) * B2.  */ };
     243  
     244  VECT_VAR_DECL (expected3_fms_static, hfloat, 16, 4) []
     245    = { 0x4F70 /* A0 + (-B0) * B3.  */,
     246        0x4C5A /* A1 + (-B1) * B3.  */,
     247        0xD073 /* A2 + (-B2) * B3.  */,
     248        0xC600 /* A3 + (-B3) * B3.  */ };
     249  
     250  /* Expected results for vfmsq_lane.  */
     251  VECT_VAR_DECL (expected0_fms_static, hfloat, 16, 8) []
     252    = { 0xDEA2 /* A0 + (-B0) * B0.  */,
     253        0x5810 /* A1 + (-B1) * B0.  */,
     254        0xDA82 /* A2 + (-B2) * B0.  */,
     255        0xD53A /* A3 + (-B3) * B0.  */,
     256        0x7C00 /* A4 + (-B4) * B0.  */,
     257        0x724B /* A5 + (-B5) * B0.  */,
     258        0x6286 /* A6 + (-B6) * B0.  */,
     259        0xFC00 /* A7 + (-B7) * B0.  */ };
     260  
     261  VECT_VAR_DECL (expected1_fms_static, hfloat, 16, 8) []
     262    = { 0x5C0D /* A0 + (-B0) * B1.  */,
     263        0xD0EE /* A1 + (-B1) * B1.  */,
     264        0x5274 /* A2 + (-B2) * B1.  */,
     265        0x5026 /* A3 + (-B3) * B1.  */,
     266        0x7C00 /* A4 + (-B4) * B1.  */,
     267        0xEA41 /* A5 + (-B5) * B1.  */,
     268        0xD5DA /* A6 + (-B6) * B1.  */,
     269        0x7C00 /* A7 + (-B7) * B1.  */ };
     270  
     271  VECT_VAR_DECL (expected2_fms_static, hfloat, 16, 8) []
     272    = { 0xD54E /* A0 + (-B0) * B2.  */,
     273        0x51BA /* A1 + (-B1) * B2.  */,
     274        0xD4F3 /* A2 + (-B2) * B2.  */,
     275        0xCE66 /* A3 + (-B3) * B2.  */,
     276        0x7C00 /* A4 + (-B4) * B2.  */,
     277        0x6CC8 /* A5 + (-B5) * B2.  */,
     278        0x5DD7 /* A6 + (-B6) * B2.  */,
     279        0xFC00 /* A7 + (-B7) * B2.  */ };
     280  
     281  VECT_VAR_DECL (expected3_fms_static, hfloat, 16, 8) []
     282    = { 0x4F70 /* A0 + (-B0) * B3.  */,
     283        0x4C5A /* A1 + (-B1) * B3.  */,
     284        0xD073 /* A2 + (-B2) * B3.  */,
     285        0xC600 /* A3 + (-B3) * B3.  */,
     286        0x7C00 /* A4 + (-B4) * B3.  */,
     287        0x684B /* A5 + (-B5) * B3.  */,
     288        0x5AD0 /* A6 + (-B6) * B3.  */,
     289        0xFC00 /* A7 + (-B7) * B3.  */ };
     290  
     291  /* Expected results for vfms_laneq.  */
     292  VECT_VAR_DECL (expected0_fms_laneq_static, hfloat, 16, 4) []
     293    = { 0xDEA2 /* A0 + (-B0) * B0.  */,
     294        0x5810 /* A1 + (-B1) * B0.  */,
     295        0xDA82 /* A2 + (-B2) * B0.  */,
     296        0xD53A /* A3 + (-B3) * B0.  */ };
     297  
     298  VECT_VAR_DECL (expected1_fms_laneq_static, hfloat, 16, 4) []
     299    = { 0x5C0D /* A0 + (-B0) * B1.  */,
     300        0xD0EE /* A1 + (-B1) * B1.  */,
     301        0x5274 /* A2 + (-B2) * B1.  */,
     302        0x5026 /* A3 + (-B3) * B1.  */ };
     303  
     304  VECT_VAR_DECL (expected2_fms_laneq_static, hfloat, 16, 4) []
     305    = { 0xD54E /* A0 + (-B0) * B2.  */,
     306        0x51BA /* A1 + (-B1) * B2.  */,
     307        0xD4F3 /* A2 + (-B2) * B2.  */,
     308        0xCE66 /* A3 + (-B3) * B2.  */ };
     309  
     310  VECT_VAR_DECL (expected3_fms_laneq_static, hfloat, 16, 4) []
     311    = { 0x4F70 /* A0 + (-B0) * B3.  */,
     312        0x4C5A /* A1 + (-B1) * B3.  */,
     313        0xD073 /* A2 + (-B2) * B3.  */,
     314        0xC600 /* A3 + (-B3) * B3.  */ };
     315  
     316  VECT_VAR_DECL (expected4_fms_laneq_static, hfloat, 16, 4) []
     317    = { 0x5179 /* A0 + (-B0) * B4.  */,
     318        0x4AF6 /* A1 + (-B1) * B4.  */,
     319        0xCF91 /* A2 + (-B2) * B4.  */,
     320        0xC334 /* A3 + (-B3) * B4.  */ };
     321  
     322  VECT_VAR_DECL (expected5_fms_laneq_static, hfloat, 16, 4) []
     323    = { 0x725C /* A0 + (-B0) * B5.  */,
     324        0xEA41 /* A1 + (-B1) * B5.  */,
     325        0x6CCA /* A2 + (-B2) * B5.  */,
     326        0x6853 /* A3 + (-B3) * B5.  */ };
     327  
     328  VECT_VAR_DECL (expected6_fms_laneq_static, hfloat, 16, 4) []
     329    = { 0x62C7 /* A0 + (-B0) * B6.  */,
     330        0xD9F2 /* A1 + (-B1) * B6.  */,
     331        0x5C6C /* A2 + (-B2) * B6.  */,
     332        0x584A /* A3 + (-B3) * B6.  */ };
     333  
     334  VECT_VAR_DECL (expected7_fms_laneq_static, hfloat, 16, 4) []
     335    = { 0xFC00 /* A0 + (-B0) * B7.  */,
     336        0x7C00 /* A1 + (-B1) * B7.  */,
     337        0xFC00 /* A2 + (-B2) * B7.  */,
     338        0xFC00 /* A3 + (-B3) * B7.  */ };
     339  
     340  /* Expected results for vfmsq_laneq.  */
     341  VECT_VAR_DECL (expected0_fms_laneq_static, hfloat, 16, 8) []
     342    = { 0xDEA2 /* A0 + (-B0) * B0.  */,
     343        0x5810 /* A1 + (-B1) * B0.  */,
     344        0xDA82 /* A2 + (-B2) * B0.  */,
     345        0xD53A /* A3 + (-B3) * B0.  */,
     346        0x7C00 /* A4 + (-B4) * B0.  */,
     347        0x724B /* A5 + (-B5) * B0.  */,
     348        0x6286 /* A6 + (-B6) * B0.  */,
     349        0xFC00 /* A7 + (-B7) * B0.  */ };
     350  
     351  VECT_VAR_DECL (expected1_fms_laneq_static, hfloat, 16, 8) []
     352    = { 0x5C0D /* A0 + (-B0) * B1.  */,
     353        0xD0EE /* A1 + (-B1) * B1.  */,
     354        0x5274 /* A2 + (-B2) * B1.  */,
     355        0x5026 /* A3 + (-B3) * B1.  */,
     356        0x7C00 /* A4 + (-B4) * B1.  */,
     357        0xEA41 /* A5 + (-B5) * B1.  */,
     358        0xD5DA /* A6 + (-B6) * B1.  */,
     359        0x7C00 /* A7 + (-B7) * B1.  */ };
     360  
     361  VECT_VAR_DECL (expected2_fms_laneq_static, hfloat, 16, 8) []
     362    = { 0xD54E /* A0 + (-B0) * B2.  */,
     363        0x51BA /* A1 + (-B1) * B2.  */,
     364        0xD4F3 /* A2 + (-B2) * B2.  */,
     365        0xCE66 /* A3 + (-B3) * B2.  */,
     366        0x7C00 /* A4 + (-B4) * B2.  */,
     367        0x6CC8 /* A5 + (-B5) * B2.  */,
     368        0x5DD7 /* A6 + (-B6) * B2.  */,
     369        0xFC00 /* A7 + (-B7) * B2.  */ };
     370  
     371  VECT_VAR_DECL (expected3_fms_laneq_static, hfloat, 16, 8) []
     372    = { 0x4F70 /* A0 + (-B0) * B3.  */,
     373        0x4C5A /* A1 + (-B1) * B3.  */,
     374        0xD073 /* A2 + (-B2) * B3.  */,
     375        0xC600 /* A3 + (-B3) * B3.  */,
     376        0x7C00 /* A4 + (-B4) * B3.  */,
     377        0x684B /* A5 + (-B5) * B3.  */,
     378        0x5AD0 /* A6 + (-B6) * B3.  */,
     379        0xFC00 /* A7 + (-B7) * B3.  */ };
     380  
     381  VECT_VAR_DECL (expected4_fms_laneq_static, hfloat, 16, 8) []
     382    = { 0x5179 /* A0 + (-B0) * B4.  */,
     383        0x4AF6 /* A1 + (-B1) * B4.  */,
     384        0xCF91 /* A2 + (-B2) * B4.  */,
     385        0xC334 /* A3 + (-B3) * B4.  */,
     386        0x7C00 /* A4 + (-B4) * B4.  */,
     387        0x674C /* A5 + (-B5) * B4.  */,
     388        0x5A37 /* A6 + (-B6) * B4.  */,
     389        0xFC00 /* A7 + (-B7) * B4.  */ };
     390  
     391  VECT_VAR_DECL (expected5_fms_laneq_static, hfloat, 16, 8) []
     392    = { 0x725C /* A0 + (-B0) * B5.  */,
     393        0xEA41 /* A1 + (-B1) * B5.  */,
     394        0x6CCA /* A2 + (-B2) * B5.  */,
     395        0x6853 /* A3 + (-B3) * B5.  */,
     396        0x7C00 /* A4 + (-B4) * B5.  */,
     397        0xFC00 /* A5 + (-B5) * B5.  */,
     398        0xF441 /* A6 + (-B6) * B5.  */,
     399        0x7C00 /* A7 + (-B7) * B5.  */ };
     400  
     401  VECT_VAR_DECL (expected6_fms_laneq_static, hfloat, 16, 8) []
     402    = { 0x62C7 /* A0 + (-B0) * B6.  */,
     403        0xD9F2 /* A1 + (-B1) * B6.  */,
     404        0x5C6C /* A2 + (-B2) * B6.  */,
     405        0x584A /* A3 + (-B3) * B6.  */,
     406        0x7C00 /* A4 + (-B4) * B6.  */,
     407        0xF447 /* A5 + (-B5) * B6.  */,
     408        0xE330 /* A6 + (-B6) * B6.  */,
     409        0x7C00 /* A7 + (-B7) * B6.  */ };
     410  
     411  VECT_VAR_DECL (expected7_fms_laneq_static, hfloat, 16, 8) []
     412    = { 0xFC00 /* A0 + (-B0) * B7.  */,
     413        0x7C00 /* A1 + (-B1) * B7.  */,
     414        0xFC00 /* A2 + (-B2) * B7.  */,
     415        0xFC00 /* A3 + (-B3) * B7.  */,
     416        0x7C00 /* A4 + (-B4) * B7.  */,
     417        0x7C00 /* A5 + (-B5) * B7.  */,
     418        0x7C00 /* A6 + (-B6) * B7.  */,
     419        0xFC00 /* A7 + (-B7) * B7.  */ };
     420  
     421  void exec_vfmas_lane_f16 (void)
     422  {
     423  #undef TEST_MSG
     424  #define TEST_MSG "VFMA_LANE (FP16)"
     425    clean_results ();
     426  
     427    DECL_VARIABLE(vsrc_1, float, 16, 4);
     428    DECL_VARIABLE(vsrc_2, float, 16, 4);
     429    VECT_VAR_DECL (buf_src_1, float, 16, 4) [] = {A0, A1, A2, A3};
     430    VECT_VAR_DECL (buf_src_2, float, 16, 4) [] = {B0, B1, B2, B3};
     431    VLOAD (vsrc_1, buf_src_1, , float, f, 16, 4);
     432    VLOAD (vsrc_2, buf_src_2, , float, f, 16, 4);
     433    DECL_VARIABLE (vector_res, float, 16, 4)
     434      = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     435  		     VECT_VAR (vsrc_2, float, 16, 4),
     436  		     VECT_VAR (vsrc_2, float, 16, 4), 0);
     437    vst1_f16 (VECT_VAR (result, float, 16, 4),
     438  	    VECT_VAR (vector_res, float, 16, 4));
     439  
     440    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_static, "");
     441  
     442    VECT_VAR (vector_res, float, 16, 4)
     443      = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     444  		     VECT_VAR (vsrc_2, float, 16, 4),
     445  		     VECT_VAR (vsrc_2, float, 16, 4), 1);
     446    vst1_f16 (VECT_VAR (result, float, 16, 4),
     447  	    VECT_VAR (vector_res, float, 16, 4));
     448  
     449    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_static, "");
     450  
     451    VECT_VAR (vector_res, float, 16, 4)
     452      = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     453  		     VECT_VAR (vsrc_2, float, 16, 4),
     454  		     VECT_VAR (vsrc_2, float, 16, 4), 2);
     455    vst1_f16 (VECT_VAR (result, float, 16, 4),
     456  	    VECT_VAR (vector_res, float, 16, 4));
     457  
     458    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_static, "");
     459  
     460    VECT_VAR (vector_res, float, 16, 4)
     461      = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     462  		     VECT_VAR (vsrc_2, float, 16, 4),
     463  		     VECT_VAR (vsrc_2, float, 16, 4), 3);
     464    vst1_f16 (VECT_VAR (result, float, 16, 4),
     465  	    VECT_VAR (vector_res, float, 16, 4));
     466  
     467    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_static, "");
     468  
     469  #undef TEST_MSG
     470  #define TEST_MSG "VFMAQ_LANE (FP16)"
     471    clean_results ();
     472  
     473    DECL_VARIABLE(vsrc_1, float, 16, 8);
     474    DECL_VARIABLE(vsrc_2, float, 16, 8);
     475    VECT_VAR_DECL (buf_src_1, float, 16, 8) [] = {A0, A1, A2, A3, A4, A5, A6, A7};
     476    VECT_VAR_DECL (buf_src_2, float, 16, 8) [] = {B0, B1, B2, B3, B4, B5, B6, B7};
     477    VLOAD (vsrc_1, buf_src_1, q, float, f, 16, 8);
     478    VLOAD (vsrc_2, buf_src_2, q, float, f, 16, 8);
     479    DECL_VARIABLE (vector_res, float, 16, 8)
     480      = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     481  		      VECT_VAR (vsrc_2, float, 16, 8),
     482  		      VECT_VAR (vsrc_2, float, 16, 4), 0);
     483    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     484  	     VECT_VAR (vector_res, float, 16, 8));
     485  
     486    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_static, "");
     487  
     488    VECT_VAR (vector_res, float, 16, 8)
     489      = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     490  		      VECT_VAR (vsrc_2, float, 16, 8),
     491  		      VECT_VAR (vsrc_2, float, 16, 4), 1);
     492    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     493  	     VECT_VAR (vector_res, float, 16, 8));
     494  
     495    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_static, "");
     496  
     497    VECT_VAR (vector_res, float, 16, 8)
     498      = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     499  		      VECT_VAR (vsrc_2, float, 16, 8),
     500  		      VECT_VAR (vsrc_2, float, 16, 4), 2);
     501    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     502  	     VECT_VAR (vector_res, float, 16, 8));
     503  
     504    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_static, "");
     505  
     506    VECT_VAR (vector_res, float, 16, 8)
     507      = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     508  		      VECT_VAR (vsrc_2, float, 16, 8),
     509  		      VECT_VAR (vsrc_2, float, 16, 4), 3);
     510    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     511  	     VECT_VAR (vector_res, float, 16, 8));
     512  
     513    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_static, "");
     514  
     515  #undef TEST_MSG
     516  #define TEST_MSG "VFMA_LANEQ (FP16)"
     517    clean_results ();
     518  
     519    DECL_VARIABLE(vsrc_3, float, 16, 8);
     520    VECT_VAR_DECL (buf_src_3, float, 16, 8) [] = {B0, B1, B2, B3, B4, B5, B6, B7};
     521    VLOAD (vsrc_3, buf_src_3, q, float, f, 16, 8);
     522    VECT_VAR (vector_res, float, 16, 4)
     523      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     524  		      VECT_VAR (vsrc_2, float, 16, 4),
     525  		      VECT_VAR (vsrc_3, float, 16, 8), 0);
     526    vst1_f16 (VECT_VAR (result, float, 16, 4),
     527  	    VECT_VAR (vector_res, float, 16, 4));
     528  
     529    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_laneq_static, "");
     530  
     531    VECT_VAR (vector_res, float, 16, 4)
     532      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     533  		      VECT_VAR (vsrc_2, float, 16, 4),
     534  		      VECT_VAR (vsrc_3, float, 16, 8), 1);
     535    vst1_f16 (VECT_VAR (result, float, 16, 4),
     536  	    VECT_VAR (vector_res, float, 16, 4));
     537  
     538    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_laneq_static, "");
     539  
     540    VECT_VAR (vector_res, float, 16, 4)
     541      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     542  		      VECT_VAR (vsrc_2, float, 16, 4),
     543  		      VECT_VAR (vsrc_3, float, 16, 8), 2);
     544    vst1_f16 (VECT_VAR (result, float, 16, 4),
     545  	    VECT_VAR (vector_res, float, 16, 4));
     546  
     547    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_laneq_static, "");
     548  
     549    VECT_VAR (vector_res, float, 16, 4)
     550      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     551  		      VECT_VAR (vsrc_2, float, 16, 4),
     552  		      VECT_VAR (vsrc_3, float, 16, 8), 3);
     553    vst1_f16 (VECT_VAR (result, float, 16, 4),
     554  	    VECT_VAR (vector_res, float, 16, 4));
     555  
     556    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_laneq_static, "");
     557  
     558    VECT_VAR (vector_res, float, 16, 4)
     559      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     560  		      VECT_VAR (vsrc_2, float, 16, 4),
     561  		      VECT_VAR (vsrc_3, float, 16, 8), 4);
     562    vst1_f16 (VECT_VAR (result, float, 16, 4),
     563  	    VECT_VAR (vector_res, float, 16, 4));
     564  
     565    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected4_laneq_static, "");
     566  
     567    VECT_VAR (vector_res, float, 16, 4)
     568      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     569  		      VECT_VAR (vsrc_2, float, 16, 4),
     570  		      VECT_VAR (vsrc_3, float, 16, 8), 5);
     571    vst1_f16 (VECT_VAR (result, float, 16, 4),
     572  	    VECT_VAR (vector_res, float, 16, 4));
     573  
     574    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected5_laneq_static, "");
     575  
     576    VECT_VAR (vector_res, float, 16, 4)
     577      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     578  		      VECT_VAR (vsrc_2, float, 16, 4),
     579  		      VECT_VAR (vsrc_3, float, 16, 8), 6);
     580    vst1_f16 (VECT_VAR (result, float, 16, 4),
     581  	    VECT_VAR (vector_res, float, 16, 4));
     582  
     583    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected6_laneq_static, "");
     584  
     585    VECT_VAR (vector_res, float, 16, 4)
     586      = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     587  		      VECT_VAR (vsrc_2, float, 16, 4),
     588  		      VECT_VAR (vsrc_3, float, 16, 8), 7);
     589    vst1_f16 (VECT_VAR (result, float, 16, 4),
     590  	    VECT_VAR (vector_res, float, 16, 4));
     591  
     592    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected7_laneq_static, "");
     593  
     594  #undef TEST_MSG
     595  #define TEST_MSG "VFMAQ_LANEQ (FP16)"
     596    clean_results ();
     597  
     598    VECT_VAR (vector_res, float, 16, 8)
     599      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     600  		       VECT_VAR (vsrc_2, float, 16, 8),
     601  		       VECT_VAR (vsrc_3, float, 16, 8), 0);
     602    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     603  	     VECT_VAR (vector_res, float, 16, 8));
     604  
     605    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_laneq_static, "");
     606  
     607    VECT_VAR (vector_res, float, 16, 8)
     608      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     609  		       VECT_VAR (vsrc_2, float, 16, 8),
     610  		       VECT_VAR (vsrc_3, float, 16, 8), 1);
     611    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     612  	     VECT_VAR (vector_res, float, 16, 8));
     613  
     614    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_laneq_static, "");
     615  
     616    VECT_VAR (vector_res, float, 16, 8)
     617      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     618  		       VECT_VAR (vsrc_2, float, 16, 8),
     619  		       VECT_VAR (vsrc_3, float, 16, 8), 2);
     620    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     621  	     VECT_VAR (vector_res, float, 16, 8));
     622  
     623    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_laneq_static, "");
     624  
     625    VECT_VAR (vector_res, float, 16, 8)
     626      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     627  		       VECT_VAR (vsrc_2, float, 16, 8),
     628  		       VECT_VAR (vsrc_3, float, 16, 8), 3);
     629    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     630  	     VECT_VAR (vector_res, float, 16, 8));
     631  
     632    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_laneq_static, "");
     633  
     634    VECT_VAR (vector_res, float, 16, 8)
     635      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     636  		       VECT_VAR (vsrc_2, float, 16, 8),
     637  		       VECT_VAR (vsrc_3, float, 16, 8), 4);
     638    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     639  	     VECT_VAR (vector_res, float, 16, 8));
     640  
     641    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected4_laneq_static, "");
     642  
     643    VECT_VAR (vector_res, float, 16, 8)
     644      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     645  		       VECT_VAR (vsrc_2, float, 16, 8),
     646  		       VECT_VAR (vsrc_3, float, 16, 8), 5);
     647    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     648  	     VECT_VAR (vector_res, float, 16, 8));
     649  
     650    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected5_laneq_static, "");
     651  
     652    VECT_VAR (vector_res, float, 16, 8)
     653      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     654  		       VECT_VAR (vsrc_2, float, 16, 8),
     655  		       VECT_VAR (vsrc_3, float, 16, 8), 6);
     656    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     657  	     VECT_VAR (vector_res, float, 16, 8));
     658  
     659    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected6_laneq_static, "");
     660  
     661    VECT_VAR (vector_res, float, 16, 8)
     662      = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     663  		       VECT_VAR (vsrc_2, float, 16, 8),
     664  		       VECT_VAR (vsrc_3, float, 16, 8), 7);
     665    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     666  	     VECT_VAR (vector_res, float, 16, 8));
     667  
     668    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected7_laneq_static, "");
     669  
     670  #undef TEST_MSG
     671  #define TEST_MSG "VFMS_LANE (FP16)"
     672    clean_results ();
     673  
     674    VECT_VAR (vector_res, float, 16, 4)
     675      = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     676  		     VECT_VAR (vsrc_2, float, 16, 4),
     677  		     VECT_VAR (vsrc_2, float, 16, 4), 0);
     678    vst1_f16 (VECT_VAR (result, float, 16, 4),
     679  	    VECT_VAR (vector_res, float, 16, 4));
     680  
     681    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_fms_static, "");
     682  
     683    VECT_VAR (vector_res, float, 16, 4)
     684      = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     685  		     VECT_VAR (vsrc_2, float, 16, 4),
     686  		     VECT_VAR (vsrc_2, float, 16, 4), 1);
     687    vst1_f16 (VECT_VAR (result, float, 16, 4),
     688  	    VECT_VAR (vector_res, float, 16, 4));
     689  
     690    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_fms_static, "");
     691  
     692    VECT_VAR (vector_res, float, 16, 4)
     693      = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     694  		     VECT_VAR (vsrc_2, float, 16, 4),
     695  		     VECT_VAR (vsrc_2, float, 16, 4), 2);
     696    vst1_f16 (VECT_VAR (result, float, 16, 4),
     697  	    VECT_VAR (vector_res, float, 16, 4));
     698  
     699    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_fms_static, "");
     700  
     701    VECT_VAR (vector_res, float, 16, 4)
     702      = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     703  		     VECT_VAR (vsrc_2, float, 16, 4),
     704  		     VECT_VAR (vsrc_2, float, 16, 4), 3);
     705    vst1_f16 (VECT_VAR (result, float, 16, 4),
     706  	    VECT_VAR (vector_res, float, 16, 4));
     707  
     708    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_fms_static, "");
     709  
     710  #undef TEST_MSG
     711  #define TEST_MSG "VFMSQ_LANE (FP16)"
     712    clean_results ();
     713  
     714    VECT_VAR (vector_res, float, 16, 8)
     715      = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     716  		      VECT_VAR (vsrc_2, float, 16, 8),
     717  		      VECT_VAR (vsrc_2, float, 16, 4), 0);
     718    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     719  	     VECT_VAR (vector_res, float, 16, 8));
     720  
     721    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_fms_static, "");
     722  
     723    VECT_VAR (vector_res, float, 16, 8)
     724      = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     725  		      VECT_VAR (vsrc_2, float, 16, 8),
     726  		      VECT_VAR (vsrc_2, float, 16, 4), 1);
     727    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     728  	     VECT_VAR (vector_res, float, 16, 8));
     729  
     730    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_fms_static, "");
     731  
     732    VECT_VAR (vector_res, float, 16, 8)
     733      = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     734  		      VECT_VAR (vsrc_2, float, 16, 8),
     735  		      VECT_VAR (vsrc_2, float, 16, 4), 2);
     736    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     737  	     VECT_VAR (vector_res, float, 16, 8));
     738  
     739    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_fms_static, "");
     740  
     741    VECT_VAR (vector_res, float, 16, 8)
     742      = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     743  		      VECT_VAR (vsrc_2, float, 16, 8),
     744  		      VECT_VAR (vsrc_2, float, 16, 4), 3);
     745    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     746  	     VECT_VAR (vector_res, float, 16, 8));
     747  
     748    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_fms_static, "");
     749  
     750  #undef TEST_MSG
     751  #define TEST_MSG "VFMS_LANEQ (FP16)"
     752    clean_results ();
     753  
     754    VECT_VAR (vector_res, float, 16, 4)
     755      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     756  		      VECT_VAR (vsrc_2, float, 16, 4),
     757  		      VECT_VAR (vsrc_3, float, 16, 8), 0);
     758    vst1_f16 (VECT_VAR (result, float, 16, 4),
     759  	    VECT_VAR (vector_res, float, 16, 4));
     760  
     761    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_fms_laneq_static, "");
     762  
     763    VECT_VAR (vector_res, float, 16, 4)
     764      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     765  		      VECT_VAR (vsrc_2, float, 16, 4),
     766  		      VECT_VAR (vsrc_3, float, 16, 8), 1);
     767    vst1_f16 (VECT_VAR (result, float, 16, 4),
     768  	    VECT_VAR (vector_res, float, 16, 4));
     769  
     770    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_fms_laneq_static, "");
     771  
     772    VECT_VAR (vector_res, float, 16, 4)
     773      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     774  		      VECT_VAR (vsrc_2, float, 16, 4),
     775  		      VECT_VAR (vsrc_3, float, 16, 8), 2);
     776    vst1_f16 (VECT_VAR (result, float, 16, 4),
     777  	    VECT_VAR (vector_res, float, 16, 4));
     778  
     779    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_fms_laneq_static, "");
     780  
     781    VECT_VAR (vector_res, float, 16, 4)
     782      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     783  		      VECT_VAR (vsrc_2, float, 16, 4),
     784  		      VECT_VAR (vsrc_3, float, 16, 8), 3);
     785    vst1_f16 (VECT_VAR (result, float, 16, 4),
     786  	    VECT_VAR (vector_res, float, 16, 4));
     787  
     788    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_fms_laneq_static, "");
     789  
     790    VECT_VAR (vector_res, float, 16, 4)
     791      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     792  		      VECT_VAR (vsrc_2, float, 16, 4),
     793  		      VECT_VAR (vsrc_3, float, 16, 8), 4);
     794    vst1_f16 (VECT_VAR (result, float, 16, 4),
     795  	    VECT_VAR (vector_res, float, 16, 4));
     796  
     797    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected4_fms_laneq_static, "");
     798  
     799    VECT_VAR (vector_res, float, 16, 4)
     800      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     801  		      VECT_VAR (vsrc_2, float, 16, 4),
     802  		      VECT_VAR (vsrc_3, float, 16, 8), 5);
     803    vst1_f16 (VECT_VAR (result, float, 16, 4),
     804  	    VECT_VAR (vector_res, float, 16, 4));
     805  
     806    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected5_fms_laneq_static, "");
     807  
     808    VECT_VAR (vector_res, float, 16, 4)
     809      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     810  		      VECT_VAR (vsrc_2, float, 16, 4),
     811  		      VECT_VAR (vsrc_3, float, 16, 8), 6);
     812    vst1_f16 (VECT_VAR (result, float, 16, 4),
     813  	    VECT_VAR (vector_res, float, 16, 4));
     814  
     815    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected6_fms_laneq_static, "");
     816  
     817    VECT_VAR (vector_res, float, 16, 4)
     818      = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
     819  		      VECT_VAR (vsrc_2, float, 16, 4),
     820  		      VECT_VAR (vsrc_3, float, 16, 8), 7);
     821    vst1_f16 (VECT_VAR (result, float, 16, 4),
     822  	    VECT_VAR (vector_res, float, 16, 4));
     823  
     824    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected7_fms_laneq_static, "");
     825  
     826  #undef TEST_MSG
     827  #define TEST_MSG "VFMSQ_LANEQ (FP16)"
     828    clean_results ();
     829  
     830    VECT_VAR (vector_res, float, 16, 8)
     831      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     832  		       VECT_VAR (vsrc_2, float, 16, 8),
     833  		       VECT_VAR (vsrc_3, float, 16, 8), 0);
     834    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     835  	     VECT_VAR (vector_res, float, 16, 8));
     836  
     837    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_fms_laneq_static, "");
     838  
     839    VECT_VAR (vector_res, float, 16, 8)
     840      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     841  		       VECT_VAR (vsrc_2, float, 16, 8),
     842  		       VECT_VAR (vsrc_3, float, 16, 8), 1);
     843    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     844  	     VECT_VAR (vector_res, float, 16, 8));
     845  
     846    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_fms_laneq_static, "");
     847  
     848    VECT_VAR (vector_res, float, 16, 8)
     849      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     850  		       VECT_VAR (vsrc_2, float, 16, 8),
     851  		       VECT_VAR (vsrc_3, float, 16, 8), 2);
     852    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     853  	     VECT_VAR (vector_res, float, 16, 8));
     854  
     855    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_fms_laneq_static, "");
     856  
     857    VECT_VAR (vector_res, float, 16, 8)
     858      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     859  		       VECT_VAR (vsrc_2, float, 16, 8),
     860  		       VECT_VAR (vsrc_3, float, 16, 8), 3);
     861    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     862  	     VECT_VAR (vector_res, float, 16, 8));
     863  
     864    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_fms_laneq_static, "");
     865  
     866    VECT_VAR (vector_res, float, 16, 8)
     867      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     868  		       VECT_VAR (vsrc_2, float, 16, 8),
     869  		       VECT_VAR (vsrc_3, float, 16, 8), 4);
     870    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     871  	     VECT_VAR (vector_res, float, 16, 8));
     872  
     873    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected4_fms_laneq_static, "");
     874  
     875    VECT_VAR (vector_res, float, 16, 8)
     876      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     877  		       VECT_VAR (vsrc_2, float, 16, 8),
     878  		       VECT_VAR (vsrc_3, float, 16, 8), 5);
     879    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     880  	     VECT_VAR (vector_res, float, 16, 8));
     881  
     882    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected5_fms_laneq_static, "");
     883  
     884    VECT_VAR (vector_res, float, 16, 8)
     885      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     886  		       VECT_VAR (vsrc_2, float, 16, 8),
     887  		       VECT_VAR (vsrc_3, float, 16, 8), 6);
     888    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     889  	     VECT_VAR (vector_res, float, 16, 8));
     890  
     891    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected6_fms_laneq_static, "");
     892  
     893    VECT_VAR (vector_res, float, 16, 8)
     894      = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
     895  		       VECT_VAR (vsrc_2, float, 16, 8),
     896  		       VECT_VAR (vsrc_3, float, 16, 8), 7);
     897    vst1q_f16 (VECT_VAR (result, float, 16, 8),
     898  	     VECT_VAR (vector_res, float, 16, 8));
     899  
     900    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected7_fms_laneq_static, "");
     901  }
     902  
     903  int
     904  main (void)
     905  {
     906    exec_vfmas_lane_f16 ();
     907    return 0;
     908  }