/* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */

#include "test_sve_acle.h"

/*
** ld2_u16_base:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_u16_base, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0),
	   z0 = svld2 (p0, x0))

/*
** ld2_u16_index:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, x1, lsl 1\]
**	ret
*/
TEST_LOAD (ld2_u16_index, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 + x1),
	   z0 = svld2 (p0, x0 + x1))

/* Moving the constant into a register would also be OK.  */
/*
** ld2_u16_1:
**	incb	x0
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_u16_1, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 + svcnth ()),
	   z0 = svld2 (p0, x0 + svcnth ()))

/*
** ld2_u16_2:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #2, mul vl\]
**	ret
*/
TEST_LOAD (ld2_u16_2, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 + svcnth () * 2),
	   z0 = svld2 (p0, x0 + svcnth () * 2))

/*
** ld2_u16_14:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #14, mul vl\]
**	ret
*/
TEST_LOAD (ld2_u16_14, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 + svcnth () * 14),
	   z0 = svld2 (p0, x0 + svcnth () * 14))

/* Moving the constant into a register would also be OK.  */
/*
** ld2_u16_16:
**	incb	x0, all, mul #16
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_u16_16, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 + svcnth () * 16),
	   z0 = svld2 (p0, x0 + svcnth () * 16))

/* Moving the constant into a register would also be OK.  */
/*
** ld2_u16_m1:
**	decb	x0
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_u16_m1, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 - svcnth ()),
	   z0 = svld2 (p0, x0 - svcnth ()))

/*
** ld2_u16_m2:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #-2, mul vl\]
**	ret
*/
TEST_LOAD (ld2_u16_m2, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 - svcnth () * 2),
	   z0 = svld2 (p0, x0 - svcnth () * 2))

/*
** ld2_u16_m16:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #-16, mul vl\]
**	ret
*/
TEST_LOAD (ld2_u16_m16, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 - svcnth () * 16),
	   z0 = svld2 (p0, x0 - svcnth () * 16))

/*
** ld2_u16_m18:
**	addvl	(x[0-9]+), x0, #-18
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[\1\]
**	ret
*/
TEST_LOAD (ld2_u16_m18, svuint16x2_t, uint16_t,
	   z0 = svld2_u16 (p0, x0 - svcnth () * 18),
	   z0 = svld2 (p0, x0 - svcnth () * 18))

/*
** ld2_vnum_u16_0:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_0, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, 0),
	   z0 = svld2_vnum (p0, x0, 0))

/* Moving the constant into a register would also be OK.  */
/*
** ld2_vnum_u16_1:
**	incb	x0
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_1, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, 1),
	   z0 = svld2_vnum (p0, x0, 1))

/*
** ld2_vnum_u16_2:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #2, mul vl\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_2, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, 2),
	   z0 = svld2_vnum (p0, x0, 2))

/*
** ld2_vnum_u16_14:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #14, mul vl\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_14, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, 14),
	   z0 = svld2_vnum (p0, x0, 14))

/* Moving the constant into a register would also be OK.  */
/*
** ld2_vnum_u16_16:
**	incb	x0, all, mul #16
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_16, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, 16),
	   z0 = svld2_vnum (p0, x0, 16))

/* Moving the constant into a register would also be OK.  */
/*
** ld2_vnum_u16_m1:
**	decb	x0
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_m1, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, -1),
	   z0 = svld2_vnum (p0, x0, -1))

/*
** ld2_vnum_u16_m2:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #-2, mul vl\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_m2, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, -2),
	   z0 = svld2_vnum (p0, x0, -2))

/*
** ld2_vnum_u16_m16:
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[x0, #-16, mul vl\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_m16, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, -16),
	   z0 = svld2_vnum (p0, x0, -16))

/*
** ld2_vnum_u16_m18:
**	addvl	(x[0-9]+), x0, #-18
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[\1\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_m18, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, -18),
	   z0 = svld2_vnum (p0, x0, -18))

/* Using MUL to calculate an index would also be OK.  */
/*
** ld2_vnum_u16_x1:
**	cntb	(x[0-9]+)
**	madd	(x[0-9]+), (x1, \1|\1, x1), x0
**	ld2h	{z0\.h(?: - |, )z1\.h}, p0/z, \[\2\]
**	ret
*/
TEST_LOAD (ld2_vnum_u16_x1, svuint16x2_t, uint16_t,
	   z0 = svld2_vnum_u16 (p0, x0, x1),
	   z0 = svld2_vnum (p0, x0, x1))
