1  /* { dg-require-effective-target aarch64_asm_i8mm_ok } */
       2  /* { dg-additional-options "-march=armv8.2-a+sve+i8mm" } */
       3  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       4  
       5  #include "test_sve_acle.h"
       6  
       7  /*
       8  ** sudot_s32_tied1:
       9  **	usdot	z0\.s, z2\.b, z4\.b
      10  **	ret
      11  */
      12  TEST_TRIPLE_Z (sudot_s32_tied1, svint32_t, svint8_t, svuint8_t,
      13  	       z0 = svsudot_s32 (z0, z2, z4),
      14  	       z0 = svsudot (z0, z2, z4))
      15  
      16  /*
      17  ** sudot_s32_tied2:
      18  **	mov	(z[0-9]+)\.d, z0\.d
      19  **	movprfx	z0, z4
      20  **	usdot	z0\.s, z2\.b, \1\.b
      21  **	ret
      22  */
      23  TEST_TRIPLE_Z_REV (sudot_s32_tied2, svint32_t, svint8_t, svuint8_t,
      24  		   z0_res = svsudot_s32 (z4, z2, z0),
      25  		   z0_res = svsudot (z4, z2, z0))
      26  
      27  /*
      28  ** sudot_w0_s32_tied:
      29  **	mov	(z[0-9]+\.b), w0
      30  **	usdot	z0\.s, z2\.b, \1
      31  **	ret
      32  */
      33  TEST_TRIPLE_ZX (sudot_w0_s32_tied, svint32_t, svint8_t, uint8_t,
      34  	       z0 = svsudot_n_s32 (z0, z2, x0),
      35  	       z0 = svsudot (z0, z2, x0))
      36  
      37  /*
      38  ** sudot_9_s32_tied:
      39  **	mov	(z[0-9]+\.b), #9
      40  **	usdot	z0\.s, z2\.b, \1
      41  **	ret
      42  */
      43  TEST_TRIPLE_Z (sudot_9_s32_tied, svint32_t, svint8_t, uint8_t,
      44  	       z0 = svsudot_n_s32 (z0, z2, 9),
      45  	       z0 = svsudot (z0, z2, 9))