1  /* { dg-do compile { target aarch64-*-* } } */
       2  
       3  #include <arm_neon.h>
       4  
       5  /*
       6  **add:
       7  **     smlal   v0.4s, v1.4h, v2.h[3]
       8  **     ret
       9  */
      10  
      11  int32x4_t add(int32x4_t acc, int16x4_t b, int16x4_t c) {
      12      return vmlal_n_s16(acc, b, c[3]);
      13  }
      14  
      15  /*
      16  **sub:
      17  **     smlsl   v0.4s, v1.4h, v2.h[3]
      18  **     ret
      19  */
      20  
      21  int32x4_t sub(int32x4_t acc, int16x4_t b, int16x4_t c) {
      22      return vmlsl_n_s16(acc, b, c[3]);
      23  }
      24  
      25  /*
      26  **smull:
      27  **     smull   v0.4s, v1.4h, v2.h[3]
      28  **     ret
      29  */
      30  
      31  int32x4_t smull(int16x4_t b, int16x4_t c) {
      32      return vmull_n_s16(b, c[3]);
      33  }
      34  
      35  /*
      36  **umull:
      37  **     umull   v0.4s, v1.4h, v2.h[3]
      38  **     ret
      39  */
      40  
      41  uint32x4_t umull(uint16x4_t b, uint16x4_t c) {
      42      return vmull_n_u16(b, c[3]);
      43  }
      44  
      45  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" {-O[^0]} } } */