1 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */ 2 3 #include "test_sve_acle.h" 4 5 /* 6 ** qrdmulh_lane_0_s32_tied1: 7 ** sqrdmulh z0\.s, z0\.s, z1\.s\[0\] 8 ** ret 9 */ 10 TEST_UNIFORM_Z (qrdmulh_lane_0_s32_tied1, svint32_t, 11 z0 = svqrdmulh_lane_s32 (z0, z1, 0), 12 z0 = svqrdmulh_lane (z0, z1, 0)) 13 14 /* 15 ** qrdmulh_lane_0_s32_tied2: 16 ** sqrdmulh z0\.s, z1\.s, z0\.s\[0\] 17 ** ret 18 */ 19 TEST_UNIFORM_Z (qrdmulh_lane_0_s32_tied2, svint32_t, 20 z0 = svqrdmulh_lane_s32 (z1, z0, 0), 21 z0 = svqrdmulh_lane (z1, z0, 0)) 22 23 /* 24 ** qrdmulh_lane_0_s32_untied: 25 ** sqrdmulh z0\.s, z1\.s, z2\.s\[0\] 26 ** ret 27 */ 28 TEST_UNIFORM_Z (qrdmulh_lane_0_s32_untied, svint32_t, 29 z0 = svqrdmulh_lane_s32 (z1, z2, 0), 30 z0 = svqrdmulh_lane (z1, z2, 0)) 31 32 /* 33 ** qrdmulh_lane_1_s32: 34 ** sqrdmulh z0\.s, z1\.s, z2\.s\[1\] 35 ** ret 36 */ 37 TEST_UNIFORM_Z (qrdmulh_lane_1_s32, svint32_t, 38 z0 = svqrdmulh_lane_s32 (z1, z2, 1), 39 z0 = svqrdmulh_lane (z1, z2, 1)) 40 41 /* 42 ** qrdmulh_lane_2_s32: 43 ** sqrdmulh z0\.s, z1\.s, z2\.s\[2\] 44 ** ret 45 */ 46 TEST_UNIFORM_Z (qrdmulh_lane_2_s32, svint32_t, 47 z0 = svqrdmulh_lane_s32 (z1, z2, 2), 48 z0 = svqrdmulh_lane (z1, z2, 2)) 49 50 /* 51 ** qrdmulh_lane_3_s32: 52 ** sqrdmulh z0\.s, z1\.s, z2\.s\[3\] 53 ** ret 54 */ 55 TEST_UNIFORM_Z (qrdmulh_lane_3_s32, svint32_t, 56 z0 = svqrdmulh_lane_s32 (z1, z2, 3), 57 z0 = svqrdmulh_lane (z1, z2, 3)) 58 59 /* 60 ** qrdmulh_lane_z8_s32: 61 ** str d8, \[sp, -16\]! 62 ** mov (z[0-7])\.d, z8\.d 63 ** sqrdmulh z0\.s, z1\.s, \1\.s\[1\] 64 ** ldr d8, \[sp\], 16 65 ** ret 66 */ 67 TEST_DUAL_LANE_REG (qrdmulh_lane_z8_s32, svint32_t, svint32_t, z8, 68 z0 = svqrdmulh_lane_s32 (z1, z8, 1), 69 z0 = svqrdmulh_lane (z1, z8, 1)) 70 71 /* 72 ** qrdmulh_lane_z16_s32: 73 ** mov (z[0-7])\.d, z16\.d 74 ** sqrdmulh z0\.s, z1\.s, \1\.s\[1\] 75 ** ret 76 */ 77 TEST_DUAL_LANE_REG (qrdmulh_lane_z16_s32, svint32_t, svint32_t, z16, 78 z0 = svqrdmulh_lane_s32 (z1, z16, 1), 79 z0 = svqrdmulh_lane (z1, z16, 1)) 80